home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / 256KB.UTILS.SFX / dup.a < prev    next >
Encoding:
Text File  |  1993-06-23  |  3.4 KB  |  310 lines

  1. ;
  2. ; DUPLICATE (READ DISC TO RAM)
  3. ;
  4.  .OPT NOL
  5. BLKIND =$4C
  6. MEMO =$4E
  7. TRACK =$4F
  8. SECTOR =$50
  9. ;
  10. RPT =254
  11. AT =255
  12. ;
  13. PIA =$DFC0
  14. ;
  15. CLALL =$FFE7
  16. CHROUT =$FFD2
  17. TALK =$FFB4
  18. TKSA =$FF96
  19. CIOUT =$FFA8
  20. UNTLK =$FFAB
  21. LISTEN =$FFB1
  22. SECOND =$FF93
  23. ACPTR =$FFA5
  24. UNLSN =$FFAE
  25. ;
  26. *=$801
  27.  .WORD EOP,1987
  28.  .BYTE $9E,' 2062',0
  29. EOP .WORD 0
  30. ;
  31. ;
  32.  JSR CLALL
  33.  JSR INIT
  34. ;
  35.  LDX #$6F
  36.  JSR LISNSA
  37.  LDA #'I'
  38.  JSR CIOUT
  39.  LDA #'0'
  40.  JSR CIOUT
  41.  JSR UNLSN
  42. ;
  43.  LDX #$F2
  44.  JSR LISNSA
  45.  LDA #'#'
  46.  JSR CIOUT
  47.  JSR UNLSN
  48. ;
  49.  JSR STRING
  50.  .BYT 13,13,'READING DISC.',13
  51.  .BYT 13,'TRACKS: ',13
  52.  .BYT 0
  53. ;
  54.  LDA #1
  55.  STA TRACK
  56. ;
  57. ; READ A TRACK
  58. ;
  59. READ LDA TRACK
  60.  JSR ONTRAC
  61. READ1 TAX
  62.  DEX
  63.  STX SECTOR
  64.  JSR BLKPNT
  65.  LDX #$6F
  66.  JSR LISNSA
  67.  LDY #0
  68. READ2 LDA READ20,Y
  69.  BEQ READ3
  70.  JSR CIOUT
  71.  INY
  72.  BNE READ2
  73. ;
  74. READ3 LDA TRACK
  75.  JSR DAA
  76.  LDA #','
  77.  JSR CIOUT
  78.  LDX SECTOR
  79.  LDA ESECS,X
  80.  JSR DAA
  81.  JSR UNLSN
  82. ;
  83.  LDX #$62
  84.  JSR TALKSA
  85.  LDY #0
  86. READ4 JSR ACPTR
  87.  STA (BLKIND),Y
  88.  INY
  89.  BNE READ4
  90. ;
  91.  LDX #$DC
  92.  STX PIA
  93.  JSR UNTLK
  94. ;
  95.  LDA SECTOR
  96.  BNE READ1
  97.  INC TRACK
  98.  LDA #'.'
  99.  JSR CHROUT
  100.  LDA TRACK
  101.  CMP #36
  102.  BCC READ
  103. ;
  104.  JSR STRING
  105.  .BYT 13,13,'READY.',13,0
  106. ;
  107. ; RESTORE STATE
  108. ;
  109.  LDA MEMO
  110.  BNE READ6
  111.  LDA #$35
  112.  STA 1
  113. READ6 LDX #$E2
  114.  JSR LISNSA
  115.  JMP UNLSN
  116. ;
  117. READ20 .BYTE 'U1:2,0,',0
  118. ;
  119. ; TOTAL NUMBER OF SECS ON A TRACK
  120. ;
  121. ONTRAC LDX #ONTRA2-ONTRA1
  122. ONTRA0 CMP ONTRA1-1,X
  123.  DEX
  124.  BCS ONTRA0
  125.  LDA ONTRA2,X
  126.  RTS
  127. ONTRA1 .BYTE 36,31,25,18
  128. ONTRA2 .BYTE 17,18,19,21
  129. ;
  130. ; TRACK START ADDRESSES
  131. ;
  132. HTRACK .BYT $10,$10,$10,$10
  133.  .BYT $20,$20,$20
  134.  .BYT $30,$30,$30
  135.  .BYT $40,$40,$40
  136.  .BYT $50,$50,$50
  137.  .BYT $60,$60,$60
  138.  .BYT $70,$70,$70
  139.  .BYT $80,$80,$80,$80
  140.  .BYT $90,$90,$90
  141.  .BYT $A0,$A0,$A0,$A0
  142.  .BYT $B0,$B0
  143. LTRACK .BYT 0,21,42,63
  144.  .BYT 20,41,62
  145.  .BYT 19,40,61
  146.  .BYT 18,39,60
  147.  .BYT 17,38,59
  148.  .BYT 16,37,56
  149.  .BYT 11,30,49
  150.  .BYT 4,23,42,60
  151.  .BYT 14,32,50
  152.  .BYT 4,22,39,56
  153.  .BYT 9,26
  154. ;
  155. ; SECTOR
  156. ;
  157. ESECS .BYT 0,10,1,11,2,12,3,13,4,14
  158.  .BYT 5,15,6,16,7,8,9,17,18,19,20
  159. ;
  160. ; INITIALIZE POINTERS
  161. ;
  162. BLKPNT LDA TRACK
  163.  TAY
  164.  CLC
  165.  LDX SECTOR
  166.  LDA ESECS,X
  167.  ADC LTRACK-1,Y
  168.  LDX #$0C
  169.  ADC #$40
  170.  BPL BLKPN0
  171.  EOR #$C0
  172.  LDX #$1C
  173. BLKPN0 STA BLKIND+1
  174.  TXA
  175.  CLC
  176.  ADC HTRACK-1,Y
  177.  STA PIA
  178.  LDY #0
  179.  STY BLKIND
  180. ;
  181. ; INITIALIZE MACHINE
  182. ;
  183. INIT LDA PIA+1
  184.  AND #$04
  185.  BNE INIT1
  186.  LDX #11
  187. INIT0 LDA INIT9,X
  188.  STA PIA,X
  189.  DEX
  190.  BPL INIT0
  191. ;
  192. INIT1 LDA PIA
  193.  AND #$0F
  194.  EOR #$0C
  195.  BEQ INIT2
  196.  JSR STRING
  197.  .BYT 13,13,'ILLEGAL RAM STATE',13
  198.  .BYT 0
  199.  PLA
  200.  PLA
  201.  RTS
  202. ;
  203. INIT2 LDA $EE12 ;IDENTIFY
  204.  STA MEMO
  205.  LDA #$37
  206.  STA 1
  207.  RTS
  208. ;
  209. INIT9 .BYT $DC,$34,$FE,$04
  210.  .BYT $FF,0,$FF,0
  211.  .BYT $DC,$04,$FE,$04
  212. ;
  213. ; DAA
  214. ;
  215. DAA LDX #$2F
  216.  SEC
  217. DAA0 SBC #10
  218.  INX
  219.  BCS DAA0
  220. DAA1 ADC #10
  221.  PHA
  222.  TXA
  223.  JSR CIOUT
  224.  PLA
  225.  ORA #'0'
  226.  JMP CIOUT
  227. ;
  228. ; TALK AND SA
  229. ;
  230. TALKSA LDA #8
  231.  JSR TALK
  232.  TXA
  233.  JMP TKSA
  234. ;
  235. ; LISTEN AND SA
  236. ;
  237. LISNSA LDA #8
  238.  JSR LISTEN
  239.  TXA
  240.  JMP SECOND
  241. ;
  242. ; PRINT A STRING
  243. ;
  244. ;---------------------------------
  245. ;PRINT STRING
  246. ;
  247. STRPNT =$A6
  248. CHRSCR =$E716
  249. CURSOR =$E50C
  250. STRING PLA
  251.  STA STRPNT
  252.  PLA
  253.  STA STRPNT+1
  254.  TXA
  255.  PHA
  256.  TYA
  257.  PHA
  258. ;
  259.  LDY #0
  260. STRI00 INC STRPNT
  261.  BNE STRI01
  262.  INC STRPNT+1
  263. STRI01 LDA (STRPNT),Y
  264.  CMP #RPT
  265.  BCS STRI03
  266. STRI02 JSR CHRSCR
  267.  BNE STRI00
  268. ;
  269.  PLA
  270.  TAY
  271.  PLA
  272.  TAX
  273.  LDA STRPNT+1 ;RETURN
  274.  PHA
  275.  LDA STRPNT
  276.  PHA
  277.  RTS
  278. ;
  279. STRI03 BNE STRI08
  280.  INY ;REPEAT N TIMES
  281.  LDA (STRPNT),Y
  282.  TAX
  283.  INY
  284.  LDA (STRPNT),Y
  285. STRI06 JSR CHRSCR ;
  286.  DEX
  287.  BNE STRI06
  288.  BEQ STRI09
  289. ;
  290. STRI08 CMP #AT
  291.  BNE STRI02
  292.  INY ;SET CURSOR TO N+1,N+2
  293.  LDA (STRPNT),Y
  294.  TAX
  295.  INY
  296.  LDA (STRPNT),Y
  297.  TAY
  298.  JSR CURSOR
  299.  LDY #2
  300. ;
  301. STRI09 CLC ;ADD .Y TO STRPNT
  302.  TYA ;USE AFTER SEVERAL CHAR CMD
  303.  LDY #0
  304.  ADC STRPNT
  305.  STA STRPNT
  306.  BCC STRI00
  307.  INC STRPNT+1
  308.  JMP STRI00
  309. .END
  310.