mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:33:12 -06:00
Refactor Loader Code
Move loader code to an include file and create separate wrappers for each of the loader functions.
This commit is contained in:
@@ -100,10 +100,9 @@ if ($Platform -ne "UNA")
|
||||
{
|
||||
Asm 'hbios'
|
||||
Asm 'hbfill'
|
||||
Asm 'loader' "-dMODE=LM_ROM" -Output "ldr_rom.bin"
|
||||
Asm 'setup' # uses exported values from loader compilation above!!!
|
||||
Asm 'loader' "-dMODE=LM_COM" -Output "ldr_com.bin"
|
||||
Asm 'loader' "-dMODE=LM_IMG" -Output "ldr_img.bin"
|
||||
Asm 'setup'
|
||||
Asm 'comldr'
|
||||
Asm 'imgldr'
|
||||
}
|
||||
|
||||
# Generate result files using components above
|
||||
@@ -137,9 +136,9 @@ if ($Platform -eq "UNA")
|
||||
}
|
||||
else
|
||||
{
|
||||
Concat 'ldr_rom.bin','setup.bin','hbios.bin','hbfill.bin','osimg.bin','osimg.bin',$RomDiskFile $RomFile
|
||||
Concat 'ldr_com.bin','hbios.bin','osimg.bin' $ComFile
|
||||
Concat 'ldr_img.bin','hbios.bin','osimg.bin' $ImgFile
|
||||
Concat 'setup.bin','hbios.bin','hbfill.bin','osimg.bin','osimg.bin',$RomDiskFile $RomFile
|
||||
Concat 'comldr.bin','hbios.bin','osimg.bin' $ComFile
|
||||
Concat 'imgldr.bin','hbios.bin','osimg.bin' $ImgFile
|
||||
}
|
||||
|
||||
# Cleanup
|
||||
|
||||
19
Source/HBIOS/comldr.asm
Normal file
19
Source/HBIOS/comldr.asm
Normal file
@@ -0,0 +1,19 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; APPLICATION LOADER (COM FILE)
|
||||
;
|
||||
; CREATES A STANDARD CP/M COM APPLICATION FILE TO LOAD ROMWBW
|
||||
; FROM A COMMAND PROMPT.
|
||||
;==================================================================================================
|
||||
;
|
||||
#define MODE LM_COM
|
||||
;
|
||||
#INCLUDE "std.asm"
|
||||
#INCLUDE "hbios.exp"
|
||||
;
|
||||
.ORG $100
|
||||
JP START
|
||||
;
|
||||
#INCLUDE "loader.asm"
|
||||
;
|
||||
.END
|
||||
@@ -32,6 +32,8 @@
|
||||
RETI
|
||||
.FILL (066H - $),0FFH ; NMI
|
||||
RETN
|
||||
;
|
||||
.FILL (070H - $),0FFH ; SIG STARTS AT $80
|
||||
;
|
||||
ROM_SIG:
|
||||
.DB $76, $B5 ; 2 SIGNATURE BYTES
|
||||
|
||||
60
Source/HBIOS/imgldr.asm
Normal file
60
Source/HBIOS/imgldr.asm
Normal file
@@ -0,0 +1,60 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; IMAGE LOADER
|
||||
;
|
||||
; CREATES A BINARY IMAGE THAT WILL LAUNCH ROMWBW ASSUMING IMAGE
|
||||
; HAS BEEN PRE-LOADED INTO THE USER BANK. INTENDED FOR USE WITH
|
||||
; UNA FATFS.
|
||||
;==================================================================================================
|
||||
;
|
||||
#define MODE LM_IMG
|
||||
;
|
||||
#INCLUDE "std.asm"
|
||||
#INCLUDE "hbios.exp"
|
||||
;
|
||||
.ORG 0
|
||||
;
|
||||
;==================================================================================================
|
||||
; NORMAL PAGE ZERO SETUP, RET/RETI/RETN AS APPROPRIATE
|
||||
;==================================================================================================
|
||||
;
|
||||
.FILL (000H - $),0FFH ; RST 0
|
||||
JP START ; JUMP TO BOOT CODE
|
||||
.DW ROM_SIG
|
||||
.FILL (008H - $),0FFH ; RST 8
|
||||
RET
|
||||
.FILL (010H - $),0FFH ; RST 10
|
||||
RET
|
||||
.FILL (018H - $),0FFH ; RST 18
|
||||
RET
|
||||
.FILL (020H - $),0FFH ; RST 20
|
||||
RET
|
||||
.FILL (028H - $),0FFH ; RST 28
|
||||
RET
|
||||
.FILL (030H - $),0FFH ; RST 30
|
||||
RET
|
||||
.FILL (038H - $),0FFH ; INT
|
||||
RETI
|
||||
.FILL (066H - $),0FFH ; NMI
|
||||
RETN
|
||||
;
|
||||
.FILL (070H - $),0FFH ; SIG STARTS AT $80
|
||||
;
|
||||
ROM_SIG:
|
||||
.DB $76, $B5 ; 2 SIGNATURE BYTES
|
||||
.DB 1 ; STRUCTURE VERSION NUMBER
|
||||
.DB 7 ; ROM SIZE (IN MULTIPLES OF 4KB, MINUS ONE)
|
||||
.DW NAME ; POINTER TO HUMAN-READABLE ROM NAME
|
||||
.DW AUTH ; POINTER TO AUTHOR INITIALS
|
||||
.DW DESC ; POINTER TO LONGER DESCRIPTION OF ROM
|
||||
.DB 0, 0, 0, 0, 0, 0 ; RESERVED FOR FUTURE USE; MUST BE ZERO
|
||||
;
|
||||
NAME .DB "ROMWBW v", BIOSVER, ", ", TIMESTAMP, 0
|
||||
AUTH .DB "WBW",0
|
||||
DESC .DB "ROMWBW v", BIOSVER, ", Copyright 2015, Wayne Warthen, GNU GPL v3", 0
|
||||
;
|
||||
.FILL ($100 - $),$FF ; PAD REMAINDER OF PAGE ZERO
|
||||
;
|
||||
#INCLUDE "loader.asm"
|
||||
;
|
||||
.END
|
||||
@@ -3,77 +3,13 @@
|
||||
; LOADER
|
||||
;==================================================================================================
|
||||
;
|
||||
; BOOT LOADER
|
||||
; CAN BE COMPILED IN DIFFERENT MODES:
|
||||
; - LOAD FROM ROM
|
||||
; - LOAD FROM IMAGE IN RAM
|
||||
; - LOAD FROM COM APPLICATION
|
||||
;
|
||||
#INCLUDE "std.asm"
|
||||
#INCLUDE "hbios.exp"
|
||||
;
|
||||
LM_ROM .EQU 1 ; LOAD FROM ROM PAGE
|
||||
LM_IMG .EQU 2 ; LOAD FROM IMAGE
|
||||
LM_COM .EQU 3 ; LOAD FROM COM APP
|
||||
;
|
||||
LDRMODE .EQU MODE ; DEFINE MODE ON COMMAND LINE
|
||||
;
|
||||
P2LOC .EQU $F000 ; PHASE 2 RUN LOCATION
|
||||
;
|
||||
#IF (LDRMODE == LM_ROM)
|
||||
#IFDEF ROMLOAD
|
||||
CURBNK .EQU BID_BOOT
|
||||
#ELSE
|
||||
CURBNK .EQU BID_USR
|
||||
#ENDIF
|
||||
|
||||
#IF (LDRMODE == LM_COM)
|
||||
.ORG $100
|
||||
JP START
|
||||
#ELSE
|
||||
.ORG 0
|
||||
;
|
||||
;==================================================================================================
|
||||
; NORMAL PAGE ZERO SETUP, RET/RETI/RETN AS APPROPRIATE
|
||||
;==================================================================================================
|
||||
;
|
||||
.FILL (000H - $),0FFH ; RST 0
|
||||
JP START ; JUMP TO BOOT CODE
|
||||
.FILL (004H - $),0FFH ; FILL TO START OF SIG PTR
|
||||
.DW ROM_SIG
|
||||
.FILL (008H - $),0FFH ; RST 8
|
||||
RET
|
||||
.FILL (010H - $),0FFH ; RST 10
|
||||
RET
|
||||
.FILL (018H - $),0FFH ; RST 18
|
||||
RET
|
||||
.FILL (020H - $),0FFH ; RST 20
|
||||
RET
|
||||
.FILL (028H - $),0FFH ; RST 28
|
||||
RET
|
||||
.FILL (030H - $),0FFH ; RST 30
|
||||
RET
|
||||
.FILL (038H - $),0FFH ; INT
|
||||
RETI
|
||||
.FILL (066H - $),0FFH ; NMI
|
||||
RETN
|
||||
;
|
||||
.FILL (070H - $),0FFH ; SIG STARTS AT $80
|
||||
;
|
||||
ROM_SIG:
|
||||
.DB $76, $B5 ; 2 SIGNATURE BYTES
|
||||
.DB 1 ; STRUCTURE VERSION NUMBER
|
||||
.DB 7 ; ROM SIZE (IN MULTIPLES OF 4KB, MINUS ONE)
|
||||
.DW NAME ; POINTER TO HUMAN-READABLE ROM NAME
|
||||
.DW AUTH ; POINTER TO AUTHOR INITIALS
|
||||
.DW DESC ; POINTER TO LONGER DESCRIPTION OF ROM
|
||||
.DB 0, 0, 0, 0, 0, 0 ; RESERVED FOR FUTURE USE; MUST BE ZERO
|
||||
;
|
||||
NAME .DB "ROMWBW v", BIOSVER, ", ", TIMESTAMP, 0
|
||||
AUTH .DB "WBW",0
|
||||
DESC .DB "ROMWBW v", BIOSVER, ", Copyright 2014, Wayne Warthen, GNU GPL v3", 0
|
||||
;
|
||||
.FILL ($100 - $),$FF ; PAD REMAINDER OF PAGE ZERO
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; HBIOS CONFIGURATION BLOCK
|
||||
@@ -283,7 +219,7 @@ START:
|
||||
; MMU SETUP
|
||||
LD A,$80
|
||||
OUT0 (Z180_CBAR),A ; SETUP FOR 32K/32K BANK CONFIG
|
||||
#IF (LDRMODE == LM_ROM)
|
||||
#IFDEF ROMLOAD
|
||||
XOR A
|
||||
OUT0 (Z180_BBR),A ; BANK BASE = 0
|
||||
#ENDIF
|
||||
@@ -311,7 +247,7 @@ START:
|
||||
;
|
||||
#IF (PLATFORM == PLT_ZETA2)
|
||||
; SET PAGING REGISTERS
|
||||
#IF (LDRMODE == LM_ROM)
|
||||
#IFDEF ROMLOAD
|
||||
XOR A
|
||||
OUT (MPGSEL_0),A
|
||||
INC A
|
||||
@@ -361,12 +297,12 @@ PHASE2:
|
||||
;
|
||||
; INSTALL HBIOS PROXY IN UPPER MEMORY
|
||||
;
|
||||
#IF (LDRMODE == LM_ROM)
|
||||
#IFDEF ROMLOAD
|
||||
LD A,BID_BIOSIMG ; HBIOS IMAGE ROM BANK
|
||||
CALL BNKSEL ; SELECT IT
|
||||
#ENDIF
|
||||
LD HL,HBX_IMG ; HL := SOURCE OF HBIOS PROXY IMAGE
|
||||
#IF (LDRMODE != LM_ROM)
|
||||
#IFNDEF ROMLOAD
|
||||
LD BC,LDR_END ; SIZE OF LOADER
|
||||
ADD HL,BC ; OFFSET SOURCE ADDRESS
|
||||
#ENDIF
|
||||
@@ -375,14 +311,14 @@ PHASE2:
|
||||
LDIR ; DO THE COPY
|
||||
LD A,CURBNK ; BOOT/SETUP BANK
|
||||
LD (HB_CURBNK),A ; INIT CURRENT BANK
|
||||
#IF (LDRMODE == LM_ROM)
|
||||
#IFDEF ROMLOAD
|
||||
CALL BNKSEL ; SELECT IT
|
||||
#ENDIF
|
||||
CALL XIO_DOT ; MARK PROGRESS
|
||||
;
|
||||
; INSTALL HBIOS CODE BANK
|
||||
;
|
||||
#IF (LDRMODE == LM_ROM)
|
||||
#IFDEF ROMLOAD
|
||||
LD A,BID_BIOSIMG ; SOURCE BANK
|
||||
#ELSE
|
||||
LD A,(HB_CURBNK) ; SOURCE BANK
|
||||
@@ -391,7 +327,7 @@ PHASE2:
|
||||
LD A,BID_BIOS ; DESTINATION BANK
|
||||
LD (HB_DSTBNK),A ; SET IT
|
||||
LD HL,0 ; SOURCE ADDRESS IS ZERO
|
||||
#IF (LDRMODE != LM_ROM)
|
||||
#IFNDEF ROMLOAD
|
||||
LD BC,LDR_END ; SIZE OF LOADER
|
||||
ADD HL,BC ; OFFSET SOURCE ADDRESS
|
||||
#ENDIF
|
||||
@@ -426,7 +362,7 @@ PHASE2:
|
||||
;
|
||||
; CHAIN TO OS LOADER
|
||||
;
|
||||
#IF (LDRMODE == LM_ROM)
|
||||
#IFDEF ROMLOAD
|
||||
; PERFORM BANK CALL TO OS IMAGES BANK
|
||||
LD A,BID_OSIMG ; CHAIN TO OS IMAGES BANK
|
||||
LD HL,0 ; ENTER AT ADDRESS 0
|
||||
@@ -448,7 +384,7 @@ PHASE2:
|
||||
; MEMORY MANAGER
|
||||
;==================================================================================================
|
||||
;
|
||||
#IF (LDRMODE == LM_ROM)
|
||||
#IFDEF ROMLOAD
|
||||
#INCLUDE "memmgr.asm"
|
||||
#ENDIF
|
||||
;
|
||||
@@ -457,5 +393,4 @@ PHASE2:
|
||||
;==================================================================================================
|
||||
;
|
||||
.ORG $ - P2LOC ; BACK TO IMAGE-BASED ADDRESSING
|
||||
LDR_END .EXPORT LDR_END ; EXPORT ENDING ADDRESS
|
||||
.END
|
||||
LDR_END .EQU $ ; MARK END OF LOADER
|
||||
|
||||
@@ -3,7 +3,55 @@
|
||||
; SETUP
|
||||
;==================================================================================================
|
||||
;
|
||||
#INCLUDE "loader.exp"
|
||||
#INCLUDE "std.asm"
|
||||
#INCLUDE "hbios.exp"
|
||||
;
|
||||
.FILL $8000 - LDR_END,$FF
|
||||
.ORG 0
|
||||
;
|
||||
;==================================================================================================
|
||||
; NORMAL PAGE ZERO SETUP, RET/RETI/RETN AS APPROPRIATE
|
||||
;==================================================================================================
|
||||
;
|
||||
.FILL (000H - $),0FFH ; RST 0
|
||||
JP START ; JUMP TO BOOT CODE
|
||||
.FILL (004H - $),0FFH ; FILL TO START OF SIG PTR
|
||||
.DW ROM_SIG
|
||||
.FILL (008H - $),0FFH ; RST 8
|
||||
RET
|
||||
.FILL (010H - $),0FFH ; RST 10
|
||||
RET
|
||||
.FILL (018H - $),0FFH ; RST 18
|
||||
RET
|
||||
.FILL (020H - $),0FFH ; RST 20
|
||||
RET
|
||||
.FILL (028H - $),0FFH ; RST 28
|
||||
RET
|
||||
.FILL (030H - $),0FFH ; RST 30
|
||||
RET
|
||||
.FILL (038H - $),0FFH ; INT
|
||||
RETI
|
||||
.FILL (066H - $),0FFH ; NMI
|
||||
RETN
|
||||
;
|
||||
.FILL (070H - $),0FFH ; SIG STARTS AT $80
|
||||
;
|
||||
ROM_SIG:
|
||||
.DB $76, $B5 ; 2 SIGNATURE BYTES
|
||||
.DB 1 ; STRUCTURE VERSION NUMBER
|
||||
.DB 7 ; ROM SIZE (IN MULTIPLES OF 4KB, MINUS ONE)
|
||||
.DW NAME ; POINTER TO HUMAN-READABLE ROM NAME
|
||||
.DW AUTH ; POINTER TO AUTHOR INITIALS
|
||||
.DW DESC ; POINTER TO LONGER DESCRIPTION OF ROM
|
||||
.DB 0, 0, 0, 0, 0, 0 ; RESERVED FOR FUTURE USE; MUST BE ZERO
|
||||
;
|
||||
NAME .DB "ROMWBW v", BIOSVER, ", ", TIMESTAMP, 0
|
||||
AUTH .DB "WBW",0
|
||||
DESC .DB "ROMWBW v", BIOSVER, ", Copyright 2014, Wayne Warthen, GNU GPL v3", 0
|
||||
;
|
||||
.FILL ($100 - $),$FF ; PAD REMAINDER OF PAGE ZERO
|
||||
;
|
||||
#define ROMLOAD
|
||||
#INCLUDE "loader.asm"
|
||||
;
|
||||
.FILL $8000 - $,$FF
|
||||
.END
|
||||
|
||||
Reference in New Issue
Block a user