home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / src / pet / ADD-ON-LOADER.txt < prev    next >
Encoding:
Text File  |  1998-10-18  |  13.5 KB  |  360 lines

  1. add-on-l*......page 0001
  2.  
  3.  
  4. line# loc   code        line   
  5.  
  6. 00001 0000               ;*****************************************
  7. 00002 0000               ;*                                       *
  8. 00003 0000               ;*  aaa  dddd  dddd       ooo  n   n     *
  9. 00004 0000               ;* a   a d   d d   d     o   o nn  n     *    
  10. 00005 0000               ;* a   a d   d d   d *** 0   0 n n n     *
  11. 00006 0000               ;* aaaaa d   d d   d *** o   0 n n n     *
  12. 00007 0000               ;* a   a d   0 d   d     o   0 n  nn     *
  13. 00008 0000               ;* a   a ddod  dddd       000  n   n     *
  14. 00009 0000               ;*                                       *
  15. 00010 0000               ;* l      000   aaa  dddd  eeeee rrrr    *
  16. 00011 0000               ;* l     0   0 a   a d   d e     r   r   *
  17. 00012 0000               ;* l     0   0 a   a d   d e     r   r   * 
  18. 00013 0000               ;* l     0   0 aaaaa d   d eeee  rrrr    *
  19. 00014 0000               ;* l     o   o a   a d   d e     r   r   *
  20. 00015 0000               ;* lllll  000  a   a dddd  eeeee r   r   * 
  21. 00016 0000               ;*                                       *
  22. 00017 0000               ;*****************************************
  23.  
  24. 00019 0000               ;*****************************************
  25. 00020 0000               ;*                                       *
  26. 00021 0000               ;*  64k-add-on loader                    *  
  27. 00022 0000               ;*                                       *
  28. 00023 0000               ;*  this program inputs a file name from *  
  29. 00024 0000               ;*  the keyboard and attempts to load    *
  30. 00025 0000               ;*  that program into add-on ram selected*  
  31. 00026 0000               ;*  by control register value %10000000. *  
  32. 00027 0000               ;*  a cbm disk unit #8 is assumed. an    *
  33. 00028 0000               ;*  auto start is attempted through      *  
  34. 00029 0000               ;*  ($fffc).  a null file name terminates*  
  35. 00030 0000               ;*  this program.                        *
  36. 00031 0000               ;*                                       *
  37. 00032 0000               ;*  2feb81 rjf         29julbi rjf       *
  38. 00033 0000               ;*  cbm part # 118002 rev b              *
  39. 00034 0000               ;*                                       *
  40. 00035 0000               ;*****************************************
  41.  
  42.  
  43. equates......page 0002
  44.  
  45. line# loc   code        line
  46.  
  47. 00037 0000                      * =o 
  48. 00o38 0000               memmap *=*+1           ;c0py of add-on req    
  49.  
  50. 00040 0001               ;equates for basic 4.0 
  51. 00041 0001               ; 
  52. 00042 0001               buf    =$200 
  53. 00043 0001               fnadr  =$da 
  54. 00044 0001               fnlen  =$d1 
  55. 00043 0001               status =$96
  56. 00046 0001               fa     =$d4 
  57. 00047 0001               sa     =$d3 
  58. 00040 0001               rclrch =$f2a6 
  59. 00049 0001               rlistn =$f0d5 
  60. 00050 0001               rsecnd =$f143 
  61. 00051 0001               rciout =$f19e 
  62. 00052 0001               runlsn =$f1b9 
  63. 00053 0001               rtalk  =$f0d2 
  64. 00054 0001               rtksa  =$f193 
  65. 00053 0001               racptr =$f1co 
  66. 00056 0001               runtlk =$f1ae 
  67. 00057 0001               ropeni =$f4a5
  68.  
  69. init 2-12-81......page 0003
  70.  
  71. line# loc   code        line
  72.  
  73. 00059 0001               ;  
  74. 00060 0001                      *=1024  
  75. 00061 0400               sys    =158            ;basic token value  
  76. 00062 0400               ;
  77. 00063 0400               ;enter compiled basic text 
  78. 00064 0400               ;
  79. 00065 0400 00                   .byt 0 
  80. 00066 0401 00 04                .wor init-2 
  81. 00067 0403 10 00                .wor $10 
  82. 00068 0405 9e                   .byt sys 
  83. 00069 0406 28 31                .byt '(1039)',0,0,0 
  84. 00069 040c 00 
  85. 00069 0400 00 
  86. 00069 040e 00 
  87. 00070 040f               ;
  88. 00071 040f               ;setupt file load parms
  89. 00072 040f               ;
  90. 00073 040f a9 bo         init   lda #%10000000
  91. 00074 0411 85 00                sta memmap 
  92. 00075 0413               ;
  93. 00076 0413 ao 17                ldy #ms2-ms1
  94. 00077 0415 20 90 05             jsr msg         ;type entry message  
  95. 00078 0419               ;
  96. 00079 0418 a9 00         init10 lda #<buf  
  97. 00080 041a 85 da                sta fnadr  
  98. 00081 041c a9 02                lda #>buf  
  99. 00082 04Le 85 db                sta fnadr+1     ;place for file name 
  100. 00083 0420               ;
  101. 00084 0420 a9 o8                lda #8  
  102. 00085 0422 05 04                sta fa          ;device #8  
  103. 00086 0424               ;
  104. 00087 0424               ;input file name from screen to buf  
  105. 00088 0424               ;
  106. 0o089 0424 a2 00                ldx #0  
  107. 00090 0426 20 cf ff      init20 jsr $ffcf  
  108. 00091 0429 c9 od                cmp #$d  
  109. 00092 042b fo 06                beq init30  
  110. 00093 0420 9d 00 02             sta buf,x  
  111. 20094 0430 e8                   inx  
  112. 20095 0431 do f3                bne init20  
  113. 00096 0433               ;
  114. 00097 0433 86 di         init30 stx fnlen  
  115. 00098 0435 a9 od                lda #$d
  116. 00099 0437 20 d2 ff             jsr $ffd2       ;echo cr  
  117. 00100 043a               ;
  118. 00101 043a a5 dL                lda fnlen  
  119. 00102 043c 00 01                bne init40      ;name was not null  
  120. 00103 043e               ;
  121. 00104 043e 60                   rts  
  122. 00105 043f               ; 
  123. 00106 043f 78            init40 sei             ;protects add-on  
  124. 00107 0440               ;
  125.  
  126.  
  127. load 2-12-81......page 0004
  128.  
  129. line# loc   code        line
  130.  
  131. 00109 0440               ;
  132. 00110 0440 a9 00         load   lda #0
  133. 00111 0442 85 96                sta status
  134. 00112 0444               ;
  135. 00113 0444 a9 60                lda #$60
  136. 20114 0446 95 03                sta sa          ;special load command
  137. 00115 0448               ;
  138. 00116 0445 20 3d 05             jsr openi       ;open the file
  139. 00117 0449               ;
  140. 00118 0448 a5 d4                lda fa
  141. 00119 0440 20 ff 04             jsr talk        ;establish channel
  142. 00120 0450               ;
  143. 00121 0450 a5 03                lda sa
  144. 00122 0452 20 of 05             jsr tksa        ;tell it to load
  145. 00123 0455               ;
  146. 00124 0455 20 1f 05             jsr acptr       ;get first byt
  147. 00123 0459 bd 79 04             sta eal         ;load address low
  148. 00126 0459               ;
  149. 00127 0458 a5 96                lda status
  150. 00129 0450 4a                   lsr a
  151. 00129 04se 4a                   lsr a
  152. 00130 045f bo 41                bcs ld90        ;file not found
  153. 00131 0461               ;
  154. 00132 0461 20 1f 05             jsr acptr
  155. 00133 0464 od 79 04             sta eah         ;load address high
  156. 00134 0467               ;
  157. 00135 0467 a9 fd         ld40   lda #$fd        ;mask off timeout
  158. 00136 0469 25 96                and status
  159. 00137 046b e35 96               sta status
  160. 00139 0460               ;
  161. 00139 0460 20 1f 05      ld45   jsr acptr       ;data byte
  162. 00140 0470 aa                   tax
  163. 00141 0471 a5 96                lda status      ;timeout?
  164. 00142 0473 4a                   lsr a
  165. 00143 0474 4a                   lsr a
  166. 00144 0475 80 fo                bcs ld40        ;yes...try again
  167. 00145 0477               ;
  168. 00146 0477               eal    =*+1
  169. 00147 0477               eah    =*+2
  170. 00149 0477 8e 00 fo             stx $f000       ;operand is self modify
  171. 00149 047a               ;
  172. 00150 047a ee 79 04      ld60   inc eal         ;inc store address
  173. 00151 0470 do 03                bne ld70
  174. 00152 047f ee 79 04             inc eah
  175. 00153 0492               ;
  176. 00154 0482 24 96         ld70   bit status      ;eoi?
  177. 00155 0484 50 e1                bvc ld40        ;no...
  178. 00156 0436               ;
  179. 00157 0486 20 2f 05             jsr untlk       ;close channel
  180. 00159 0489               ;
  181. 00159 0489               ;close file
  182. 00160 0499               ;
  183. 00161 0489 a5 04                lda fa
  184. 00162 0480 20 c1 04             jsr listn
  185. 00163 04be               ;
  186.  
  187.  
  188. load 2-12-81......page 0005
  189.  
  190. line# loc   code        line
  191.  
  192. 00164 04se a5 d3                lda sa
  193. 00165 0490 29 ef                and #$ef  
  194. 00166 0492 09 eo                ora #$eo  
  195. 00167 0494 20 di 04             jsr secnd  
  196. 00169 0497               ;
  197. 00169 0497 20 fi 04             jsr unlsn  
  198. 00170 049a               ;
  199. 00171 049a               ;i/0 peek,screen peek  
  200. 00172 049a               ;and write protect blocks  
  201. 00173 049a               ;
  202. 00174 049a a9 e3                lda #%11100011  
  203. 00175 049c bd fo ff             sta $fff0  
  204. 00176 049f               ;
  205. 00177 049f 6c fc ff             jmp ($fffc)  
  206. 00178 04a2               ;
  207. 00179 04a2 20 93 04      ld90   jsr clrch  
  208. 0018o 04a5 a9 00                lda #%00000000  
  209. 00181 04a7 od fo ff             sta #$fff0      ;map back to rom  
  210. 00182 04aa               ;
  211. 00183 04aa a0 00                ldy #ms1-ms1  
  212. 00184 04ac 20 90 05             jsr msg         ;file not found error
  213. 00185 04af               ;
  214. 00186 04af 5A                   cli  
  215. 00187 04b0 4c 19 04             jmp init10      ;retry
  216.  
  217.  
  218. subs 2-12-81......page 0006
  219. line# loc   code        line
  220.  
  221. 00189 04b3               ;
  222. 00190 0483 a9 00         clrch  lda #0 
  223. 00191 0495 bd fo ff             sta $fff0 
  224. 00192 0488 20 a6 f2             jsr rclrch 
  225. 00193 048b a5 00                lda memmap 
  226. 30194 04bd bd fo ff             sta $fff0 
  227. 00195 04c0 60                   rts
  228.  
  229. 00197 04c1 85 d4         listn  sta fa 
  230. 00199 04c3 a9 00                lda #0 
  231. 00199 04c5 bd fo ff             sta $fff0 
  232. 00200 04c9 20 d5 fo             jsr rlistn 
  233. 00201 04cb a5 00                lda memmap 
  234. 00202 04cd bd fo ff             sta $fff0 
  235. 00203 04d0 60                   rts
  236.  
  237. 00205 04d1 48            secnd  pha 
  238. 00206 0402 a9 00                lda #0 
  239. 00207 04d4 bd fo ff             sta $fff0 
  240. 00208 04d7 68                   pla 
  241. 00209 04d8 20 43 fL             jsr rsecnd 
  242. 00210 04d9 a5 00                lda memmap 
  243. 00211 04d0 50 fo ff             sta $fff0 
  244. 00212 04e0 60                   rts
  245.  
  246. 00214 04e1 49            ciout  pha 
  247. 00215 04e2 a9 00                lda #0 
  248. 00216 04e4 00 fo ff             sta $fff0 
  249. 00217 04e7 68                   pla 
  250. 00218 04e8 20 9e fL             jsr rciout 
  251. 00219 04eb a5 00                lda memmap 
  252. 00220 04eu bd fo ff             sta $fff0 
  253. 00221 04f0 60                   rts
  254.  
  255. 00223 04f1               unlsn 
  256. 00224 04f1 a9 00                lda #0 
  257. 00225 04f3 bd fo ff             sta $fff0 
  258. 00226 04f6 20 b9 fL             jsr runlsn 
  259. 00227 04f9 a5 00                lda memmap
  260.  
  261.  
  262. subs 2-12-81......page 0007
  263.  
  264. line# loc   code        line
  265.  
  266. 00228 04f9 bd fo ff             sta $fff0
  267. 00229 04fe 60                   rts
  268.  
  269. 00231 04ff 95 d4         talk   sta fa
  270. 00232 0501 a9 00                lda #0
  271. 00233 0503 bd fo ff             sta $fff0
  272. 00234 0506 20 d2 fo             jsr rtalk
  273. 00235 0509 a5 00                lda memmap
  274. 00236 0509 bd fo ff             sta $fff0
  275. 00237 050e 60                   rts
  276.  
  277. 00239 050f 49            tksa   pha
  278. 00240 0510 a9 00                lda #0
  279. 00241 0512 bd fo ff             sta $fff0
  280. 00242 0515 69                   pla
  281. 00243 0516 20 93 fi             jsr rtksa
  282. 00244 0519 a5 00                lda memmap
  283. 00245 0510 bd fo ff             sta $fff0
  284. 00246 05Le 60                   rts
  285.  
  286. 00249 O51f               acptr  
  287. 00249 051f a9 00                lda #0
  288. 00250 0521 od fo ff             sta $fff0
  289. 00251 0524 20 co fi             jsr racptr
  290. 00252 0527 48                   pha
  291. 00253 0528 a5 00                lda memmap
  292. 00254 052a bd fo ff             sta $fff0
  293. 00255 0520 6b                   pla
  294. 00256 052e 60                   rts
  295.  
  296. 0025b 052f               untlk
  297. 00259 052f a9 00                lda #0
  298. 00260 0531 bd fo ff             sta $fff0
  299. 00261 0534 20 ae fi             jsr runtlk
  300. 00262 0537 a5 00                lda memmap
  301. 00283 0539 8d f0 ff             sta $fff0
  302. 00284 053c 60                   rts
  303.  
  304.  
  305. subs 2-12-81......page 0008
  306.  
  307. line# loc   code        line
  308.  
  309. 00266 0530 48            openi  pha  
  310. 00267 053e a9 00                lda #0  
  311. 00268 0540 bd fo ff             sta $fff0  
  312. 00269 0543 69                   pla   
  313. 00270 0544 20 a5 f4             jsr ropeni  
  314. 00271 0547 79                   sei  
  315. 00272 0548 a5 00                lda memmap  
  316. 00273 054a 00 fo ff             sta $fff0  
  317. 00274 0540 60                   rts
  318.  
  319. 00276 054e 00            ms1    .byt $d,'?file not found error',$8d 
  320. 00276 054f 3f 46 
  321. 00276 0564 00 
  322. 00277 0565 00            ms2    .byt $d,18 
  323. 00277 0566 12 
  324. 00273 0567 36 34                .byt '64k add-on-loader 2-12-81' 
  325. 00279 0580 00                   .byt $d,$d,$d
  326. 00279 0581 00 
  327. 00279 0592 00 
  328. 00280 0583 53 39                .byt 'system name?',$ao 
  329. 00290 059f ao 
  330. 00291 0590 b9 90 05      msg    lda msg,y 
  331. 00282 0593 08                   php 
  332. 00293 0594 29 7f                and #$7f 
  333. 00294 0596 20 02 ff             jsr #$ffd2 
  334. 00295 0599 c8                   iny 
  335. 00296 059a 29                   plp 
  336. 00297 059b 10 f3                bpl msg 
  337. 00298 0590 60                   rts 
  338. 00299 059e                      .end   
  339.  
  340. errors = 00000   
  341.  
  342. symbol table
  343.  
  344. symbol value  
  345.  acptr     051f    buf       0200    ciout     04e1    clrch     04b3  
  346.  eah       0479    eal       0478    fa        00d4    fnadr     ooda  
  347.  fnlen     0001    init      040f    init10    0418    init20    0426  
  348.  init30    0433    init40    043f    ld40      0467    ld45      046d  
  349.  ld60      047a    ld70      0482    ld90      04a2    listn     04c1  
  350.  load      0440    memmap    0000    ms1       054e    ms2       0565  
  351.  msg       0590    openi     053d    racptr    f1c0    rciout    f19e  
  352.  rclrch    f2a6    rlistn    f0d5    ropeni    f4a5    rsecnd    f143  
  353.  rtalk     f0d2    rtksa     f193    runlsn    f1b9    runtlk    f1ae  
  354.  sa        00d3    secnd     04d1    status    0096    sys       009e  
  355.  talk      04ff    tksa      050f    unlsn     04f1    untlk     052f
  356.  
  357. end of assembly
  358.  
  359.  
  360.