;:sys9*4096 ;.opt p,oo ; ; ; super bildschirmeditor ; ; irqvek = $314 sflag = $28d strout = $ab1e scrup = $e8ea bshift = $a3bf clrline = 59903 key = $c5 vic = 53248 vicctrl = vic + 17 farb = 646 farb1 = vic+32 farb2 = farb1+1 shift = %1 cbm = %10 ctrl = %100 f1 = 4 f3 = 5 f5 = 6 f7 = 3 temp = 2 zeile = 214 spalte = 211 setcr = 58732 linlatch = 828 temp2 = 4 prgstrt = $2b prgend = $2d clr = $e544 axout2 = $bdcd return = $aad7 datlin = $3f stolin = $3b prglin = $39 garbcol = $b526 straf = $33 varen = $31 o = 38 d = 18 i = 33 ; *= $c000 ; ; jumpin lda irqvek+1 cmp #> newirq beq ready sta oldir+2 lda irqvek sta oldir+1 lda #< newirq ldy #> newirq sei sta irqvek sty irqvek+1 cli lda #< msg ldy #> msg jsr strout lda #0 sta farb1 sta farb2 lda #13 sta farb ready rts keytmp .byt 0 flagtmp .byt 0 msg .byte "editor on" .byt 0 newirq jsr irq oldir jmp $0000 blank lda vicctrl eor #16 sta vicctrl rts leave lda oldir+1 ldy oldir+2 sei sta irqvek sty irqvek+1 cli rts irq lda key cmp keytmp bne new rts new sta keytmp lda sflag sta flagtmp lda key cmp #f1 bne g1 lda flagtmp bne g12 jmp scrup g12 and #shift bne scrdwn g13 lda flagtmp and #cbm bne fill g14 lda flagtmp and #ctrl beq wrongf1 jmp blank wrongf1 rts scrdwn lda #< 1024 ldy #> 1024 sta 95 sty 96 lda #< 2023 ldy #> 2023 sta 88 sty 89 lda #< 1983 ldy #> 1983 sta 90 sty 91 jsr bshift jsr fill ldx #0 jmp clrline fill lda #< 55296 ldy #> 55296 sta temp sty temp+1 ldx #4 lda farb ldy #0 filllp sta (temp),y dey bne filllp inc temp+1 dex bne filllp rts g1 jmp g1s table .word 1024 .word 1064 .word 1104 .word 1144 .word 1184 .word 1224 .byt $f0, $04 .word 1304 .word 1344 .word 1384 .word 1424 .word 1464 .word 1504 .word 1544 .word 1584 .word 1624 .word 1664 .word 1704 .word 1744 .word 1784 .word 1824 .word 1864 .word 1904 .word 1944 .word 1984 zeilx txa asl tay lda table,y sta temp iny lda table,y sta temp+1 rts calclin ldx zeile jmp zeilx dellin ldx zeile jmp clrline g1s cmp #f3 bne g2 lda flagtmp bne g21 jmp dellin g21 and #shift bne savlin lda flagtmp and #cbm bne getlin lda flagtmp and #ctrl beq wro jmp leave wro rts savlin jsr calclin ldy #39 savelp lda (temp),y sta linlatch,y dey bpl savelp rts getlin jsr calclin ldy #39 getlp lda linlatch,y sta (temp),y dey bpl getlp jmp fill gtop lda #0 sta zeile sta spalte jmp setcr gbot lda #0 sta spalte lda #24 sta zeile jmp setcr golef lda #0 workgo sta spalte jmp setcr gorig lda #39 jmp workgo g2 cmp #f7 bne g3 lda flagtmp beq gtop and #shift bne gbot lda flagtmp and #cbm bne golef lda flagtmp and #ctrl bne gorig rts g3 cmp #f5 bne other lda flagtmp beq begin and #shift bne ende lda flagtmp and #cbm bne copy lda flagtmp and #ctrl bne del none rts other jmp other2 line1 .byt 0 line2 .byt 0 sort lda line2 cmp line1 bcs none ldx line1 sta line1 stx line2 rts begin lda zeile sta line1 jmp sort ende lda zeile sta line2 jmp sort del ldx line1 dlop cpx line2 beq weiter bcc weiter rts weiter jsr clrline inx jmp dlop ctemp1 .byt 0 ctemp2 .byt 0 copy lda zeile sta ctemp1 lda line1 sta ctemp2 coplop lda ctemp1 cmp #25 bcc l9 jmp fill l9 ldx ctemp2 jsr zeilx lda temp sta temp2 lda temp+1 sta temp2+1 ldx ctemp1 jsr zeilx ldy #39 l8 lda (temp2),y sta (temp),y dey bpl l8 inc ctemp1 inc ctemp2 lda ctemp2 cmp line2 bcc coplop beq coplop jmp fill renew lda prgstrt ldy prgstrt+1 sta temp sty temp+1 ldy #3 null iny lda (temp),y bne null iny tya tya clc adc temp ldy #0 sta (prgstrt),y lda temp+1 adc #0 iny sta (prgstrt),y dey t0 ldx #3 tdrei0 inc temp bne low inc temp +1 low lda (temp),y bne t0 dex bne tdrei0 lda temp clc adc #2 sta prgend lda temp+1 adc #0 sta prgend+1 lda #< rok ldy #> rok jmp strout rok .byte "renew ok" .byt 13, 0 data jsr clr lda #< t1 ldy #> t1 jsr strout lda #< t2 ldy #> t2 jsr strout ldx prglin lda prglin+1 jsr axout lda #< t3 ldy #> t3 jsr strout ldx stolin lda stolin+1 jsr axout lda #< t4 ldy #> t4 jsr strout ldx datlin lda datlin+1 jsr axout lda #< t5 ldy #> t5 jsr strout sec lda straf sbc varen tax lda straf+1 sbc varen+1 axout jsr axout2 jmp return t1 .byte "current basic datas:" .byt 13, 0 t2 .byt 13 .byte "program line: " .byt 0 t3 .byt 1 .byte "break line: " .byt 0 t4 .byt 1 .byte "data line: " .byt 0 t5 .byt 1 .byte "free memory: " .byt 0 intmp .byt 0 insline lda #24 sta intmp ins ldx intmp cpx zeile beq n1 bcs n2 n1 jsr clrline jmp fill n2 jsr zeilx lda temp sec sbc #40 sta temp2 lda temp+1 sbc #0 sta temp2+1 ldy #39 mm lda (temp2),y sta (temp),y dey bpl mm dec intmp jmp ins other2 lda flagtmp and #ctrl bne mmm rts mmm lda key cmp #o beq renew2 cmp #d beq data2 cmp #i beq insline rts renew2 jmp renew data2 jmp data .end