lea dos_name,a1 move.l 4.l,a6 jsr -408(a6) move.l d0,_DOSBase move.l #512*1024,d0 moveq #0,d1 move.l 4.l,a6 jsr -198(a6) move.l d0,datablock tst.l d0 beq end move.l datablock,a0 move.w #32-1,d7 dp1: move.w #16384-1,d6 dp2: move.b #0,(a0)+ dbra d6,dp2 dbra d7,dp1 move.b $bfd200,d0 move.b d0,old_dir ; parallel port status (sel, pout, busy) to output ; sel = pin 13 ; pout = pin 12 ; busy = pin 11 or.b #%111,d0 move.b d0,$bfd200 ; parallel port pins to input move.b #%00,$bfe301 ; reset counters move.b #%111,$bfd000 rept 20 nop endr ; read data move.l datablock,a0 moveq #0,d3 move.w #32-1,d7 block2: move.w #16384-1,d6 block: move.b $bfd200,d0 or.b #%111,d0 move.b d0,$bfd200 ; parallel port pins to input move.b #%00,$bfe301 ; read byte from parallel port move.b $bfe101,d0 ; write byte to buffer move.b d0,(a0)+ move.b #%110,$bfd000 ;; 13=bottom = sel, 12=top = pout ; sel done move.b #%000,d0 ; say no pout or.b #%010,d0 addq.w #1,d3 cmp.w #$1000,d3 bne kl moveq #0,d3 ; we do want a pout moveq #$0,d0 kl: move.b d0,$bfd000 dbra d6,block dbra d7,block2 ; write output file move.l #filename,d1 move.l #1006,d2 move.l _DOSBase,a6 jsr -30(a6) move.l d0,fh move.l fh,d1 move.l datablock,d2 move.l #512*1024,d3 jsr -48(a6) move.l fh,d1 jsr -36(a6) move.l datablock,a1 move.l #512*1024,d0 move.l 4.l,a6 jsr -210(a6) end: move.l _DOSBase,a1 jsr -414(a6) rts dos_name: dc.b "dos.library",0 _DOSBase: dc.l 0 filename: dc.b "cartdata.bin",0 even fh: dc.l 0 old_dir: dc.b 0 even old_intena: dc.w 0 even datablock: dc.l 0