* OUT N START EQU $A800 MEMORY EQU $A800 BUFR EPZ $32 YTEMP EPZ $34 ANZB EPZ $35 SPACE EPZ $36 COLCRS EPZ $55 ROWCRS EPZ $54 DDEVIC EQU $0300 DUNIT EQU $0301 DCOMND EQU $0302 DSTATS EQU $0303 DBYTLO EQU $0308 DBYTHI EQU $0309 DAUX1 EQU $030A DAUX2 EQU $030B ICCOM EQU $0342 ICBAL EQU $0344 ICBAH EQU $0345 ICBLL EQU $0348 ICBLH EQU $0349 ICAUX1 EQU $034A LINEPAR EQU 2 LINECMD EQU 3 LINEBUF EQU 6 *VARIAB EQU $0600 PMODE EQU VARIAB+1 CMD EQU PMODE+1 CURLINE EQU CMD+1 CIOV EQU $E456 *DBUFR EQU START+$0E00 DBUFR EQU $5000 *ASPI EQU $A800 ORG $2E0 DFW PRGSTART ORG START+$0800,MEMORY+$0800 PRGSTART KOPEN LDA #0 STA BUFPOS CLBUF LDA #0 STA PMODE LDA #1 STA CMD COPYOUT PAROUT CMDOUT BUFOUT KEYBEF KCLOSE RTS GOASPI JMP ($0002) COPYOUT LDX #TCOPY:L LDY #TCOPY:H LDA #33 CHROUT RTS CLBUF LDY #0 TYA CLB00 STA DBUFR,Y STA DBUFR+$100,Y STA DBUFR+$200,Y STA DBUFR+$300,Y STA DBUFR+$400,Y STA DBUFR+$500,Y STA DBUFR+$600,Y STA DBUFR+$700,Y INY BNE CLB00 RTS CLBUFO CLBUF BUFOUT RTS ESCAPE PLA PLA RTS CHID TAX LDA CMD ASL ASL ASL ASL TAY TXA STA CMDTABLE,Y PAROUT RTS CHID1 LDA #1 BNE CHID CHID2 LDA #2 BNE CHID CHID3 LDA #3 BNE CHID CHID4 LDA #4 BNE CHID CHID5 LDA #5 BNE CHID CHID6 LDA #6 BNE CHID CHID0 LDA #0 BEQ CHID CHCMD STA CMD PAROUT CMDOUT RTS CHCMD1 LDA #1 BNE CHCMD CHCMD2 LDA #2 BNE CHCMD CHCMD3 LDA #3 BNE CHCMD CHCMD4 LDA #4 BNE CHCMD CHCMD5 LDA #5 BNE CHCMD CHCMD6 LDA #6 BNE CHCMD CHCMD7 LDA #7 BNE CHCMD CHCMD8 LDA #8 BNE CHCMD CHCMD9 LDA #9 BNE CHCMD CHCMD0 LDA #0 BEQ CHCMD SCRESET LDA #$70 STA DDEVIC LDA #1 STA DUNIT LDA #$40 STA DSTATS LDA #4 STA DCOMND GOASPI PAROUT RTS EXECUTE LDY #$0C EXEC00 LDA DCBTMP,Y STA DDEVIC,Y DEY BPL EXEC00 LDA CMD ASL ASL TAY LDA CDCBTBL+1,Y STA DSTATS LDA CDCBTBL+2,Y STA DBYTLO LDA CDCBTBL+3,Y STA DBYTHI TYA ASL ASL CLC ADC #CMDTABLE:L STA DAUX1 LDA #CMDTABLE:H ADC #0 STA DAUX2 GOASPI LDA CMD ASL ASL ASL ASL TAY LDA CMDTABLE+2,Y CMP #$1B ;LOAD BNE EXEC10 LDA CMDTABLE+6,Y EOR #%00000001 STA CMDTABLE+6,Y SEC BCS EXEC30 EXEC10 CMP #$4B BNE EXEC30 LDA CMDTABLE+10,Y EOR #%00000001 STA CMDTABLE+10,Y EXEC30 PAROUT CMDOUT BUFOUT RTS CHMODE LDY PMODE INY CPY #$3 BNE CHM00 LDY #0 CHM00 STY PMODE BUFOUT RTS KBEF00 JSR KBEF08 KEYBEF AKIN LDY #$FD KBEF04 INY INY INY CPY #(BEFTBEND-BEFTBL) BEQ KEYBEF CMP BEFTBL,Y BNE KBEF04 BEQ KBEF00 KBEF08 LDA BEFTBL+2,Y PHA LDA BEFTBL+1,Y PHA RTS NEXTBLK LDA CMD ASL ASL ASL ASL TAX LDA CMDTABLE+2,X CMP #$28 BNE NXTBL20 INC CMDTABLE+7,X BNE NXTBL04 INC CMDTABLE+6,X BNE NXTBL04 INC CMDTABLE+5,X BNE NXTBL04 INC CMDTABLE+4,X NXTBL04 CMDOUT JMP EXECUTE NXTBL20 CMP #$48 BNE NXTBL30 INC CMDTABLE+6,X INC CMDTABLE+9,X CMDOUT EXECUTE NXTBL30 RTS PREVBLK LDA CMD ASL ASL ASL ASL TAX LDA CMDTABLE+2,X CMP #$28 BNE PRVBL20 LDA CMDTABLE+7,X BNE PRVBL08 LDA CMDTABLE+6,X BNE PRVBL07 LDA CMDTABLE+5,X BNE PRVBL06 DEC CMDTABLE+4,X PRVBL06 DEC CMDTABLE+5,X PRVBL07 DEC CMDTABLE+6,X PRVBL08 DEC CMDTABLE+7,X CMDOUT JMP EXECUTE PRVBL20 CMP #$48 BNE PRVBL30 DEC CMDTABLE+6,X DEC CMDTABLE+9,X CMDOUT EXECUTE PRVBL30 RTS BEFTBL DFB $1B DFW ESCAPE-1 DFB $9B DFW EXECUTE-1 ASC ">" DFW NEXTBLK-1 ASC "<" DFW PREVBLK-1 ASC "R" DFW SCRESET-1 ASC "M" DFW CHMODE-1 ASC "C" DFW CLBUFO-1 ASC "1" DFW CHCMD1-1 ASC "2" DFW CHCMD2-1 ASC "3" DFW CHCMD3-1 ASC "4" DFW CHCMD4-1 ASC "5" DFW CHCMD5-1 ASC "6" DFW CHCMD6-1 ASC "7" DFW CHCMD7-1 ASC "8" DFW CHCMD8-1 ASC "9" DFW CHCMD9-1 ASC "0" DFW CHCMD0-1 ASC "!" DFW CHID1-1 ASC !"! DFW CHID2-1 ASC "#" DFW CHID3-1 ASC "$" DFW CHID4-1 ASC "%" DFW CHID5-1 ASC "&" DFW CHID6-1 ASC ")" DFW CHID0-1 BEFTBEND EQU * PAROUT LDA #LINEPAR-1 STA ROWCRS NEWLINE LDA #'C AKOUT LDA CMD BCDOUT SPACEOUT LDA #'I AKOUT LDA #'d AKOUT LDA CMD ASL ASL ASL ASL ADC #CMDTABLE:L STA BUFR LDA #CMDTABLE:H ADC #0 STA BUFR+1 LDY #0 LDA (BUFR),Y BCDOUT SPACEOUT LDA #'L AKOUT LDY #1 LDA (BUFR),Y HEXOUT SPACEOUT LDA #'D AKOUT LDA CMD ASL ASL TAY PHA LDA CDCBTBL+1,Y HEXOUT SPACEOUT LDA #'# AKOUT PLA TAY PHA LDA CDCBTBL+3,Y HEXOUT PLA TAY LDA CDCBTBL+2,Y HEXOUT SPACEOUT LDA #'S AKOUT LDA DSTATS HEXOUT SPACEOUT LDA #'# AKOUT LDA DBYTHI HEXOUT LDA DBYTLO HEXOUT SPACEOUT NEWLINE RTS CMDOUT LDA #LINECMD-1 STA ROWCRS NEWLINE LDA CMD ASL ASL ASL ASL CLC ADC #CMDTABLE+2:L STA BUFR LDA #CMDTABLE+2:H ADC #0 STA BUFR+1 LDA #$20 LDY #12 LINEOH LDA #$9B AKOUT LDA #$9B AKOUT RTS BUFOUT LDA #LINEBUF-1 STA ROWCRS NEWLINE LDA #16 STA CURLINE LDA #DBUFR:L * LDA #$80 STA BUFR LDA #DBUFR:H STA BUFR+1 BUFO08 LDA PMODE LINEOUT DEC CURLINE BNE BUFO08 RTS KCLOSE RTS LINEOUT PHA LDA BUFR HEXOUT LDA #': AKOUT SPACEOUT PLA CMP #0 BNE LINO50 LDY #8 LDA #$20 LINEOH LDY #8 LINEOA LDA #8 BNE LINO60 LINO50 CMP #1 BNE LINO54 LDY #16 LDA #0 LINEOH LDA #16 BNE LINO60 LINO54 CMP #2 BNE LINO58 LDY #32 LINEOA LDA #32 BNE LINO60 LINO58 LDA #0 LINO60 CLC ADC BUFR STA BUFR BCC LINO64 INC BUFR+1 LINO64 LDA #$9B AKOUT RTS LINEOH STY ANZB STA SPACE LDY #0 LINO00 STY YTEMP LDA (BUFR),Y HEXOUT LDA SPACE BEQ LINO02 AKOUT LINO02 LDY YTEMP INY CPY ANZB BNE LINO00 RTS LINEOA STY ANZB LDY #0 LINO34 STY YTEMP LDA (BUFR),Y CMP #$1B BCC LINO42 CMP #$20 BCC LINO40 CMP #$7D BCC LINO42 CMP #$80 BCC LINO40 CMP #$9B BCC LINO42 CMP #$A0 BCC LINO40 CMP #$FD BCC LINO42 LINO40 LDA #'. LINO42 AKOUT LDY YTEMP INY CPY ANZB BNE LINO34 LINO44 RTS AKIN LDX #$10 LDA #0 STA ICBLL,X STA ICBLH,X LDA #7 STA ICCOM,X JMP CIOV KOPEN LDX #$10 LDA #KDEV:L STA ICBAL,X LDA #KDEV:H STA ICBAH,X LDA #4 STA ICAUX1,X LDA #3 STA ICCOM,X JMP CIOV KCLOSE LDX #$10 LDA #12 STA ICCOM,X JMP CIOV KDEV ASC "K:" DFB $9B NEWLINE LDA #$9B BNE AKOUT SPACEOUT LDA #$20 BNE AKOUT HEXOUT PHA LSR LSR LSR LSR BCDOUT PLA BCDOUT AND #%00001111 CMP #10 BCC BCDO00 ADC #6 BCDO00 ADC #$30 AKOUT LDX BUFPOS STA LINBUF,X INC BUFPOS CMP #$9B BEQ AKO00 RTS AKO00 LDX #0 LDA #LINBUF:L STA ICBAL,X LDA #LINBUF:H STA ICBAH,X LDA #80 STA ICBLH,X LDA #0 STA ICBLL,X LDA #9 STA ICCOM,X JSR CIOV LDA #0 STA BUFPOS RTS LINBUF ASC " " ASC " " BUFPOS DFB 0 OAKOUT PHA LDX #0 LDA #0 STA ICBLL,X STA ICBLH,X LDA #11 STA ICCOM,X PLA JMP CIOV CHROUT PHA TXA LDX #0 STA ICBAL,X TYA STA ICBAH,X LDA #0 STA ICBLH,X PLA STA ICBLL,X LDA #11 STA ICCOM,X JMP CIOV TCOPY DFB $7D ASC "ATASPI MON V0.12 (c) 2000 by msc" DFB $9B DCBTMP DFB $70 DFB $1 DFB $2 DFB $40 DFW DBUFR DFB $1 DFB 0 DFW 0 DFW 0 CMDTABLE EQU * CMDREQSE DFB 0 ; TID DFB 6 ; LEN DFB 3 ; DFB 0 DFB 0,0 DFB $FF DFB 0 DFB 0,0,0,0 DFB 0,0,0,0 CMDINQ DFB 0 ; TID DFB 6 ; LEN DFB $12 ; DFB 0 DFB 0,0 DFB $FF DFB 0 DFB 0,0,0,0 DFB 0,0,0,0 CMDMODSN DFB 0 ; TID DFB 6 ; LEN DFB $1A ; DFB %00000000 DFB %00111111 DFB 0 DFB $FF DFB $00 DFB 0,0,0,0 DFB 0,0,0,0 CMDREAD DFB 0 ; TID DFB 10 ; LEN DFB $28 ; DFB %00000000 DFB 0,0,$80,0 DFB 0 DFB 0,1 DFB 0 DFB 0,0,0,0 CMDRDCAP DFB 0 ; TID DFB 10 ; LEN DFB $25 ; DFB %00000000 DFB 0,0,0,0 DFB 0,0,0 DFB 0 DFB 0,0,0,0 CMD4 DFB 0 ; TID DFB 10 ; LEN DFB $2A ; DFB %00000000 DFB 0,0,$80,0 DFB 0 DFB 0,1 DFB 0 DFB 0,0,0,0 CMDRDTOC DFB 0 ; TID DFB 10 ; LEN DFB $43 ; DFB %00000010 DFB 0,0,0,0,0 DFB 1,0 DFB 0 DFB 0,0,0,0 CMDPLTRK DFB 0 ; TID DFB 10 ; LEN DFB $48 ; DFB %00000000 DFB 0,0 DFB 1,0 DFB 0 DFB 1,0 DFB 0 DFB 0,0,0,0 CMDPAUSE DFB 0 ; TID DFB 10 ; LEN DFB $4B ; DFB %00000000 DFB 0,0,0,0,0,0 DFB %00000000 DFB 0 DFB 0,0,0,0 CMDLOAD DFB 0 ; TID DFB 6 ; LEN DFB $1B ; DFB %00000000 DFB 0,0 DFB %00000010 DFB 0 DFB 0,0,0,0 DFB 0,0,0,0 CDCBTBL DFB 0 ;REQ SEN DFB $40 DFW $00FF DFB 0 ;INQ DFB $40 DFW $00FF DFB 0 ;MODE SENSE DFB $40 DFW $00FF DFB 0 ;READ DFB $40 DFW $0800 DFB 0 ;READ CAP DFB $40 DFW $0008 DFB 0 ; DFB $80 DFW $0200 DFB 0 ;READ TOC DFB $40 DFW $00FF DFB 0 ;PLAY TRK DFB $40 DFW $0000 DFB 0 ;PAUSE/RESUME DFB $40 DFW $0000 DFB 0 ;OPEN/LOAD DFB $40 DFW $0000 VARIAB EQU *ÿÿÿÿÿÿÿÿÿÿ