|
|
|
@ -11,7 +11,7 @@ |
|
|
|
; THE RETROBREW COMPUTING GROUP HAS BEEN USING A CONVENTION OF PREFIXING THE |
|
|
|
; OS IMAGE WITH 3 SECTORS (512 BYTES X 3 FOR A TOTAL OF 1536 BYTES): |
|
|
|
; |
|
|
|
; SECTOR 1: IBM-PC STYLE BOOT BLOCK CONTAINING BOOTSTRAP, |
|
|
|
; SECTOR 1: IBM-PC STYLE BOOT BLOCK CONTAINING BOOTSTRAP, |
|
|
|
; PARTITION TABLE, AND BOOT SIGNATURE |
|
|
|
; SECTOR 2: RESERVED |
|
|
|
; SECTOR 3: METADATA |
|
|
|
@ -31,6 +31,7 @@ |
|
|
|
; THE SIZE OF CPMLDR.BIN CHANGES, SYS_SIZ MUST BE UPDATED!!! |
|
|
|
; |
|
|
|
SYS_SIZ .EQU $0F00 ; SIZE OF CPMLDR.BIN |
|
|
|
SYS_SEC .EQU 8 ; NUMBER OF SECTORS TO READ |
|
|
|
SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS |
|
|
|
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE |
|
|
|
SYS_END .EQU SYS_SIZ + SYS_LOC ; ENDING ADDRESS OF SYSTEM IMAGE |
|
|
|
@ -57,6 +58,8 @@ PT_SIZ .EQU $40 |
|
|
|
; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING |
|
|
|
; ADDRESS OF $8000. THIS CODE IS *ONLY* FOR UNA. THE ROMWBW ROM BOOTLOADER |
|
|
|
; USES THE METADATA TO LOAD THE OS DIRECTLY. |
|
|
|
; |
|
|
|
; UNA DOES NOT SUPPORT CP/M 3 THIS CODE IS NOT USED, AND COULD BE REMOVED |
|
|
|
; |
|
|
|
.ORG $8000 |
|
|
|
JR BOOT |
|
|
|
@ -80,8 +83,8 @@ BOOT: |
|
|
|
CALL PRTDOT ; PROGRESS |
|
|
|
; |
|
|
|
LD C,$42 ; UNA FUNC: READ SECTORS |
|
|
|
LD DE,$D000 ; STARTING ADDRESS FOR IMAGE |
|
|
|
LD L,22 ; READ 22 SECTORS |
|
|
|
LD DE,SYS_LOC ; STARTING ADDRESS FOR IMAGE |
|
|
|
LD L,SYS_SEC ; NUMBER OF SECTORS |
|
|
|
CALL $FFFD ; DO READ |
|
|
|
JR NZ,ERROR ; HANDLE ERROR |
|
|
|
CALL PRTDOT ; PROGRESS |
|
|
|
@ -151,10 +154,10 @@ HEXASCII: |
|
|
|
HEXCONV: |
|
|
|
AND $0F ;LOW NIBBLE ONLY |
|
|
|
ADD A,$90 |
|
|
|
DAA |
|
|
|
DAA |
|
|
|
ADC A,$40 |
|
|
|
DAA |
|
|
|
RET |
|
|
|
DAA |
|
|
|
RET |
|
|
|
; |
|
|
|
ERROR: |
|
|
|
LD DE,STR_ERR ; POINT TO ERROR STRING |
|
|
|
@ -256,7 +259,7 @@ PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE |
|
|
|
PR_WP .DB 0 ; (1) WRITE PROTECT BOOLEAN |
|
|
|
PR_UPDSEQ .DW 0 ; (2) PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) |
|
|
|
PR_VER .DB RMJ,RMN,RUP,RTP ; (4) OS BUILD VERSION |
|
|
|
PR_LABEL .DB "Unlabeled$$$$$$$","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!) |
|
|
|
PR_LABEL .DB "CP/M 3.0$$$$$$$$","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!) |
|
|
|
.DW 0 ; (2) DEPRECATED |
|
|
|
PR_LDLOC .DW SYS_LOC ; (2) ADDRESS TO START LOADING SYSTEM |
|
|
|
PR_LDEND .DW SYS_END ; (2) ADDRESS TO STOP LOADING SYSTEM |
|
|
|
|