diff --git a/src/hw.diskii.a b/src/hw.diskii.a new file mode 100644 index 0000000..f24caf6 --- /dev/null +++ b/src/hw.diskii.a @@ -0,0 +1,36 @@ +;------------------------------- +; ScanForDiskII +; scan all slots for things that look like Disk II cards +; +; in: X = 0 +; Y = 0 +; out: DiskIIArray populated +; X = 0 +; all other registers and flags clobbered +;------------------------------- +!macro ScanForDiskII { + ;X=0,Y=0 + stx cmp1 + ldx #$07 +- txa + ora #$C0 + sta cmp1+1 + ldy #$01 + lda (cmp1), y + cmp #$20 + bne + + ldy #$03 + lda (cmp1), y + bne + + ldy #$05 + lda (cmp1), y + cmp #$03 + bne + + ldy #$FF + lda (cmp1), y + bne + + tya + sta DiskIIArray-1, x ++ dex + bne - +} diff --git a/src/initscan.a b/src/hw.harddisk.a similarity index 84% rename from src/initscan.a rename to src/hw.harddisk.a index a25595a..d994d31 100644 --- a/src/initscan.a +++ b/src/hw.harddisk.a @@ -4,53 +4,17 @@ SlashRAM_e RAMFileName !raw "PASSPORTTMP.DSK" RAMFileName_e -;------------------------------- -; ScanForDiskII -; scan all slots for things that look like Disk II cards -; -; in: none -; out: DiskIIArray populated -; all registers and flags clobbered -;------------------------------- -ScanForDiskII - lda #$00 - sta cmp1 - ldx #$07 -- txa - ora #$C0 - sta cmp1+1 - ldy #$01 - lda (cmp1), y - cmp #$20 - bne + - ldy #$03 - lda (cmp1), y - bne + - ldy #$05 - lda (cmp1), y - cmp #$03 - bne + - ldy #$FF - lda (cmp1), y - bne + - tya - sta DiskIIArray-1, x -+ dex - bne - - rts - ;------------------------------- ; ScanForRAMAndHardDisks ; scan all slots for things that look like RAM disks or hard drives ; -; in: none +; in: X=0 ; out: HardDriveArray populated ; RAMDiskImagePath possibly populated (if a suitable RAM disk was found) ; all registers and flags clobbered ;------------------------------- ScanForRAMAndHardDisks - lda #$00 - sta iunit + stx iunit @nextunit lda iunit clc diff --git a/src/wrapper.a b/src/wrapper.a index 8139081..128fbd8 100644 --- a/src/wrapper.a +++ b/src/wrapper.a @@ -6,6 +6,7 @@ !source "apidefs.a" !source "strings/enid.a" !source "prefs.load.a" + !source "hw.diskii.a" !source "../build/vars.a" bit $C082 ; read ROM, no write @@ -42,12 +43,13 @@ OneTimeSetup inc $F1 dex bne - + ;X=0,Y=0 - ldy #0 ; save a copy of ProDOS system global page -- lda $BF00, y ; (will be copied back and forth by SwapProDOS later) - sta $0F00, y +- lda $BF00, y ; save a copy of ProDOS system global page + sta $0F00, y ; (will be copied back and forth by SwapProDOS later) iny bne - + ;X=0,Y=0 lda $FBB3 ; ROM MachineID cmp #$EA ; ][+? @@ -55,7 +57,9 @@ OneTimeSetup lda #$DF ; AND mask to force characters to uppercase on ][+ sta kForceLower + - jsr ScanForDiskII ; scan slots for Disk II drives + ;X=0,Y=0 + +ScanForDiskII ; scan slots for Disk II drives + ;X=0 lda DiskIIArray+5 bne + jsr PrintByID ; no Disk II in slot 6, this is fatal @@ -63,6 +67,7 @@ OneTimeSetup jsr WaitForKey jmp CleanExit + + ;X=0 jsr ScanForRAMAndHardDisks; scan for things that look like RAM disks or hard disks +LoadPrefs ; load preferences (if available) jsr ThisSlot ; get information about selected drive and set gTargetType for main menu @@ -80,7 +85,7 @@ OneTimeSetup jmp MainMenu - !source "initscan.a" + !source "hw.harddisk.a" SHOW_PROGRESS_DURING_DECRUNCH = 1 ; activates optional UI code in exodecrunch