GRAB.S (2366B)
1 * grab 2 org = $4400 3 lst off 4 *------------------------------- 5 * 6 * Grab hi-res screen from side 2 of game disk, tracks 22-23 7 * 8 *------------------------------- 9 * 10 * To use from BASIC: 11 * 12 * BLOAD data into main mem 13 * 14 * TrackNo = track # (0-34) 15 * DriveNo = drive # (1-2) 16 * 17 * G = 17408 ($4400) 18 * poke G+3,TrackNo 19 * poke G+4,DriveNo 20 * call G 21 * 22 *------------------------------- 23 org org 24 25 jmp grab 26 27 TrackNo ds 1 28 DriveNo ds 1 29 30 zerosave ds $10 31 32 *------------------------------- 33 rw18buf = $4800 ;length $800 34 endrwbuf = $5000 35 36 temp18buf = $4800 ;length $1200 37 endtempbuf = $5a00 38 39 rw18 = $d000 40 41 floppyslot = 6 42 43 BbundID = $ad 44 45 slot = $fd 46 ztrack = $fe 47 48 *------------------------------- 49 dum $f0 50 51 obj_lo ds 1 52 obj_hi ds 1 53 dst_lo ds 1 54 dst_hi ds 1 55 len_lo ds 1 56 len_hi ds 1 57 flushflag ds 1 58 59 dend 60 61 *------------------------------- 62 * 63 * G R A B 64 * 65 *------------------------------- 66 grab 67 68 * save zero page vars 69 70 ldx #$f 71 :loop lda $f0,x 72 sta zerosave,x 73 dex 74 bpl :loop 75 76 * move rw18 to l.c. 77 78 sta $c083 ;read/write RAM 79 80 lda #>rw18 81 ldx #>rw18buf 82 ldy #>endrwbuf 83 84 jsr movemem 85 86 * grab data 87 88 jsr grab18 89 90 * Done--restore zero page vars 91 92 ldx #$f 93 :loop2 lda zerosave,x 94 sta $f0,x 95 dex 96 bpl :loop2 97 98 ]rts rts 99 100 *------------------------------- 101 * 102 * G R A B 1 8 103 * 104 * In: TrackNo, DriveNo 105 * 106 *------------------------------- 107 grab18 lda $c083 108 lda $c083 ;enable RAM 109 110 * set BbundID 111 112 ldx DriveNo 113 cpx #1 114 beq :1 115 ldx #2 ;default to drive 2 116 :1 stx drive 117 118 jsr rw18 119 db 7,BbundID 120 121 * turn on drive and delay .5 seconds 122 123 ldx #floppyslot*16 124 stx slot 125 126 jsr rw18 127 db 0 128 drive db 2,5 129 130 * seek first track 131 132 lda TrackNo 133 sta track 134 135 jsr rw18 136 db 2,1 137 track db 0 138 139 * Load in 2 tracks at $2000 140 141 jsr loadhr 142 143 * turn off drive 144 145 :done jsr rw18 146 db 1 147 148 * out of here! 149 150 sta $c082 151 152 rts 153 154 *------------------------------- 155 * 156 * load hires scrn 157 * 158 *------------------------------- 159 loadhr 160 jsr rw18 161 hex c3,20 162 163 jsr rw18 164 hex c4 165 hex 32,33,34,35,36,37,38,39,3a 166 hex 3b,3c,3d,3e,3f,00,00,00,00 167 168 rts 169 170 *------------------------------- 171 * 172 * Move a block of memory 173 * 174 *------------------------------- 175 dum $f0 176 177 dest ds 2 178 source ds 2 179 endsourc ds 2 180 181 dend 182 183 movemem sta dest+1 184 stx source+1 185 sty endsourc+1 186 187 ldy #0 188 sty dest 189 sty source 190 sty endsourc 191 192 :loop lda (source),y 193 sta (dest),y 194 195 iny 196 bne :loop 197 198 inc source+1 199 inc dest+1 200 201 lda source+1 202 cmp endsourc+1 203 bne :loop 204 205 rts 206 207 *------------------------------- 208 sav grab