home *** CD-ROM | disk | FTP | other *** search
- ;
- ; DUPLICATE (READ DISC TO RAM)
- ;
- .OPT NOL
- BLKIND =$4C
- MEMO =$4E
- TRACK =$4F
- SECTOR =$50
- ;
- RPT =254
- AT =255
- ;
- PIA =$DFC0
- ;
- CLALL =$FFE7
- CHROUT =$FFD2
- TALK =$FFB4
- TKSA =$FF96
- CIOUT =$FFA8
- UNTLK =$FFAB
- LISTEN =$FFB1
- SECOND =$FF93
- ACPTR =$FFA5
- UNLSN =$FFAE
- ;
- *=$801
- .WORD EOP,1987
- .BYTE $9E,' 2062',0
- EOP .WORD 0
- ;
- ;
- JSR CLALL
- JSR INIT
- ;
- LDX #$6F
- JSR LISNSA
- LDA #'I'
- JSR CIOUT
- LDA #'0'
- JSR CIOUT
- JSR UNLSN
- ;
- LDX #$F2
- JSR LISNSA
- LDA #'#'
- JSR CIOUT
- JSR UNLSN
- ;
- JSR STRING
- .BYT 13,13,'READING DISC.',13
- .BYT 13,'TRACKS: ',13
- .BYT 0
- ;
- LDA #1
- STA TRACK
- ;
- ; READ A TRACK
- ;
- READ LDA TRACK
- JSR ONTRAC
- READ1 TAX
- DEX
- STX SECTOR
- JSR BLKPNT
- LDX #$6F
- JSR LISNSA
- LDY #0
- READ2 LDA READ20,Y
- BEQ READ3
- JSR CIOUT
- INY
- BNE READ2
- ;
- READ3 LDA TRACK
- JSR DAA
- LDA #','
- JSR CIOUT
- LDX SECTOR
- LDA ESECS,X
- JSR DAA
- JSR UNLSN
- ;
- LDX #$62
- JSR TALKSA
- LDY #0
- READ4 JSR ACPTR
- STA (BLKIND),Y
- INY
- BNE READ4
- ;
- LDX #$DC
- STX PIA
- JSR UNTLK
- ;
- LDA SECTOR
- BNE READ1
- INC TRACK
- LDA #'.'
- JSR CHROUT
- LDA TRACK
- CMP #36
- BCC READ
- ;
- JSR STRING
- .BYT 13,13,'READY.',13,0
- ;
- ; RESTORE STATE
- ;
- LDA MEMO
- BNE READ6
- LDA #$35
- STA 1
- READ6 LDX #$E2
- JSR LISNSA
- JMP UNLSN
- ;
- READ20 .BYTE 'U1:2,0,',0
- ;
- ; TOTAL NUMBER OF SECS ON A TRACK
- ;
- ONTRAC LDX #ONTRA2-ONTRA1
- ONTRA0 CMP ONTRA1-1,X
- DEX
- BCS ONTRA0
- LDA ONTRA2,X
- RTS
- ONTRA1 .BYTE 36,31,25,18
- ONTRA2 .BYTE 17,18,19,21
- ;
- ; TRACK START ADDRESSES
- ;
- HTRACK .BYT $10,$10,$10,$10
- .BYT $20,$20,$20
- .BYT $30,$30,$30
- .BYT $40,$40,$40
- .BYT $50,$50,$50
- .BYT $60,$60,$60
- .BYT $70,$70,$70
- .BYT $80,$80,$80,$80
- .BYT $90,$90,$90
- .BYT $A0,$A0,$A0,$A0
- .BYT $B0,$B0
- LTRACK .BYT 0,21,42,63
- .BYT 20,41,62
- .BYT 19,40,61
- .BYT 18,39,60
- .BYT 17,38,59
- .BYT 16,37,56
- .BYT 11,30,49
- .BYT 4,23,42,60
- .BYT 14,32,50
- .BYT 4,22,39,56
- .BYT 9,26
- ;
- ; SECTOR
- ;
- ESECS .BYT 0,10,1,11,2,12,3,13,4,14
- .BYT 5,15,6,16,7,8,9,17,18,19,20
- ;
- ; INITIALIZE POINTERS
- ;
- BLKPNT LDA TRACK
- TAY
- CLC
- LDX SECTOR
- LDA ESECS,X
- ADC LTRACK-1,Y
- LDX #$0C
- ADC #$40
- BPL BLKPN0
- EOR #$C0
- LDX #$1C
- BLKPN0 STA BLKIND+1
- TXA
- CLC
- ADC HTRACK-1,Y
- STA PIA
- LDY #0
- STY BLKIND
- ;
- ; INITIALIZE MACHINE
- ;
- INIT LDA PIA+1
- AND #$04
- BNE INIT1
- LDX #11
- INIT0 LDA INIT9,X
- STA PIA,X
- DEX
- BPL INIT0
- ;
- INIT1 LDA PIA
- AND #$0F
- EOR #$0C
- BEQ INIT2
- JSR STRING
- .BYT 13,13,'ILLEGAL RAM STATE',13
- .BYT 0
- PLA
- PLA
- RTS
- ;
- INIT2 LDA $EE12 ;IDENTIFY
- STA MEMO
- LDA #$37
- STA 1
- RTS
- ;
- INIT9 .BYT $DC,$34,$FE,$04
- .BYT $FF,0,$FF,0
- .BYT $DC,$04,$FE,$04
- ;
- ; DAA
- ;
- DAA LDX #$2F
- SEC
- DAA0 SBC #10
- INX
- BCS DAA0
- DAA1 ADC #10
- PHA
- TXA
- JSR CIOUT
- PLA
- ORA #'0'
- JMP CIOUT
- ;
- ; TALK AND SA
- ;
- TALKSA LDA #8
- JSR TALK
- TXA
- JMP TKSA
- ;
- ; LISTEN AND SA
- ;
- LISNSA LDA #8
- JSR LISTEN
- TXA
- JMP SECOND
- ;
- ; PRINT A STRING
- ;
- ;---------------------------------
- ;PRINT STRING
- ;
- STRPNT =$A6
- CHRSCR =$E716
- CURSOR =$E50C
- STRING PLA
- STA STRPNT
- PLA
- STA STRPNT+1
- TXA
- PHA
- TYA
- PHA
- ;
- LDY #0
- STRI00 INC STRPNT
- BNE STRI01
- INC STRPNT+1
- STRI01 LDA (STRPNT),Y
- CMP #RPT
- BCS STRI03
- STRI02 JSR CHRSCR
- BNE STRI00
- ;
- PLA
- TAY
- PLA
- TAX
- LDA STRPNT+1 ;RETURN
- PHA
- LDA STRPNT
- PHA
- RTS
- ;
- STRI03 BNE STRI08
- INY ;REPEAT N TIMES
- LDA (STRPNT),Y
- TAX
- INY
- LDA (STRPNT),Y
- STRI06 JSR CHRSCR ;
- DEX
- BNE STRI06
- BEQ STRI09
- ;
- STRI08 CMP #AT
- BNE STRI02
- INY ;SET CURSOR TO N+1,N+2
- LDA (STRPNT),Y
- TAX
- INY
- LDA (STRPNT),Y
- TAY
- JSR CURSOR
- LDY #2
- ;
- STRI09 CLC ;ADD .Y TO STRPNT
- TYA ;USE AFTER SEVERAL CHAR CMD
- LDY #0
- ADC STRPNT
- STA STRPNT
- BCC STRI00
- INC STRPNT+1
- JMP STRI00
- .END
-