small LOAD cleanup
This commit is contained in:
1 parent
05253c3e92
commit
3d9e713f07
20 files changed
+98
-84
No files matched your search
@@ -0,0 +1,54 @@
|
||||
//
|
||||
// Official Kernal routine, described in:
|
||||
//
|
||||
// - [RG64] C64 Programmer's Reference Guide - page 286
|
||||
// - [CM64] Compute's Mapping the Commodore 64 - page 231
|
||||
// - IEC reference at http://www.zimmers.net/anonftp/pub/cbm/programming/serial-bus.pdf
|
||||
//
|
||||
// CPU registers that has to be preserved (see [RG64]): none
|
||||
//
|
||||
|
||||
|
||||
// Expects that SETLFS and SETNAM are called before hand.
|
||||
// $YYXX = load address.
|
||||
// (ignored if SETLFS channel = 1, i.e., like ,8,1)
|
||||
// If A=1 then VERIFY instead of LOAD.
|
||||
// On exit, $YYXX is the highest address into which data
|
||||
// will have been placed.
|
||||
|
||||
// XXX add VERIFY support
|
||||
|
||||
LOAD:
|
||||
|
||||
// Are we loading or verifying?
|
||||
sta VERCKK
|
||||
|
||||
// Store start address of LOAD
|
||||
lda MEMUSS+0
|
||||
sta STAL+0
|
||||
lda MEMUSS+1
|
||||
sty STAL+1
|
||||
|
||||
// Reset status
|
||||
jsr kernalstatus_reset
|
||||
|
||||
#if CONFIG_MEMORY_MODEL_60K
|
||||
// We need our helpers to get to filenames under ROMs or IO area
|
||||
jsr install_ram_routines
|
||||
#endif
|
||||
|
||||
// Check whether we support the requested device
|
||||
lda FA
|
||||
|
||||
// Try IEC - legal device numbers for LOAD are 8-30
|
||||
// Device numbers above 30 can not be used as IEC (see https://www.pagetable.com/?p=1031),
|
||||
// as the protocol combines device number with command code in one byte, above 30 it is
|
||||
// no longer possible. Original ROMs show ILLEGAL DEVICE NUMBER error only for devices
|
||||
// 0-3; our implementation is more strict here
|
||||
|
||||
cmp #$1F
|
||||
bcs !+ // >= 31
|
||||
cmp #$08
|
||||
bcs_far load_iec // >= 8
|
||||
!:
|
||||
jmp lvs_illegal_device_number
|
||||
Reference in new issue
Block a user