home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.sys.cbm      Discussion about Commodore micros      53,866 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 51,887 of 53,866   
   Anssi Saari to Ross Ridge   
   Re: C64/1541 copy: have disk, need file!   
   14 Mar 17 09:39:42   
   
   From: as@sci.fi   
      
   rridge@csclub.uwaterloo.ca (Ross Ridge) writes:   
      
   > Anssi Saari   wrote:   
   >>Yes, presumably. But it's just a little bit hard to do I/O if you switch   
   >>I/O out of your memory space so that's not the thing to do, exactly.   
   >   
   > You can either swap the I/O space in and out as each byte is read or   
   > keep it mapped and have 4K less RAM to store the program.   
   >   
   >>One could use RAM to RAM copy to fill the RAM under I/O. But I wonder,   
   >>Pekka's routine was just 40 bytes using ROM routines so 6.5K (or 5.5K   
   >>since the program was actually copy 58.5k) RAM seems excessive.   
   >   
   > I'm assuming it would be using some sort of "fastloader" code to improve   
   > speed so it wouldn't use the kernal ROM.   
      
   The program is 1983 vintage and doesn't seem to use a fastloader or   
   compression. Disk is read and written a byte at a time using kernal's   
   ACPTR and CIOUT routines. The program is delightfully straightforward:   
   it starts by setting screen and border colors, then puts a preformatted   
   message on screen and starts polling for keyboard input.   
      
   After going through the disassembly I eventually found the code which   
   reads a byte from RAM ($0d19) and writes a byte to RAM ($0d08):   
      
   0d00: S0d00         sei   
   0d01:               ldy #$34   
   0d03:               sty $01   
   0d05:               ldy #$00   
   0d07:               rts   
   0d08: S0d08         jsr S0d00   
   0d0b:               sta ($22),y   
   0d0d: L0d0d         inc $22   
   0d0f:               bne L0d13   
   0d11:               inc $23   
   0d13: L0d13         ldy #$37   
   0d15:               sty $01   
   0d17:               cli   
   0d18:               rts   
   0d19: S0d19         jsr S0d00   
   0d1c:               lda ($22),y   
   0d1e:               jmp L0d0d   
      
   So, in the end that's all there is to it... Disable interrupts, switch   
   ROMs and I/O out. Display is blanked during disk reading and writing   
   too. Still not quite clear why the size limit is 58.5K but for copying a   
   whole disk in three passes it's enough. Limit for number of files seems   
   to be 32.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca