;----------------- ; SCANNER ; FUER DEN C-128 ; ;6.9.1986 ; ORG $F7B0 ;(IN BANK 1) ;----------------- ; IMP PAS.SYST IMP PAS.MOD1 ;(UCALLF,XBSOUT) IMP PAS.MOD3 ;(FACVAR,UINT) ; LINE EQU $FF45 ORGSRC EQU 5130 ;(AUS SCR.SYST.S) ;----------------- ; ;KONSTANTEN ; RAM,SONST FILE ;----------------- KEYWORD DFD "ÁNDÁRRAY" DFD "ÂEGINÃASE" DFD "ÃONSTÄIVÄO" DFD "ÄOWNTOÅLSE" DFD "ÅNDÆILEÆOR" DFD "ÆORWARD" DFD "ÆUNCTION" DFD "ÇOTOÉFÉN" DFD "ÌABELÍODÎIL" DFD "ÎOTÏFÏR" DFD "ÐACKED" DFD "ÐROCEDURE" DFD "ÐROGRAM" DFD "ÒECORDÒEPEAT" DFD "ÓETÔHENÔO" DFD "ÔYPEÕNTIL" DFD "ÖAR×HILE" DFD "×ITH" DFD 255 ; KMMENT DFD "RPC" BUCHSTABE ; ODER ZAHL ; CMP #"[" BCS TEST1 CMP #"A" BCS TEST2 ;- - - - - - - - - UTEST09 ;C=1-> ZAHL CMP #":" BCS TEST1 CMP #"0" RTS TEST1 CLC TEST2 RTS ;----------------- GET1CHAR ;HOLE DAS 1. ;ZEICHEN DER ;FOLGEZEILE JSR ULES LDX #255 ;- - - - - - - - - GETCHAR ;HOLE DAS NAECHSTE ;ZEICHEN ; INX ;- - - - - - - - - GET0CHAR ;HOLE DAS LAUFENDE ;ZEICHEN ; LDA LINE,X BEQ GET1CHAR CMP #255 BEQ ABORT RTS ;* VERMEIDE LOOPS ;* AM SOURCE-ENDE ABORT PLA PLA LDA #255 JMP GETSA ; ;----------------- ULESRAM ;HOLE NAECHSTES ;ZEICHEN AUS DEM ;SPEICHER LDX #" BNE SONDERF LDA #172 BNE SONDERR SONDER5 CMP #">" BNE SONDER6 LDA LINE+1,X CMP #"=" BNE SONDERF LDA #173 BNE SONDERR SONDER6 CMP #"." BNE SONDER7 LDA LINE+1,X CMP #"." BNE SONDERF LDA #174 BNE SONDERR SONDER7 CMP #"(" BNE SONDERF LDA LINE+1,X CMP #"*" BEQ KOMMENT ; SONDERF ; LDA LINE,X INX DFD $2C ; SONDERR ; INX INX JMP GETSA ; KOMMENT ;AKTIVE KOMMENTARE ;PRUEFEN: ; INX JSR GETCHAR CMP #"$" BNE KOMMENT9 KOMMENT0 JSR GETCHAR CMP #INCLUDE FILE KOMMENT1 LDY #INTEGER,WERT ; IN NUMBER ;AKKU:=254 ;=>REAL,ADRESSE ; IN NUMBER ;XR ENTHAELT DEN ; TEXTZEIGER ;----------------- TXA ;*SETZE ZEIGER ;*AUF STRINGANFANG CLC ADC #[LINE STA 0 => REAL LDY #0 JSR READ09 CMP #"." BNE ZAHL1 ; LDA LINE+1,X JSR UTEST09 BCC ZAHL5 INY INX JSR READ09 ; ZAHL1 CMP #"E" BNE ZAHL5 ; LDA LINE+1,X CMP #"+" BEQ ZAHL15 CMP #"-" BNE ZAHL2 ZAHL15 LDA LINE+2,X JSR UTEST09 BCC ZAHL5 INX ZAHL2 JSR UTEST09 BCC ZAHL5 INX INY JSR READ09 ; ZAHL5 ;*ZAHL AB INDEX ;*BIS X-1 IN LINE TYA PHA STX INDEX LDA LINE,X PHA ;*ENDE MARKIEREN LDA #0 STA LINE,X ; ;*UMWANDLUNG MIT ;*ROM-ROUTINE ; LDA #[STRFLP1 STA ZEILENENDE ;AM TEXTENDE ;MEDIUM:=0 ;----------------- INC ZNR BNE LESF1 INC ZNR+1 LESF1 LDX # ZEILENENDE ;255-> TEXTENDE ;----------------- LDA MEDIUM BNE ULESF ; INC ZNR1 BNE LES1 INC ZNR1+1 LES1 LDA ZNR1 STA ZNR LDX ZNR1+1 STX ZNR+1 CMP LAST BNE LES2 CPX LAST+1 BNE LES2 ;**PROGRAMMENDE LDA #255 STA LINE LDA #0 STA LINE+1 BEQ LESR ; LES2 LDY #0 LES3 JSR ULESRAM STA LINE,Y INY CPY XL1 BNE LES3 ; LDA #0 STA LINE,Y JSR USKIP ;----------------- LESR ;LISTING AUSGEBEN ; LDX #TABBEZ[0] ;( ID ;+10-> TABBEZ[TX] ;+8 -> TX ;(J ;TABBEZ[TX] ->TABB ;ID ->ID ; LDY #13 POSI0 LDA (