;:sys36864 ;.opt oo *= $c000 ; ;auto-checker ;nikolaus heusler 16.12.90 ;XXXXXXXXXXXX XX/X XXXXXXXX XX ; ;automatischer syntax-check bei eingabe ;einer basic-zeile ; jmp hoch addr =* .word $a00c,$a00d ;end .word $a024,$a025 ;restore .word $a028,$a029 ;return .word $a02c,$a02d ;stop .word $a040,$a041 ;cont .word $a044,$a045 ;clr .word $a050,$a051 ;new .word $a070,$a071 ;len .word $a076,$a077 ;asc .word $bb12 ;divison by zero .word $b853 ;fac = arg-fac .word $b854 .word $b855 .word $b856 .word $b857 .word $ab47 ;zeichenausgabe .word $a871 ;run .word $a872 .word $a873 .word $a874 .word $a875 .word $a884,$a885 ;gosub .word $a058,$a059 ;usr .word $a95d,$a95e ;on .word $a938,$a939 ;if .word $a949,$a94a ;rem .word $a74d,$a74e ;for .word $a779,$a77a ;for .word $a7a0,$a7a1 ;for .word $ad28,$ad29 ;next .word $ad76,$ad77 ;next .word $aa91,$aa92 ;cmd .word $ac07,$ac08 ;read .word $ab8e,$ab8f ;get .word $ab81 ;get .word $abcf,$abd0 ;input .word $abd2,$abd3 ;input .word $abae,$abaf ;input# .word $b2fd,$b2fe ;array .word $b74b ;mid$ .word $b3b6 ;deffn .word 0 ;endemarke data =* .word $ab36 ;test ueberfluess. zeichen .word $ab36 .word $ab36 .word $ab36 .word $ab36 .word $ab36 .word $ab36 .word $b7ad ;val .word $b7ad .byt $24 .byt $a9 .byt $00 .byt $85 .byt $61 .byt $60 .byt $2c .byt $f0 .byt $03 .byt $20 .byt $6b .byt $a9 .word $a8a0 ;goto .word $b39e ;pos .word inter .word $a940 ;ausdruck wahr .word inter .word $a757 ;for ausfuehren .word $a792 ;for parameter testen .word state .word $ad7d ;naechste variable fuer next .word state .word $aa97 ;print ausfuehren .word $ac15 ;read .word $ac06 ;read .byt $0b .word $a3b6 ;direktmodustest aus .word $ac06 ;read .word $ac06 ;read .word $b30f ;array .byt $24 .byt $2c .byt 123 ;sicherheitsbyte ;rucksack fuer $ac18 - read way1 jsr 121 beq okay cmp #":" beq okay cmp #"," beq komma okay rts ;befehl nicht ausfuehren komma jsr 115 jmp $ac15 ;noch eine variable .byt -1 ;endekennz. ;rucksack fuer $b3f7 - fn way2 jsr $aef1 ;term in klammern jmp $ad8d ;numerisch .byt -1 ;endekennz. new brk ;flag new-befehl ausfuehren oldiin .word $e38b oldigone .word $a7e4 save .word 0,0,0,0,0 adr .word 0 brk txt1 .byt 13 .byte "syntax-test aus" .byt 13,0 txt2 .byt 13 .byte "syntax-test v1 ein" .byt 13,13 .byte "(c) nikolaus heusler 12.90" .byt 13,0 modify jsr poke lda #$60 ;rts sta $a876 ;run sta $b827 ;poke sta $a8a3 ;goto sta $e12d ;sys sta $a6bb ;list sta $b83c ;wait sta $aa83 ;cmd sta $e1c1 ;open sta $e1ca ;close sta $e16f ;load sta $e159 ;save lda #$4c ;jmp sta $a883 ;gosub sta $a937 ;if sta $a74c ;for sta $a778 ;for sta $a79f ;for sta $ad27 ;next sta $ad75 ;next sta $aa90 ;cmd sta $ac06 ;read sta $ab8d ;get sta $abd1 ;input sta $abad ;input# sta $b2fc ;array lda #$ea ;nop sta $ab7b ;get sta $ab7c ;direktmodustest aus sta $ab7d ;get ldx #0 ;read-rucksack copy1 lda way1,x cmp #-1 beq cend1 sta $ac18,x inx bne copy1 cend1 ldx #0 ;fn-rucksack copy2 lda way2,x cmp #-1 beq cend2 sta $b3f7,x inx bne copy2 cend2 ldx #0 copy4 lda #$58 sta $a052,x lda #$bc inx ;numerische funktionen sta $a052,x ;auf abs umlenken inx cpx #$1c bcc copy4 lda new bne hatnew inc new jsr $a644 ;new-befehl hatnew jsr $a660 ;clr jmp $e39d ;fertig rom sei lda oldigone ldy oldigone+1 sta $308 sty $309 ;vektor befehl ausfuehren lda oldiin ldy oldiin+1 sta $300 sty $301 ;vektor direktmodus lda #55 konf sta 1 cli ret rts ram sei lda $308 cmp #igone sta $308 sty $309 lda #iin sta $300 sty $301 sat lda #53 bne konf poke ldx #0 poklp txa asl tay lda addr,y sta 2 lda addr+1,y beq endpok sta 3 ldy #0 lda data,x sta (2),y inx bne poklp endpok lda data,x cmp #123 ;sicherheitsbyte beq ret jmp 64738 ;reset bei stoerunmg hoch lda $302 cmp #txt1 jmp $ab1e an ldy #9 copy5 lda $302,y sta save,y dey bpl copy5 lda #line sta $302 stx $303 iny sty 2 sty 4 lda #160 sta 5 lda #224 sta 3 ldx #32 copy6 lda (4),y sta (4),y lda (2),y sta (2),y iny bne copy6 inc 5 inc 3 dex bne copy6 lda #txt2 jsr $ab1e jmp modify line jsr $a560 ;eingabe lesen stx $7a sty $7b jsr 115 tax beq line ;puffer leer ldx #-1 stx $3a bcc zif ;ziffer, dann programmzeile jsr rom jsr $a579 ;crunch jmp $a7e4 ;direktmodus-befehle zif jsr $a96b ;ziffern wandeln jsr $a579 ;crunch sty adr lda $14 sta adr+1 lda $15 sta adr+2 jsr ram lda #-1 sta $7a lda #1 sta $7b igone jsr $a663 ;clr jsr 115 jsr test0 state ldy #0 lda ($7a),y bne nonull null jsr rom lda adr+1 sta $14 lda adr+2 sta $15 jsr $a660 ;clall und clr ldy adr jmp $a4a2 ;basic-zeile bearbeiten test0 tay ;zeilenende beq jnull cmp #":" beq igone sec inter sbc #128 bcc kl cmp #$23 bcs function asl tay lda $a00d,y pha ;befehladressen ablegen lda $a00c,y pha jmp 115 jnull rts nonull cmp #":" beq igone jsr rom jmp $af08 kl jsr $a9a5 ;let ausfuehren jmp state function cmp #$4b ;go-token bne iin jsr 115 lda $a4 ;to jmp $aeff ;zeichen testen iin txa pha jsr rom pla tax jmp ($300)