home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Toolkit / FILECPY.ARC / 1541 / SFD.SRC (.txt)
Commodore BASIC  |  2019-04-13  |  3KB  |  164 lines

  1. 10 *= $7000
  2. 20 .M
  3. 30 ;
  4. 40 ;STANDARD DRIVE COMMANDS
  5. 50 ;
  6. 60 OPEN = $FFC0
  7. 70 CLOSE = $FFC3
  8. 80 INCHN = $FFC6
  9. 90 OUTCHN = $FFC9
  10. 100 CLRCHN = $FFCC
  11. 110 SETNM = $FFBD
  12. 120 SETLFS = $FFBA
  13. 130 GET = $FFE4
  14. 140 PRINT = $FFD2
  15. 150 BUFFER = $8000;STORE 256 BYTES OF FILE
  16. 160 ;
  17. 170 ;DIRECT ACCESS DRIVE COMMANDS
  18. 180 ;
  19. 190 LIS = $FFB1
  20. 200 LISEC = $FF93
  21. 210 UNLIS = $FFAE
  22. 220 OUT = $FFA8
  23. 230 ;
  24. 240 LDA #$93;CLEAR SCREEN
  25. 250 JSR PRINT;PRINT FILE MESSAGE
  26. 260 LDY #$00
  27. 270 MES LDA MESS,Y
  28. 280 CMP #$00;DELIMITER END OF TEXT
  29. 290 BEQ STREAD
  30. 300 JSR PRINT
  31. 310 INY
  32. 320 JMP MES
  33. 330 ;
  34. 340 STREAD LDY #$00
  35. 350 STY Y;TEMPORARY Y SAVE $FFE4 USES Y AND Y IS LOST
  36. 360 STRD JSR GET;ACCEPT KEYSTROKES
  37. 370 BEQ STRD
  38. 380 CMP #$0D;RETURN END OF FILE NAME
  39. 390 BEQ READ
  40. 400 LDY Y
  41. 410 STA BUFF1,Y;BUFFER FILE NAME BYTE
  42. 420 JSR PRINT;ECHO TO SCREEN
  43. 430 INC Y
  44. 440 JMP STRD
  45. 450 ;
  46. 460 READ LDY Y;# OF BYTES IN FILENAME
  47. 470 STY FCOUNT
  48. 480 LDX #$00
  49. 490 LDY Y
  50. 500 RDLP LDA PRG,X;ADD ,P,W TO FILENAME
  51. 510 STA BUFF1,Y
  52. 520 INY
  53. 530 INX
  54. 540 CPX #$04
  55. 550 BNE RDLP
  56. 560 ;
  57. 570 ;OPEN DEVICE 8 FOR READ
  58. 580 ;
  59. 590 LDA #$03;FILE #
  60. 600 LDX #$08;DEVICE #
  61. 610 LDY #$03;SECONDARY ADDRESS
  62. 620 JSR SETLFS;SAME AS OPEN3,8,3
  63. 630 LDA FCOUNT;# OF BYTES IN FILENAME
  64. 640 LDX #<BUFF1;LO BYTE ADDRESS FOR FILENAME
  65. 650 LDY #>BUFF1;HI BYTE   "      "    "  "
  66. 660 JSR SETNM
  67. 670 JSR OPEN
  68. 680 ;
  69. 690 ;CLRCHN (CLEAR CHANNEL) ALLOWS ONE DEVICE
  70. 700 ;TO BE PUT ON HOLD, AND ANOTHER DEVICE
  71. 710 ;TO BE ACTIVATED.
  72. 720 ;
  73. 730 JSR CLRCHN
  74. 740 ;
  75. 750 ;OPEN DEVICE 9 FOR WRITE
  76. 760 ;
  77. 770 LDA #$07
  78. 780 LDX #$09
  79. 790 LDY #$07
  80. 800 JSR SETLFS
  81. 810 LDA FCOUNT
  82. 820 CLC
  83. 830 ADC #$04;",P,W" = 4 BYTES
  84. 840 STA FCOUNT
  85. 850 LDX #<BUFF1
  86. 860 LDY #>BUFF1
  87. 870 JSR SETNM
  88. 880 JSR OPEN
  89. 890 JSR CLRCHN
  90. 900 ;
  91. 910 ;READ AND BUFFER 256 BYTES
  92. 920 ;
  93. 930 ST LDY #$00
  94. 940 STY Y
  95. 950 LDX #$03
  96. 960 JSR INCHN;OPEN CHANNEL TO READ
  97. 970 LP JSR GET;GET 1 BYTE
  98. 980 LDY Y
  99. 990 STA BUFFER,Y
  100. 1000 LDA $90;SERIAL STATUS, (ERROR WORD)
  101. 1010 BNE END;0 = OK
  102. 1020 INC Y
  103. 1030 LDY Y
  104. 1040 CPY #$FE
  105. 1050 BNE LP
  106. 1060 STY Y;USED FOR BLOCK LESS THAN 256 BYTES EOF SITUATION
  107. 1070 JSR CLRCHN;SHUT DOWN READ CHANNEL
  108. 1080 ;
  109. 1090 ;READ BYTES BUFFERED AND WRITE TO DEVICE 9
  110. 1100 ;
  111. 1110 ST1 LDX #$07
  112. 1120 JSR OUTCHN;OPEN WRITE CHANNEL
  113. 1130 LDY #$00
  114. 1140 LP1 LDA BUFFER,Y
  115. 1150 JSR PRINT;PRINT TO DEVICE 9
  116. 1160 LDA $90
  117. 1170 BNE END
  118. 1180 INY
  119. 1190 CPY Y;# OF BYTES READ
  120. 1200 BNE LP1
  121. 1210 JSR CLRCHN;SHUT DOWN WRITE CHANNEL
  122. 1220 LDA EFLG;= 1 WHEN END OF FILE SENT FROM DEVICE 8
  123. 1230 BNE END1
  124. 1240 JMP ST;GET ANOTHER BLOCK OF FILE
  125. 1250 ;
  126. 1260 ;SET EFLG UP (1) EOF SENT
  127. 1270 ;
  128. 1280 END LDA #$1
  129. 1290 STA EFLG
  130. 1300 INC Y;ADJUST FOR LAST CHARACTER BUFFERED
  131. 1310 JMP ST1;WRITE LAST BLOCK READ TO DEVICE 9
  132. 1320 ;
  133. 1330 ;CLOSE DOWN BOTH DEVICES
  134. 1340 ;
  135. 1350 END1 JSR CLRCHN
  136. 1360 LDA #$03
  137. 1370 JSR CLOSE
  138. 1380 ;
  139. 1390 LDA #$07
  140. 1400 JSR CLOSE
  141. 1410 LDA #$00;SET EFLAG FOR NEXT READ
  142. 1420 STA EFLG
  143. 1430 ;
  144. 1440 ;SEND I0, (INITIALIZE) TO SFD
  145. 1450 ;
  146. 1460 LDA #$09
  147. 1470 JSR LIS
  148. 1480 LDA #$FF
  149. 1490 JSR LISEC
  150. 1500 LDA #"I
  151. 1510 JSR OUT
  152. 1520 LDA #"0
  153. 1530 JSR OUT
  154. 1540 LDA #$09
  155. 1550 JSR UNLIS
  156. 1560 BRK;BRK COMMAND TO GET BACK TO M/L MONITOR
  157. 1570 ;
  158. 1580 Y .B 0
  159. 1590 EFLG .B 0
  160. 1600 FCOUNT .B 0
  161. 1610 MESS .B "ENTER NAME OF FILE:.B 13 13 0
  162. 1620 PRG .B ",P,W
  163. 1630 BUFF1 .B 0
  164.