passport/src/wrapper.a

86 lines
3.1 KiB
Plaintext
Raw Normal View History

!cpu 6502
*=$2000
!to "../build/PASSPORT.SYSTEM",plain
2021-06-16 17:57:30 +00:00
!source "../build/vars.a" ; no code in here
2019-06-15 19:23:02 +00:00
2021-06-16 17:57:30 +00:00
bit $C082 ; read ROM, no write
sta $C00E ; primary character set
sta $C00C ; 40 columns
sta $C000 ; 80STORE off
sta $C002 ; read main memory
jsr $FB2F ; TEXT
jsr $FC58 ; HOME
jsr $FE84 ; NORMAL
jsr $FE93 ; PR#0
jsr $FE89 ; IN#0
lda $BF98 ; ProDOS MachineID
and #$20 ; at least 64K?
2021-04-19 14:44:51 +00:00
bne OneTimeSetup
jsr $BF00 ; immediately quit on 48K machine
!byte $65 ; (but congratulations on launching Passport at all)
2019-08-27 17:53:01 +00:00
!word quit
quit !byte 4
2021-04-19 14:44:51 +00:00
OneTimeSetup
jsr $FE89 ; PR#0
jsr $FE93 ; IN#0
2021-04-19 14:44:51 +00:00
jsr decrunch ; decompress main Passport code
sty $FE ;;zp_dest_lo = low byte of Passport entry point
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
iny
bne -
lda $FBB3 ; ROM MachineID
cmp #$EA ; ][+?
bne +
lda #$DF ; AND mask to force characters to uppercase on ][+
sta kForceLower
+
jsr ScanForDiskII ; scan slots for Disk II drives
lda DiskIIArray+5
bne +
jsr PrintByID ; no Disk II in slot 6, this is fatal
!byte s_noslot6
jsr WaitForKey
jmp CleanExit
+
jsr ScanForRAMAndHardDisks; scan for things that look like RAM disks or hard disks
jsr LoadPrefs ; load preferences (if available)
2021-06-16 17:57:30 +00:00
jsr ThisSlot ; get information about selected drive and set gTargetType for main menu
lda #<CheckCache ; set up output hook used to store log messages before they scroll off
2021-04-20 20:02:07 +00:00
sta $36
lda #>CheckCache
sta $37
2021-06-16 17:57:30 +00:00
lda $FE ; set reset vector
sta $03F2
lda $FF
sta $03F3
eor #$A5
sta $03F4
2021-06-12 00:55:18 +00:00
jmp ($FE) ; jump to decompressed code (MainMenu)
!source "apidefs.a"
!source "strings/enid.a"
!source "initscan.a"
SHOW_PROGRESS_DURING_DECRUNCH = 1 ; activates optional UI code in exodecrunch
!source "exodecrunch.s"
get_crunched_byte
lda _byte_lo
bne _byte_skip_hi
dec _byte_hi
_byte_skip_hi
dec _byte_lo
_byte_lo = * + 1
_byte_hi = * + 2
lda packend ; needs to be set correctly before decrunch_file is called
rts
!bin "../build/passport.pak"
!word HIGHPOINT
packend