> SCSItoIDE 1.10 : 6"Copy data from SCSI drive to IDE drive"'38,"=") (q"IDE base address must be set to &FC50."'"This can be done by swapping A4 and A6"'" on the 1MHz bus cable."' 2: &200000:ide_max%=&200000 7"IDE drive size will be set to ";ide_tot%/4096;"M" ("Press RETURN to start"A$:11;28; >ptr%=0:len%=scsi_tot%-ptr%:len%*256>size%:len%=size%256 :13;"Reading &";~ptr%;:scsi_Rd(mem%,len%,ptr%,scsi%) 6" Writing &";~ptr%;:ide_Wr(mem%,len%,ptr%,ide%) #ptr%=ptr%+len%:ptr%>=scsi_tot% '13;28;13;"Amending drive size"; Gide_Rd(mem%,2,0,dev%):mem%!252=ide_max% : Change disk size ptr%=mem%?&1FE Jptr%:mem%!(&100+ptr%-3)=ide_max%-mem%!(ptr%-3) : Add to free space Omem%?&0FF=adfs_sum(mem%):mem%?&1FF=adfs_sum(mem%+256): Recalc. checksums ide_Wr(mem%,2,0,dev%) 13;28;13;"Finished" " ,: 6: @6ݤfx(A%,X%): Y%:Y%=X%256:=((&FFF4)&FFFF00)256 J: T$ݤadfs_sum(mem%): sum%:sum%=255 ^. A%=254 0 -1:sum%=(sum%+sum%256)255 h!sum%=sum%+mem%?A%::=sum%255 r: |&scsi_id:scsi_Rd(mem%,2,0,scsi%) "scsi_tot%=mem%!252 &FFFFFF: : -scsi_Rd(mem%,len%,lau%,dev%):scsi(8): .scsi_Wr(mem%,len%,lau%,dev%):scsi(10): : 0scsi(action%):?X%=0:X%!1=mem%:X%?5=action% IX%?6=((lau%&FF0000)65536)(dev%*32):X%?7=(lau%&FF00)256:X%?8=lau% %X%?9=len%:X%!10=0:A%=&72:&FFF1: : : #ide_Rd(mem%,len%,lau%,dev%): v!addr%=mem%:sec%?2=lau%:sec%?1=(lau%&FF00)256:sec%?0=((lau%&FF0000)65536)(dev%*64):?num%=1:num%?1=sz%:A%=rd% 3mem%=mem%+256:len%=len%-1:lau%=lau%+1:len%<1: : #ide_Wr(mem%,len%,lau%,dev%): v!addr%=mem%:sec%?2=lau%:sec%?1=(lau%&FF00)256:sec%?0=((lau%&FF0000)65536)(dev%*64):?num%=1:num%?1=sz%:A%=wr% &3mem%=mem%+256:len%=len%-1:lau%=lau%+1:len%<1: 0: :ide_id: A% D/ A%=0 255 4:mem%!A%=0:mem%!(A%+256)=0: N+!addr%=mem%:A%=dev%*16:num%?1=sz%: id% XBsz%=0: A%=255 0 -1:mem%?(A%*2+1)=0:mem%?(A%*2)=mem%?A%: b:big%=:mem%?&74=0:big%=:mem%?&74=mem%?&72:mem%?&72=0 lmem%?&3+mem%?&6D+mem%?&73=0:mem%?&6D=mem%?&74:mem%?&73=mem%?&6C:tot%=(256*mem%?&6D+mem%?&6C)*mem%?&6E*mem%?&70:mem%?&3=(tot%((mem%?6)*(mem%?12)))256 v6ide_tot%=(256*mem%?&6D+mem%?&6C)*mem%?&6E*mem%?&70 D big%=FALSE:IFmem%?&3A=0:big%=TRUE:mem%?&3A=mem%?&39:mem%?&39=0  IFmem%?&101+mem%?&136+mem%?&139=0:mem%?&136=mem%?&3A:mem%?&139=mem%?&36:tot%=(256*mem%?&136+mem%?&36)*mem%?&37*mem%?&38:mem%?&101=(tot%DIV((mem%?3)*(mem%?6)))DIV256 9 ide_tot%=(256*mem%?&136+mem%?&36)*mem%?&37*mem%?&38  :  ide_Init:ide_Size(64,3): ide_Size(spt%,hds%) "?IDEcount=spt%:?IDEsector=spt% 9?IDEhead=hds%:?IDEcommand=&91: Initialise parameters  : ide_Assm 8mc%=mc%:mc%=0: mc% 511:addr%=&80:sec%=&85:num%=&88 ?IDEbase=&FC50: *** IDE interface address links changed ***  OIDEdata=IDEbase+0:IDEerror=IDEbase+1:IDEcount=IDEbase+2:IDEsector=IDEbase+3 TIDEcylinder=IDEbase+4:IDEhead=IDEbase+6:IDEstatus=IDEbase+7:IDEcommand=IDEbase+7  $sz%=0:!IDEdata<>IDEdata!8:sz%=1 * P=0 1 4P%=mc%:[OPT P*2 >.id% H TAY:.idlp RLDA &FF:BMI idescape \LDA IDEstatus:BMI idlp f%TYA: #16:STA IDEhead :\ Device p-LDA #&EC :STA IDEcommand :\ &EC=Identify zLDY #0:LDX #1:STX num% CLC:JMP TransferLoop  .idescape RTS : .WaitForData &LDA IDEstatus: #8:BEQ WaitForData LDA IDEstatus:RTS : .WaitNotBusy 6PHP:JSR L806F :\ Get IDE status ; #&80:BNE WaitNotBusy+1:PLP :\ Wait for IDE not busy BIT &CC:RTS :  .L806F PHP:LDA IDEstatus:STA &8D %LDA IDEstatus:CMP &8D:BNE L806F+1 $ PLP:RTS .: 8..rd%:LDA #&08:STA &84:CLC:BCC CommandStart B..wr%:LDA #&0A:STA &84:SEC:BCS CommandStart L: V;.CommandStart :\ C=R/W, &8E/F=>block `4LDA #&7F:STA &8E:LDA #0:STA &8F :\ &8E/F=>block jPHP:JSR SetGeometry:PLP t.CommandLoop ~LDX #2:.Twice BJSR SetSector:LDY #0 :\ Set sector, count, command .TransferLoop )JSR WaitForData: #&21:BNE TransError \.TransferLoop %BIT &CD:\BVS TransTube:BCC IORead  .IOWrite 7LDA (&80),Y:STA IDEdata:LDA num%+1:BEQ TransferByte :INC &81:LDA (&80),Y:STA &FC48:DEC &81:JMP TransferByte  .IORead 7LDA IDEdata:STA (&80),Y:LDA num%+1:BEQ TransferByte :INC &81:LDA &FC48:STA (&80),Y:DEC &81:JMP TransferByte : .TransferByte  :LDA IDEstatus: #8:BEQ TransError :\ Run out of data ?INY:BNE TransferLoop:\INC &81 :\ Loop for 256 bytes 8LDA IDEstatus: #&21:BNE TransError :\ Error occured (DEX:BNE Twice 2=INC &87:BNE TransCount :\ Increment sector <"INC &86:BNE TransCount:INC &85 F.TransCount PADEC &88:BNE CommandLoop :\ Loop for all sectors Z&20 or CC->&30 @ISTA IDEcommand:PLP:RTS :\ Set command &08 or &0A J: T .SetDrive ^JROL A:ROL A:ROL A: #&13:STA IDEhead:RTS :\ Set device + sector b6-b7 h: r]: