2021-07-25 23:04:51 +00:00
|
|
|
* Load an Acorn BBC Micro ROM in aux memory and
|
2021-07-16 02:16:22 +00:00
|
|
|
* Provide an environment where it can run
|
2021-07-29 18:43:56 +00:00
|
|
|
* (c) Bobbi 2021 GPLv3
|
2021-07-27 00:07:51 +00:00
|
|
|
*
|
|
|
|
* Assembled with the Merlin 8 assembler.
|
2021-07-16 02:16:22 +00:00
|
|
|
|
2021-07-28 04:17:47 +00:00
|
|
|
XC ; 65c02
|
|
|
|
ORG $2000 ; Load addr of loader in main memory
|
2021-07-16 02:16:22 +00:00
|
|
|
|
|
|
|
* Monitor routines
|
|
|
|
BELL EQU $FBDD
|
|
|
|
PRBYTE EQU $FDDA
|
|
|
|
COUT1 EQU $FDED
|
|
|
|
CROUT EQU $FD8E
|
|
|
|
AUXMOVE EQU $C311
|
|
|
|
XFER EQU $C314
|
|
|
|
|
|
|
|
* Monitor ZP locations
|
|
|
|
A1L EQU $3C
|
|
|
|
A1H EQU $3D
|
|
|
|
A2L EQU $3E
|
|
|
|
A2H EQU $3F
|
|
|
|
A4L EQU $42
|
|
|
|
A4H EQU $43
|
|
|
|
|
|
|
|
* Used by XFER
|
|
|
|
STRTL EQU $3ED
|
|
|
|
STRTH EQU $3EE
|
|
|
|
|
|
|
|
* Reset vector (2 bytes + 1 byte checksum)
|
|
|
|
RSTV EQU $3F2
|
|
|
|
|
|
|
|
* MLI entry point
|
|
|
|
MLI EQU $BF00
|
|
|
|
|
|
|
|
* ProDOS MLI command numbers
|
2021-07-18 02:51:36 +00:00
|
|
|
QUITCMD EQU $65
|
2021-07-16 02:16:22 +00:00
|
|
|
GTIMECMD EQU $82
|
|
|
|
CREATCMD EQU $C0
|
2021-07-29 00:47:26 +00:00
|
|
|
DESTCMD EQU $C1
|
2021-07-16 02:16:22 +00:00
|
|
|
ONLNCMD EQU $C5
|
2021-07-20 02:20:02 +00:00
|
|
|
SPFXCMD EQU $C6
|
2021-07-16 02:16:22 +00:00
|
|
|
GPFXCMD EQU $C7
|
|
|
|
OPENCMD EQU $C8
|
|
|
|
READCMD EQU $CA
|
|
|
|
WRITECMD EQU $CB
|
|
|
|
CLSCMD EQU $CC
|
2021-07-30 19:47:36 +00:00
|
|
|
FLSHCMD EQU $CD
|
2021-07-29 18:43:56 +00:00
|
|
|
GMARKCMD EQU $CF
|
|
|
|
GEOFCMD EQU $D1
|
2021-07-16 02:16:22 +00:00
|
|
|
|
2021-07-28 04:17:47 +00:00
|
|
|
* IO Buffer for reading file (1024 bytes)
|
|
|
|
IOBUF0 EQU $4000 ; For loading ROM, OSFILE, *.
|
|
|
|
IOBUF1 EQU $4400 ; Four open files for langs
|
|
|
|
IOBUF2 EQU $4800
|
|
|
|
IOBUF3 EQU $4C00
|
|
|
|
IOBUF4 EQU $5000
|
2021-07-16 02:16:22 +00:00
|
|
|
|
2021-07-29 00:47:26 +00:00
|
|
|
* 512 byte buffer sufficient for one disk block
|
|
|
|
BLKBUF EQU $5200
|
|
|
|
BLKBUFEND EQU $5400
|
2021-07-16 02:16:22 +00:00
|
|
|
|
|
|
|
* Address in aux memory where ROM will be loaded
|
|
|
|
AUXADDR EQU $8000
|
|
|
|
|
|
|
|
* Address in aux memory where the MOS shim is located
|
2021-07-28 04:17:47 +00:00
|
|
|
AUXMOS1 EQU $2000 ; Temp staging area in Aux
|
|
|
|
EAUXMOS1 EQU $3000 ; End of staging area
|
|
|
|
AUXMOS EQU $D000 ; Final location in aux LC
|
2021-07-16 02:16:22 +00:00
|
|
|
|
2021-07-30 20:49:34 +00:00
|
|
|
* Macro for calls from main memory to aux memory
|
|
|
|
XFAUX MAC
|
|
|
|
SEC ; Use aux memory
|
|
|
|
BIT $FF58 ; Set V: use alt ZP and LC
|
|
|
|
JMP XFER
|
|
|
|
EOM
|
|
|
|
|
|
|
|
* Macro for calls from aux memory to main memory
|
|
|
|
XFMAIN MAC
|
|
|
|
CLC ; Use main memory
|
|
|
|
CLV ; Use main ZP and LC
|
|
|
|
JMP XFER
|
|
|
|
EOM
|
|
|
|
|
|
|
|
* Macro to load addr into STRTL/STRTH
|
2021-07-31 20:10:12 +00:00
|
|
|
* Called by code running in main mem
|
2021-07-30 20:49:34 +00:00
|
|
|
XFADDR MAC
|
2021-07-31 20:10:12 +00:00
|
|
|
PHA
|
2021-07-30 20:49:34 +00:00
|
|
|
LDA #<]1
|
|
|
|
STA STRTL
|
|
|
|
LDA #>]1
|
|
|
|
STA STRTH
|
2021-07-31 20:10:12 +00:00
|
|
|
PLA
|
2021-07-30 20:49:34 +00:00
|
|
|
EOM
|
|
|
|
|
2021-07-30 21:33:50 +00:00
|
|
|
* Macro to backup STRTL/STRTH then load XFADDR
|
2021-07-31 20:10:12 +00:00
|
|
|
* Called by code running in aux mem
|
|
|
|
XFADDRAUX MAC
|
|
|
|
PHA
|
2021-07-30 21:33:50 +00:00
|
|
|
LDA STRTL
|
|
|
|
STA STRTBCKL
|
|
|
|
LDA STRTH
|
|
|
|
STA STRTBCKH
|
2021-07-31 20:10:12 +00:00
|
|
|
LDA #<]1
|
|
|
|
STA STRTL
|
|
|
|
LDA #>]1
|
|
|
|
STA STRTH
|
|
|
|
PLA
|
2021-07-30 21:33:50 +00:00
|
|
|
EOM
|
|
|
|
|
|
|
|
* Macro to recover STRTL/STRTH
|
|
|
|
* STRTL and STRTH after XFER returns
|
2021-07-31 20:10:12 +00:00
|
|
|
* Called by code running in aux mem
|
2021-07-30 21:33:50 +00:00
|
|
|
XFRECVR MAC
|
2021-07-31 20:10:12 +00:00
|
|
|
PHA
|
2021-07-30 21:33:50 +00:00
|
|
|
LDA STRTBCKL
|
|
|
|
STA STRTL
|
|
|
|
LDA STRTBCKH
|
|
|
|
STA STRTH
|
2021-07-31 20:10:12 +00:00
|
|
|
PLA
|
2021-07-30 21:33:50 +00:00
|
|
|
EOM
|
|
|
|
|
2021-07-30 20:49:34 +00:00
|
|
|
* Code is all included from PUT files below ...
|
2021-07-28 04:17:47 +00:00
|
|
|
PUT LOADER
|
|
|
|
PUT MAINMEM
|
|
|
|
PUT AUXMEM
|
2021-07-19 19:42:04 +00:00
|
|
|
|