;:sys36864 ;.opt oo *= 32768 jmp anfang return =$aad7 bsout =$ffd2 talk =$ffb4 sectalk =$ff96 iecin =$ffa5 untalk =$ffab bsin =$ffcf prompt ="\xbb" axout =$bdcd rvs =199 quote =212 line =$8f00 tmp =2 cr =13 keyrepeat =650 buff =$8e00 open =$ffc0 close =$ffc3 setnam =$ffbd setpar =$ffba getin =65508 chkin =$ffc6 clrchn =$ffcc space =$ab3f listen =$ffb1 iecout =$ffa8 seclist =$ff93 unlist =$ffae fa =$ba sa =$b9 hello .byte "\x93nss diskmon 41 tracks (c) 281186" .byte "\x1a\x1a'?' fuer hilfe !\x1a\x03" helptxt .byte "\x1a\x11(haben sie die befehle s" .byte "chon wieder ver-gessen ?!)\x1a" .byte "\x11\x19\x04 x programmende\x19\x04 ? hilfe\x1a\x19\x04 s neustart" .byte "\x19\x08 r lesen\x1a\x19\x04 m anzeigen\x19\x08 w schreiben\x1a\x19" .byte "\x04 @ kanal 15" .byte "\x11\x03" mr .byte "m-r" adr .word 0 puff .byte "#0" mw .byte "m-w" adr2 .word 0 anz brk byt1 brk byt2 brk hex .byte "0123456789abcdef" readtxt .byte "\x1ales\x03" writtxt .byte "\x1aschreib\x03" tra .byte "e spur \x03" sek .byte " sektor \x03" xmerk brk getptr brk von brk mem brk track brk sektor brk device .byt 8 errtxt .word err0,err1,err2 err0 .byte "\x1abefehl unbekannt !\x03" err1 .byte "\x1ahexzahl falsch !\x03" err2 .byte "\x1aspur oder sektor falsch !\x03" dos1 .byte "\x1alesefehler #\x03" dos2 .byte "\x1aschreibfehler #\x03" comms .byte "x?smr@" brk commadr .word exit,help,start,memory,read,ch15 got jsr get php dec getptr plp rts get stx xmerk ldx getptr get2 lda line,x inx cmp #" " beq get2 cmp #prompt beq get2 stx getptr tax php ldx xmerk plp rts hexin jsr get ldx #$f hex1 cmp hex,x beq found1 dex bpl hex1 hexerr ldx #1 sec rts found1 txa asl asl asl asl sta mem jsr get ldx #$f hex2 cmp hex,x beq found2 dex bmi hexerr bpl hex2 found2 txa clc adc mem clc rts hexout stx xmerk pha lsr lsr lsr lsr jsr out1 pla jsr out1 ldx xmerk rts out1 and #$f tax lda hex,x jmp bsout gettrse jsr got beq fin jsr hexin bcs error tay sta sektor jsr got beq fin sty track jsr hexin bcs error sta sektor fin ldx #2 lda track cmp #42 bcs error lda sektor cmp #22 error rts outtrse lda #tra jsr strout lda track jsr hexout lda #sek jsr strout lda sektor jmp hexout settrse lda track sta byt1 lda sektor sta byt2 sta $400 ldx #6 lda #2 set08 sta anz stx adr2 rts writeout lda #$90 .byt $2c readin lda #$80 sta byt1 ldx #0 lda #1 bne set08 peek0 ldy #0 peek sta adr sty adr+1 jsr make15 ldx #0 peeek lda mr,x jsr iecout inx cpx #5 bcc peeek jsr unlist jsr hoer15 jsr iecin pha jsr untalk pla rts waitend lda #0 jsr peek0 bmi waitend cmp #2 rts auswert pha cmp #7 beq writerr cmp #8 beq writerr cmp #$a beq writerr lda #dos1 bne outit writerr lda #dos2 outit jsr strout pla pha jsr hexout jsr space lda #"(" jsr bsout pla clc adc #18 tax lda #0 jsr axout lda #"))" jmp bsout memwr jsr make15 ldx #0 outmw lda mw,x jsr iecout inx cpx #8 bcc outmw jmp unlist make15 lda device sta fa jsr listen lda #$6f sta sa jmp seclist hoer15 lda device sta fa jsr talk lda #$6f sta sa jmp sectalk opndir lda #13 tay ldx device jsr setpar lda #2 ldx #puff jsr setnam jmp open clsdir jsr clrchn lda #13 jmp close strout tax lda tmp pha stx tmp lda tmp+1 pha sty tmp+1 text ldy #0 lda (tmp),y beq txtend cmp #"\x03" beq txtend cmp #"\x1a" bne nocr jsr return jmp cont nocr cmp #"\x19" beq repeat jsr bsout cont inc tmp bne text inc tmp+1 bne text repeat iny lda (tmp),y tax iny lda (tmp),y reprep jsr bsout dex bne reprep lda tmp clc adc #2 sta tmp lda tmp+1 adc #0 sta tmp+1 bne cont txtend pla sta tmp+1 pla sta tmp rts anfang lda #hello jsr strout lda #128 sta keyrepeat eingabe jsr return lda #prompt jsr bsout ldx #0 getline jsr bsin cmp #cr beq ccr sta line,x inx bne getline ccr lda #0 sta line,x lda #0 sta getptr jsr get beq eingabe sta tmp ldx #-1 suchcmd inx lda comms,x beq hammas cmp tmp bne suchcmd txa asl tax lda commadr,x sta goto+1 lda commadr+1,x sta goto+2 goto jsr 0 bcc eingabe errout txa asl tax lda errtxt+1,x tay lda errtxt,x jsr strout jmp eingabe hammas ldx #0 beq errout exit pla pla rts help lda #helptxt jsr strout clc err rts start pla pla jmp anfang memory jsr got beq nixweiter jsr hexin bcs err nixweiter sta von ldx von jsr out8 lda von clc adc #8 bcc nixweiter clc rts out8 jsr return lda #prompt jsr bsout lda #":" jsr bsout lda von jsr hexout ldx von ldy #7 jsr space out8l1 jsr space lda buff,x jsr hexout inx dey bpl out8l1 jsr space jsr space ldy #7 ldx von out8l2 lda buff,x jsr asc inx dey bpl out8l2 rts asc pha cmp #13 beq t cmp #141 beq t cmp #20 beq t lda #1 sta quote pla jmp bsout t lda #1 sta rvs pla clc adc #$40 jsr bsout dec rvs er rts read jsr gettrse bcs er lda #readtxt jsr strout jsr outtrse jsr settrse jsr memwr jsr readin jsr memwr jsr waitend bcc ok jsr auswert clc rts ok jsr opndir ldx #13 jsr chkin ldx #0 fetchlp jsr getin sta buff,x inx bne fetchlp jmp clsdir ch15 jsr make15 ch115 jsr get beq daswars jsr iecout jmp ch115 daswars jsr unlist jsr hoer15 jsr return errin jsr iecin cmp #cr beq gotall jsr bsout bcc errin gotall jmp untalk