home *** CD-ROM | disk | FTP | other *** search
- add-on-l*......page 0001
-
-
- line# loc code line
-
- 00001 0000 ;*****************************************
- 00002 0000 ;* *
- 00003 0000 ;* aaa dddd dddd ooo n n *
- 00004 0000 ;* a a d d d d o o nn n *
- 00005 0000 ;* a a d d d d *** 0 0 n n n *
- 00006 0000 ;* aaaaa d d d d *** o 0 n n n *
- 00007 0000 ;* a a d 0 d d o 0 n nn *
- 00008 0000 ;* a a ddod dddd 000 n n *
- 00009 0000 ;* *
- 00010 0000 ;* l 000 aaa dddd eeeee rrrr *
- 00011 0000 ;* l 0 0 a a d d e r r *
- 00012 0000 ;* l 0 0 a a d d e r r *
- 00013 0000 ;* l 0 0 aaaaa d d eeee rrrr *
- 00014 0000 ;* l o o a a d d e r r *
- 00015 0000 ;* lllll 000 a a dddd eeeee r r *
- 00016 0000 ;* *
- 00017 0000 ;*****************************************
-
- 00019 0000 ;*****************************************
- 00020 0000 ;* *
- 00021 0000 ;* 64k-add-on loader *
- 00022 0000 ;* *
- 00023 0000 ;* this program inputs a file name from *
- 00024 0000 ;* the keyboard and attempts to load *
- 00025 0000 ;* that program into add-on ram selected*
- 00026 0000 ;* by control register value %10000000. *
- 00027 0000 ;* a cbm disk unit #8 is assumed. an *
- 00028 0000 ;* auto start is attempted through *
- 00029 0000 ;* ($fffc). a null file name terminates*
- 00030 0000 ;* this program. *
- 00031 0000 ;* *
- 00032 0000 ;* 2feb81 rjf 29julbi rjf *
- 00033 0000 ;* cbm part # 118002 rev b *
- 00034 0000 ;* *
- 00035 0000 ;*****************************************
-
-
- equates......page 0002
-
- line# loc code line
-
- 00037 0000 * =o
- 00o38 0000 memmap *=*+1 ;c0py of add-on req
-
- 00040 0001 ;equates for basic 4.0
- 00041 0001 ;
- 00042 0001 buf =$200
- 00043 0001 fnadr =$da
- 00044 0001 fnlen =$d1
- 00043 0001 status =$96
- 00046 0001 fa =$d4
- 00047 0001 sa =$d3
- 00040 0001 rclrch =$f2a6
- 00049 0001 rlistn =$f0d5
- 00050 0001 rsecnd =$f143
- 00051 0001 rciout =$f19e
- 00052 0001 runlsn =$f1b9
- 00053 0001 rtalk =$f0d2
- 00054 0001 rtksa =$f193
- 00053 0001 racptr =$f1co
- 00056 0001 runtlk =$f1ae
- 00057 0001 ropeni =$f4a5
-
- init 2-12-81......page 0003
-
- line# loc code line
-
- 00059 0001 ;
- 00060 0001 *=1024
- 00061 0400 sys =158 ;basic token value
- 00062 0400 ;
- 00063 0400 ;enter compiled basic text
- 00064 0400 ;
- 00065 0400 00 .byt 0
- 00066 0401 00 04 .wor init-2
- 00067 0403 10 00 .wor $10
- 00068 0405 9e .byt sys
- 00069 0406 28 31 .byt '(1039)',0,0,0
- 00069 040c 00
- 00069 0400 00
- 00069 040e 00
- 00070 040f ;
- 00071 040f ;setupt file load parms
- 00072 040f ;
- 00073 040f a9 bo init lda #%10000000
- 00074 0411 85 00 sta memmap
- 00075 0413 ;
- 00076 0413 ao 17 ldy #ms2-ms1
- 00077 0415 20 90 05 jsr msg ;type entry message
- 00078 0419 ;
- 00079 0418 a9 00 init10 lda #<buf
- 00080 041a 85 da sta fnadr
- 00081 041c a9 02 lda #>buf
- 00082 04Le 85 db sta fnadr+1 ;place for file name
- 00083 0420 ;
- 00084 0420 a9 o8 lda #8
- 00085 0422 05 04 sta fa ;device #8
- 00086 0424 ;
- 00087 0424 ;input file name from screen to buf
- 00088 0424 ;
- 0o089 0424 a2 00 ldx #0
- 00090 0426 20 cf ff init20 jsr $ffcf
- 00091 0429 c9 od cmp #$d
- 00092 042b fo 06 beq init30
- 00093 0420 9d 00 02 sta buf,x
- 20094 0430 e8 inx
- 20095 0431 do f3 bne init20
- 00096 0433 ;
- 00097 0433 86 di init30 stx fnlen
- 00098 0435 a9 od lda #$d
- 00099 0437 20 d2 ff jsr $ffd2 ;echo cr
- 00100 043a ;
- 00101 043a a5 dL lda fnlen
- 00102 043c 00 01 bne init40 ;name was not null
- 00103 043e ;
- 00104 043e 60 rts
- 00105 043f ;
- 00106 043f 78 init40 sei ;protects add-on
- 00107 0440 ;
-
-
- load 2-12-81......page 0004
-
- line# loc code line
-
- 00109 0440 ;
- 00110 0440 a9 00 load lda #0
- 00111 0442 85 96 sta status
- 00112 0444 ;
- 00113 0444 a9 60 lda #$60
- 20114 0446 95 03 sta sa ;special load command
- 00115 0448 ;
- 00116 0445 20 3d 05 jsr openi ;open the file
- 00117 0449 ;
- 00118 0448 a5 d4 lda fa
- 00119 0440 20 ff 04 jsr talk ;establish channel
- 00120 0450 ;
- 00121 0450 a5 03 lda sa
- 00122 0452 20 of 05 jsr tksa ;tell it to load
- 00123 0455 ;
- 00124 0455 20 1f 05 jsr acptr ;get first byt
- 00123 0459 bd 79 04 sta eal ;load address low
- 00126 0459 ;
- 00127 0458 a5 96 lda status
- 00129 0450 4a lsr a
- 00129 04se 4a lsr a
- 00130 045f bo 41 bcs ld90 ;file not found
- 00131 0461 ;
- 00132 0461 20 1f 05 jsr acptr
- 00133 0464 od 79 04 sta eah ;load address high
- 00134 0467 ;
- 00135 0467 a9 fd ld40 lda #$fd ;mask off timeout
- 00136 0469 25 96 and status
- 00137 046b e35 96 sta status
- 00139 0460 ;
- 00139 0460 20 1f 05 ld45 jsr acptr ;data byte
- 00140 0470 aa tax
- 00141 0471 a5 96 lda status ;timeout?
- 00142 0473 4a lsr a
- 00143 0474 4a lsr a
- 00144 0475 80 fo bcs ld40 ;yes...try again
- 00145 0477 ;
- 00146 0477 eal =*+1
- 00147 0477 eah =*+2
- 00149 0477 8e 00 fo stx $f000 ;operand is self modify
- 00149 047a ;
- 00150 047a ee 79 04 ld60 inc eal ;inc store address
- 00151 0470 do 03 bne ld70
- 00152 047f ee 79 04 inc eah
- 00153 0492 ;
- 00154 0482 24 96 ld70 bit status ;eoi?
- 00155 0484 50 e1 bvc ld40 ;no...
- 00156 0436 ;
- 00157 0486 20 2f 05 jsr untlk ;close channel
- 00159 0489 ;
- 00159 0489 ;close file
- 00160 0499 ;
- 00161 0489 a5 04 lda fa
- 00162 0480 20 c1 04 jsr listn
- 00163 04be ;
-
-
- load 2-12-81......page 0005
-
- line# loc code line
-
- 00164 04se a5 d3 lda sa
- 00165 0490 29 ef and #$ef
- 00166 0492 09 eo ora #$eo
- 00167 0494 20 di 04 jsr secnd
- 00169 0497 ;
- 00169 0497 20 fi 04 jsr unlsn
- 00170 049a ;
- 00171 049a ;i/0 peek,screen peek
- 00172 049a ;and write protect blocks
- 00173 049a ;
- 00174 049a a9 e3 lda #%11100011
- 00175 049c bd fo ff sta $fff0
- 00176 049f ;
- 00177 049f 6c fc ff jmp ($fffc)
- 00178 04a2 ;
- 00179 04a2 20 93 04 ld90 jsr clrch
- 0018o 04a5 a9 00 lda #%00000000
- 00181 04a7 od fo ff sta #$fff0 ;map back to rom
- 00182 04aa ;
- 00183 04aa a0 00 ldy #ms1-ms1
- 00184 04ac 20 90 05 jsr msg ;file not found error
- 00185 04af ;
- 00186 04af 5A cli
- 00187 04b0 4c 19 04 jmp init10 ;retry
-
-
- subs 2-12-81......page 0006
- line# loc code line
-
- 00189 04b3 ;
- 00190 0483 a9 00 clrch lda #0
- 00191 0495 bd fo ff sta $fff0
- 00192 0488 20 a6 f2 jsr rclrch
- 00193 048b a5 00 lda memmap
- 30194 04bd bd fo ff sta $fff0
- 00195 04c0 60 rts
-
- 00197 04c1 85 d4 listn sta fa
- 00199 04c3 a9 00 lda #0
- 00199 04c5 bd fo ff sta $fff0
- 00200 04c9 20 d5 fo jsr rlistn
- 00201 04cb a5 00 lda memmap
- 00202 04cd bd fo ff sta $fff0
- 00203 04d0 60 rts
-
- 00205 04d1 48 secnd pha
- 00206 0402 a9 00 lda #0
- 00207 04d4 bd fo ff sta $fff0
- 00208 04d7 68 pla
- 00209 04d8 20 43 fL jsr rsecnd
- 00210 04d9 a5 00 lda memmap
- 00211 04d0 50 fo ff sta $fff0
- 00212 04e0 60 rts
-
- 00214 04e1 49 ciout pha
- 00215 04e2 a9 00 lda #0
- 00216 04e4 00 fo ff sta $fff0
- 00217 04e7 68 pla
- 00218 04e8 20 9e fL jsr rciout
- 00219 04eb a5 00 lda memmap
- 00220 04eu bd fo ff sta $fff0
- 00221 04f0 60 rts
-
- 00223 04f1 unlsn
- 00224 04f1 a9 00 lda #0
- 00225 04f3 bd fo ff sta $fff0
- 00226 04f6 20 b9 fL jsr runlsn
- 00227 04f9 a5 00 lda memmap
-
-
- subs 2-12-81......page 0007
-
- line# loc code line
-
- 00228 04f9 bd fo ff sta $fff0
- 00229 04fe 60 rts
-
- 00231 04ff 95 d4 talk sta fa
- 00232 0501 a9 00 lda #0
- 00233 0503 bd fo ff sta $fff0
- 00234 0506 20 d2 fo jsr rtalk
- 00235 0509 a5 00 lda memmap
- 00236 0509 bd fo ff sta $fff0
- 00237 050e 60 rts
-
- 00239 050f 49 tksa pha
- 00240 0510 a9 00 lda #0
- 00241 0512 bd fo ff sta $fff0
- 00242 0515 69 pla
- 00243 0516 20 93 fi jsr rtksa
- 00244 0519 a5 00 lda memmap
- 00245 0510 bd fo ff sta $fff0
- 00246 05Le 60 rts
-
- 00249 O51f acptr
- 00249 051f a9 00 lda #0
- 00250 0521 od fo ff sta $fff0
- 00251 0524 20 co fi jsr racptr
- 00252 0527 48 pha
- 00253 0528 a5 00 lda memmap
- 00254 052a bd fo ff sta $fff0
- 00255 0520 6b pla
- 00256 052e 60 rts
-
- 0025b 052f untlk
- 00259 052f a9 00 lda #0
- 00260 0531 bd fo ff sta $fff0
- 00261 0534 20 ae fi jsr runtlk
- 00262 0537 a5 00 lda memmap
- 00283 0539 8d f0 ff sta $fff0
- 00284 053c 60 rts
-
-
- subs 2-12-81......page 0008
-
- line# loc code line
-
- 00266 0530 48 openi pha
- 00267 053e a9 00 lda #0
- 00268 0540 bd fo ff sta $fff0
- 00269 0543 69 pla
- 00270 0544 20 a5 f4 jsr ropeni
- 00271 0547 79 sei
- 00272 0548 a5 00 lda memmap
- 00273 054a 00 fo ff sta $fff0
- 00274 0540 60 rts
-
- 00276 054e 00 ms1 .byt $d,'?file not found error',$8d
- 00276 054f 3f 46
- 00276 0564 00
- 00277 0565 00 ms2 .byt $d,18
- 00277 0566 12
- 00273 0567 36 34 .byt '64k add-on-loader 2-12-81'
- 00279 0580 00 .byt $d,$d,$d
- 00279 0581 00
- 00279 0592 00
- 00280 0583 53 39 .byt 'system name?',$ao
- 00290 059f ao
- 00291 0590 b9 90 05 msg lda msg,y
- 00282 0593 08 php
- 00293 0594 29 7f and #$7f
- 00294 0596 20 02 ff jsr #$ffd2
- 00295 0599 c8 iny
- 00296 059a 29 plp
- 00297 059b 10 f3 bpl msg
- 00298 0590 60 rts
- 00299 059e .end
-
- errors = 00000
-
- symbol table
-
- symbol value
- acptr 051f buf 0200 ciout 04e1 clrch 04b3
- eah 0479 eal 0478 fa 00d4 fnadr ooda
- fnlen 0001 init 040f init10 0418 init20 0426
- init30 0433 init40 043f ld40 0467 ld45 046d
- ld60 047a ld70 0482 ld90 04a2 listn 04c1
- load 0440 memmap 0000 ms1 054e ms2 0565
- msg 0590 openi 053d racptr f1c0 rciout f19e
- rclrch f2a6 rlistn f0d5 ropeni f4a5 rsecnd f143
- rtalk f0d2 rtksa f193 runlsn f1b9 runtlk f1ae
- sa 00d3 secnd 04d1 status 0096 sys 009e
- talk 04ff tksa 050f unlsn 04f1 untlk 052f
-
- end of assembly
-
-
-