home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / ML-SOURCE (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  4.6 KB  |  192 lines

  1. 50 SYS700
  2. 75 .OPT P,OO
  3. 80 ;****************
  4. 81 ;*              *
  5. 82 ;*  LYLE GIESE  *
  6. 83 ;*  VERSION 1.0 *
  7. 84 ;*   06/21/86   *
  8. 85 ;*              *
  9. 86 ;****************
  10. 120 READST = $FFB7
  11. 130 SETLFS = $FFBA
  12. 140 SETNAM = $FFBD
  13. 150 OPEN   = $FFC0
  14. 160 CLOSE  = $FFC3
  15. 170 CHKIN  = $FFC6
  16. 180 CHKOUT = $FFC9
  17. 190 CLRCHN = $FFCC
  18. 200 CHRIN  = $FFCF
  19. 210 CHROUT = $FFD2
  20. 220 GETIN  = $FFE4
  21. 230 CLALL  = $FFE7
  22. 300 INDEX  = $FB
  23. 310 FNAM   = $033C;USING CASSETTE BUFFER TO STORE FILENAMES
  24. 320 FLEN   = $FD;FOR LENGTH OF FILENAME
  25. 330 OUTFILE = $FE
  26. 340 RTEMP  = $03FF
  27. 350 ATEMP  = $03FE
  28. 360 PDEV   = $03FD
  29. 370 SHFLAG = $028D
  30. 380 HIGH   = $03FC
  31. 390 LOW    = $03FB
  32. 490 *= $C000
  33. 500 ;SET UP SCREEN
  34. 510 START LDA #$00;MAKE BORDER AND BACKGROUND BLACK
  35. 520 STA $D020
  36. 530 STA $D021
  37. 540 LDA #$07;MAKE THE CHARACTERS YELLOW
  38. 550 STA $0286
  39. 555 ;SEND FIRST MESSAGE TO SCREEN
  40. 560 LDA #<AMESS
  41. 570 STA INDEX
  42. 580 LDA #>AMESS
  43. 590 STA INDEX+1
  44. 600 JSR MESSOUT;SEND MESSAGE TO SCREEN
  45. 610 ;GET FILENAME FOR DISK READ
  46. 620 LDA #<FNAM;LOAD INDEX WITH LOCATION FOR FILENAME
  47. 630 STA INDEX
  48. 640 LDA #>FNAM
  49. 650 STA INDEX+1
  50. 660 LDA #$00
  51. 670 STA FLEN
  52. 680 JSR CLRCHN;MAKE SURE SCREEN AND KEYBOARD IS ACTIVE
  53. 690 NOKEY JSR GETIN;GET A CHAR FROM THE KEYBUF
  54. 700 BEQ NOKEY;IF NOTHING IS IN KEYBUF A REG WILL HOLD A ZERO
  55. 710 CMP #$14;CK FOR DELETE KEY
  56. 720 BNE CKRT
  57. 730 LDA FLEN;BEFORE DELETING MAKE SURE THAT THERE
  58. 740 BEQ NOKEY;IS A CHAR IN FNAM
  59. 750 LDA #$14;DELETE CHAR ON SCREEN
  60. 760 JSR CHROUT
  61. 770 DEC FLEN
  62. 780 JMP NOKEY
  63. 790 CKRT CMP #$0D;CK FOR RETURN TO EITHER EXIT PROGRAM
  64. 800 BNE VALKEY;OR OPEN DISK FILE
  65. 810 LDA FLEN;CK NUMBER OF CHAR IN KEYBUF
  66. 820 BNE DOPEN;IF ANY CHARS THEN OPEN DISK FILE
  67. 830 RTS;IF RETURN PRESSED WITH NO CHAR IN KEYBUF THEN EXIT ROUTINE
  68. 840 VALKEY LDY FLEN;LOAD Y REG WITH FLEN
  69. 850 CPY #$12;CK FOR MAX CHAR ALLOWABLE
  70. 860 BEQ NOKEY
  71. 870 STA (INDEX),Y;STORE IN FNAM BUFFER
  72. 880 JSR CHROUT;AND ECHO CHAR TO SCREEN
  73. 890 INC FLEN;INC FLEN POINTER
  74. 900 JMP NOKEY
  75. 910 DOPEN LDY FLEN;ADD ,S TO FNAM
  76. 920 LDA #","
  77. 930 STA (INDEX),Y
  78. 940 INY
  79. 950 LDA #"S"
  80. 960 STA (INDEX),Y
  81. 970 INY
  82. 980 STY FLEN
  83. 1000 ;OPEN CHANNELS TO DISK DRIVE
  84. 1010 LDA #$00;FIRST COMMAND CHANNEL
  85. 1020 JSR SETNAM;NO FILE NAME NEEDED HERE
  86. 1030 LDA #$0F;OPEN15,8,15
  87. 1040 LDX #$08
  88. 1050 LDY #$0F
  89. 1060 JSR SETLFS;OPEN LOGICAL FILE
  90. 1070 JSR OPEN;COMMAND CHANNEL OPENED
  91. 1080 BCC ROPEN;CK IF OPEN WAS OK
  92. 1090 JMP DERROR;COULD NOT OPEN CHANNEL
  93. 1100 ROPEN LDA FLEN;GET LENGTH OF FILENAME
  94. 1110 LDX #<FNAM
  95. 1120 LDY #>FNAM
  96. 1130 JSR SETNAM
  97. 1140 LDA #$08
  98. 1150 LDX #$08
  99. 1160 LDY #$00
  100. 1170 JSR SETLFS
  101. 1180 JSR OPEN;OPEN8,8,8,"FNAM,S"
  102. 1190 BCC CKERROR
  103. 1200 JMP DERROR;COULD NOT OPEN READ FILE
  104. 1210 CKERROR JSR RERROR;CK ERROR CHAN ON DISK DRIVE
  105. 3000 DERROR JSR CLRCHN;MAKE SURE I/O INITIALIZED
  106. 3010 JSR CLALL;MAKE SURE ALL OPEN CHANNELS ARE CLOSED
  107. 3020 LDA #<CMESS;UNABLE TO OPEN ERROR CHAN
  108. 3030 STA INDEX
  109. 3040 LDA #>CMESS
  110. 3050 STA INDEX
  111. 3060 JSR MESSOUT
  112. 3070 RTS;THIS ERROR IS FATAL AND WE DON'T WANT TO TRY AGAIN
  113. 4000 RERROR LDX #$0F;READ AND CK DISK ERROR CHAN
  114. 4010 JSR CHKIN
  115. 4020 NULL JSR GETIN
  116. 4030 BEQ NULL
  117. 4040 STA HIGH
  118. 4050 JSR GETIN
  119. 4060 STA LOW
  120. 4070 CMP #$30;IF FIRST TWO CHARS ARE
  121. 4080 BNE CK;ASCII ZERO AND ZERO
  122. 4090 LDA HIGH;THEN NO ERROR OCCURED
  123. 4100 CMP #$30;
  124. 4110 BEQ EMPTY;REMOVE THE ENTIRE ERROR MESSAGE
  125. 4120 CK LDA #$0D;IF NOT THEN PRINT ERROR
  126. 4130 JSR CHROUT;ERROR MESSAGE
  127. 4140 LDA HIGH
  128. 4150 JSR CHROUT
  129. 4160 LDA LOW
  130. 4170 REPEAT JSR CHROUT
  131. 4180 JSR GETIN
  132. 4190 CMP #$0D
  133. 4200 BNE REPEAT
  134. 4210 PLA:PLA;REMOVE RETURN ADDRESS FROM STACK
  135. 4220 JSR CLRCHN
  136. 4230 LDA #$08:JSR CLOSE
  137. 4240 LDA #$0F:JSR CLOSE;CLOSE DISK CHAN
  138. 4250 LDA #<EMESS
  139. 4260 STA INDEX
  140. 4270 LDA #>EMESS
  141. 4280 STA INDEX+1
  142. 4290 JSR MESSOUT
  143. 4300 NCR JSR GETIN
  144. 4310 CMP #$0D
  145. 4320 BNE NCR
  146. 4330 JMP START
  147. 4340 EMPTY JSR GETIN;NO DISK ERROR BUT
  148. 4350 CMP #$0D;SHOULD STILL READ THE ENTIRE
  149. 4360 BNE EMPTY;MESSAGE OUT OF ERROR CHAN
  150. 4370 JSR CLRCHN
  151. 4380 RTS
  152. 5000 MESSOUT LDY #$00;SEND MESSAGE TO SCREEN
  153. 5010 LPY LDA (INDEX),Y;INDEX POINTS TO START OF MESSAGE
  154. 5020 BEQ END;AND IT MUST END WITH A ZERO BYTE
  155. 5030 JSR CHROUT
  156. 5040 INY
  157. 5050 BNE LPY;HAS Y LOOPED AROUND TO ZERO
  158. 5060 INC INDEX+1;IF IT HAS WE MUST INC
  159. 5070 JMP LPY;THE HI BYTE OF OUR INDEX ADDRESS
  160. 5080 END RTS
  161. 7000 AMESS =*;OPENING MESSAGE
  162. 7010 .BYTE $93;CLEAR/HOME
  163. 7020 .BYTE $0D,$0D,$0D,$0E
  164. 7030 .ASC "         [211][197][209][213][197][206][212][201][193][204] [198][201][204][197] [210][197][193][196][197][210]"
  165. 7040 .BYTE $0D,$0D
  166. 7050 .ASC "             [194]Y [204]YLE [199]IESE"
  167. 7060 .BYTE $0D,$0D
  168. 7070 .ASC " [213]SE THE [211]HIFT AND [211]HIFT [204]OCK TO PAUSE
  169. 7080 .BYTE $0D
  170. 7090 .[198] " LISTING. (null)RESS THE LENTRL AND (null)HIFT TO"
  171. 7100 .BYTE $0D
  172. 7110 .[198] " EXIT CURRENT FILE. (null)O EXIT JUST"
  173. 7120 .BYTE $0D
  174. 7130 .[198] " HIT RETURNWAIT AT THE ASCILENAME > PROMPT."
  175. 7140 .BYTE $0D,$0D
  176. 7150 .[198] " ASCILENAME > "
  177. 7160 .BYTE $00
  178. 7300 CMESS [178][172];UNABLE [164] [159] ERR[176] CHANNEL [164] DISK DRIVE
  179. 7310 .BYTE $0D
  180. 7320 .[198] " (null)NABLE TO OPEN ERROR CHANNEL TO DISK
  181. 7330 .BYTE $0D
  182. 7340 .ASC " DRIVE. [212]RY AGAIN LATER!"
  183. 7350 .BYTE $0D,$00
  184. 7400 DMESS =*;DISK ERROR TRYING TO OPEN READ CHANNEL
  185. 7410 .BYTE $0D
  186. 7420 .ASC "  [196][201][211][203] [197][210][210][207][210] [146]"
  187. 7430 .BYTE $0D,$00
  188. 7500 EMESS =*;END OF FILE
  189. 7510 .BYTE $0D
  190. 7520 .ASC "  [208]RESS RETURN TO CONTINUE [146] "
  191. 7530 .BYTE $0D,$00
  192.