mirror of https://github.com/wwarthen/RomWBW.git
41 changed files with 887 additions and 243 deletions
Binary file not shown.
Binary file not shown.
@ -1,146 +0,0 @@ |
|||
NASCOM 2 BASIC (C) 1978 MICROSOFT AS IMPLEMENTED FOR RETROBREWCOMPUTERS |
|||
|
|||
FUNCTIONS: |
|||
|
|||
SGN |
|||
INT |
|||
ABS |
|||
USR |
|||
FRE |
|||
INP |
|||
POS |
|||
SQR |
|||
RND |
|||
LOG |
|||
EXP |
|||
COS |
|||
SIN |
|||
TAN |
|||
ATN |
|||
PEEK |
|||
DEEK |
|||
POINT |
|||
LEN |
|||
STR |
|||
VAL |
|||
ASC |
|||
CHR$ |
|||
HEX$ |
|||
BIN$ |
|||
LEFT$ |
|||
RIGHT$ |
|||
MID$ |
|||
|
|||
RESERVED WORDS: |
|||
|
|||
END |
|||
FOR |
|||
NEXT |
|||
DATA |
|||
INPUT |
|||
DIM |
|||
READ |
|||
LET |
|||
GOTO |
|||
RUN |
|||
IF |
|||
RESTORE |
|||
GOSUB |
|||
RETURN |
|||
REM |
|||
STOP |
|||
OUT |
|||
ON |
|||
NULL |
|||
WAIT |
|||
DEF |
|||
POKE |
|||
DOKE |
|||
LINES |
|||
CLS |
|||
WIDTH |
|||
BYE |
|||
SET |
|||
RESET |
|||
PRINT |
|||
CONT |
|||
LIST |
|||
CLEAR |
|||
PLAY |
|||
REM |
|||
NEW |
|||
PRINT |
|||
TAB |
|||
TO |
|||
FN |
|||
SPC |
|||
THEN |
|||
NOT |
|||
STEP |
|||
? |
|||
|
|||
OPERATORS: |
|||
|
|||
+ PLUS |
|||
- MINUS |
|||
* MULTIPLY |
|||
/ DIVIDE |
|||
AND LOGICAL AND |
|||
OR LOGICAL OR |
|||
> GREATER THAN |
|||
= EQUALS |
|||
< LESS THAN |
|||
^ POWER |
|||
|
|||
EXPRESSION PRECEDENCE: |
|||
|
|||
() EXPRESSIONS IN () |
|||
^ POWER |
|||
- NEGATION |
|||
* / MULTIPLICATION AND DIVISION |
|||
+ - ADDITION AND SUBTRACTION |
|||
= EQUALS |
|||
<> NOT EQUAL |
|||
< LESS THAN |
|||
> GREATER THAN |
|||
<= =< LESS THAN OR EQUAL TO |
|||
>= => GREATER THAN OR EQUAL TO |
|||
NOT LOGICAL, BITWISE NEGATION |
|||
AND LOGICAL, BITWISE AND |
|||
OR LOGICAL, BITWISE OR |
|||
|
|||
VARIABLES: |
|||
|
|||
NO LENGTH LIMIT BUT ONLY FIRST TWO CHARACTERS ARE SIGNIFICANT. |
|||
CANNOT HAVE THE SAME NAME AS RESERVED WORDS. |
|||
MAY BE AN ARRAY. |
|||
|
|||
ERROR CODE: |
|||
|
|||
NF NEXT without FOR |
|||
SN Syntax error |
|||
RG RETURN without GOSUB |
|||
OD Out of DATA |
|||
FC Illegal function call |
|||
OV Overflow error |
|||
OM Out of memory |
|||
UL Undefined line |
|||
BS Bad subscript |
|||
DD Re-DIMensioned array |
|||
/0 Division by zero |
|||
ID Illegal direct |
|||
TM Type mis-match |
|||
OS Out of string space |
|||
LS String too long |
|||
ST String formula too complex |
|||
CN Can't CONTinue |
|||
UF Undefined FN function |
|||
MO Missing operand |
|||
HX HEX error |
|||
BN BIN error |
|||
|
|||
LINE EDITING COMMANDS: |
|||
|
|||
@ KILL CURRENT LINE |
|||
_ NONDESTRUCTIVE DELETE LAST CHARACTER |
|||
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,15 @@ |
|||
Loader uses CBIOS Disk I/O prior to CBOOT/WBOOT being run. As a |
|||
result, DIOBUF is not properly initialized. At present, it is |
|||
initialized to $7C00 which will work unless the location of the |
|||
physical disk buffer in HBIOS ever changes! |
|||
|
|||
The clock drivers supplied with BPBIOS (LDDS, LDP2D, and LDNZT) |
|||
load into ZSYS user memory. If the user segment is not at the |
|||
same location as the original BPBIOS ($E900), then the clock |
|||
driver will just overlay other code. At present, the N config |
|||
is OK because it does not relocate the user segment, but the T |
|||
config fails because it uses a user segment at $E700. Note that |
|||
this does not affect ZSDOS2 variants because they do not require |
|||
a loadable clock driver. |
|||
|
|||
BPBIOS needs to assign disk units dynamically via discovery of disk type |
|||
@ -0,0 +1,7 @@ |
|||
; global assembler options for CP/M loader |
|||
; when loading from a command line |
|||
|
|||
true equ -1 |
|||
false equ not true |
|||
|
|||
cmdline equ true |
|||
@ -0,0 +1,228 @@ |
|||
;=============================================================================== |
|||
; LOADER.ASM |
|||
; |
|||
; BOOTLOADER FOR ROMWBW DISK OPERATING SYSTEMS. |
|||
; |
|||
; CP/M DISK FORMATS ALLOW FOR RESERVED TRACKS THAT CONTAIN AN IMAGE OF THE |
|||
; OPERATING SYSTEM TO BE LOADED WHEN THE DISK IS BOOTED. THE OPERATING SYSTEM |
|||
; IMAGE ITSELF IS NORMALLY PREFIXED BY A 1-N SECTORS CONTAINING OS BOOTSTRAP |
|||
; CODE AND DISK METADATA. |
|||
; |
|||
; 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, |
|||
; PARTITION TABLE, AND BOOT SIGNATURE |
|||
; SECTOR 2: RESERVED |
|||
; SECTOR 3: METADATA |
|||
; |
|||
; THE HARDWARE BIOS IS EXPECTED TO READ AND LOAD THE FIRST TWO SECTORS FROM THE |
|||
; DISK TO MEMORY ADDRESS $8000 AND JUMP TO THAT LOCATION TO BEGIN THE BOOT |
|||
; PROCESS. THE BIOS IS EXPECTED TO VERIFY THAT A STANDARD BOOT SIGNATURE |
|||
; OF $55, $AA IS PRESENT AT OFFSET $1FE-$1FF. IF THE SIGNATURE IS NOT FOUND, |
|||
; THE BIOS SHOULD ASSUME THE DISK HAS NOT BEEN PROPERLY INITIALIZED AND SHOULD |
|||
; NOT JUMP TO THE LOAD ADDRESS. |
|||
; |
|||
;=============================================================================== |
|||
; |
|||
#INCLUDE "../HBIOS/ver.inc" |
|||
; |
|||
SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS |
|||
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE |
|||
SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE |
|||
; |
|||
BYT .EQU 1 ; used to describe METADATA_SIZE below |
|||
WRD .EQU 2 |
|||
; |
|||
SECTOR_SIZE .EQU 512 |
|||
BLOCK_SIZE .EQU 128 |
|||
PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS |
|||
METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below) |
|||
; |
|||
PARTTBL_LOC .EQU $1BE |
|||
PARTTBL_SIZ .EQU $40 |
|||
BOOTSIG_LOC .EQU $1FE |
|||
; |
|||
;------------------------------------------------------------------------------- |
|||
; SECTOR 1 |
|||
; |
|||
; THIS SECTOR FOLLOWS THE CONVENTIONS OF AN IBM-PC MBR CONTAINING THE OS |
|||
; BOOTSTRAP CODE, PARTITION TABLE, AND BOOT SIGNATURE |
|||
; |
|||
;---------------------------------------------------------------------------- |
|||
; |
|||
; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING |
|||
; ADDRESS OF $8000. |
|||
; |
|||
.ORG $8000 |
|||
JR BOOT |
|||
; |
|||
BOOT: |
|||
LD DE,STR_LOAD ; LOADING STRING |
|||
CALL PRTSTR ; PRINT |
|||
CALL PRTDOT ; PROGRESS |
|||
; |
|||
LD BC,$00FC ; UNA FUNC: GET BOOTSTRAP HISTORY |
|||
CALL $FFFD ; CALL UNA |
|||
JR NZ,ERROR ; HANDLE ERROR |
|||
CALL PRTDOT ; PROGRESS |
|||
LD B,L ; MOVE BOOT UNIT ID TO B |
|||
; |
|||
LD C,$41 ; UNA FUNC: SET LBA |
|||
LD DE,0 ; HI WORD ALWAYS ZERO |
|||
LD HL,3 ; IMAGE STARTS AT FOURTH SECTOR |
|||
CALL $FFFD ; SET LBA |
|||
JR NZ,ERROR ; HANDLE ERROR |
|||
CALL PRTDOT ; PROGRESS |
|||
; |
|||
LD C,$42 ; UNA FUNC: READ SECTORS |
|||
LD DE,$D000 ; STARTING ADDRESS FOR IMAGE |
|||
LD L,22 ; READ 22 SECTORS |
|||
CALL $FFFD ; DO READ |
|||
JR NZ,ERROR ; HANDLE ERROR |
|||
CALL PRTDOT ; PROGRESS |
|||
; |
|||
LD DE,STR_DONE ; DONE MESSAGE |
|||
CALL PRTSTR ; PRINT IT |
|||
; |
|||
LD D,B ; PASS BOOT UNIT TO OS |
|||
LD E,0 ; ASSUME LU IS ZERO |
|||
JP SYS_ENT ; GO TO SYSTEM |
|||
; |
|||
PRTCHR: |
|||
PUSH BC |
|||
PUSH DE |
|||
LD BC,$0012 ; UNIT 0, WRITE CHAR |
|||
LD E,A ; CHAR TO PRINT |
|||
CALL $FFFD ; PRINT |
|||
POP DE |
|||
POP BC |
|||
RET |
|||
; |
|||
PRTSTR: |
|||
PUSH BC |
|||
PUSH HL |
|||
LD BC,$0015 ; UNIT 0, WRITE CHARS UNTIL TERMINATOR |
|||
LD L,0 ; TERMINATOR IS NULL |
|||
CALL $FFFD ; PRINT |
|||
POP HL |
|||
POP BC |
|||
RET |
|||
; |
|||
PRTDOT: |
|||
LD A,'.' ; DOT CHARACTER |
|||
JR PRTCHR ; PRINT AND RETURN |
|||
; |
|||
; PRINT THE HEX BYTE VALUE IN A |
|||
; |
|||
PRTHEXBYTE: |
|||
PUSH AF |
|||
PUSH DE |
|||
CALL HEXASCII |
|||
LD A,D |
|||
CALL PRTCHR |
|||
LD A,E |
|||
CALL PRTCHR |
|||
POP DE |
|||
POP AF |
|||
RET |
|||
; |
|||
; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE |
|||
; |
|||
HEXASCII: |
|||
LD D,A |
|||
CALL HEXCONV |
|||
LD E,A |
|||
LD A,D |
|||
RLCA |
|||
RLCA |
|||
RLCA |
|||
RLCA |
|||
CALL HEXCONV |
|||
LD D,A |
|||
RET |
|||
; |
|||
; CONVERT LOW NIBBLE OF A TO ASCII HEX |
|||
; |
|||
HEXCONV: |
|||
AND 0FH ;LOW NIBBLE ONLY |
|||
ADD A,90H |
|||
DAA |
|||
ADC A,40H |
|||
DAA |
|||
RET |
|||
; |
|||
ERROR: |
|||
LD DE,STR_ERR ; POINT TO ERROR STRING |
|||
CALL PRTSTR ; PRINT IT |
|||
HALT ; HALT |
|||
; |
|||
; DATA |
|||
; |
|||
STR_LOAD .DB "\r\nLoading",0 |
|||
STR_DONE .DB "\r\n",0 |
|||
STR_ERR .DB " Read Error!",0 |
|||
; |
|||
.ORG $ - $8000 ; RESTORE ORG |
|||
.FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE |
|||
; |
|||
; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A |
|||
; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM. |
|||
; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80. |
|||
; |
|||
PARTTBL .FILL PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES |
|||
; |
|||
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT |
|||
; SIGNATURE. |
|||
; |
|||
BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE |
|||
; |
|||
;------------------------------------------------------------------------------- |
|||
; SECTOR 2 |
|||
; |
|||
; THIS SECTOR HAS NOT BEEN DEFINED AND IS RESERVED. |
|||
; |
|||
;---------------------------------------------------------------------------- |
|||
; |
|||
.FILL 512,0 ; JUST FILL SECTOR WITH ZEROES |
|||
; |
|||
;------------------------------------------------------------------------------- |
|||
; SECTOR 3 |
|||
; |
|||
; OS AND DISK METADATA |
|||
; |
|||
;---------------------------------------------------------------------------- |
|||
; |
|||
.FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED |
|||
; |
|||
; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY |
|||
; SOME HARDWARE BIOSES. |
|||
; |
|||
PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE |
|||
; |
|||
; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES |
|||
; |
|||
PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM) |
|||
PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED) |
|||
PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED) |
|||
PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED) |
|||
PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED) |
|||
; |
|||
; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR |
|||
; |
|||
.FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H |
|||
; |
|||
; SECOND CHUNK OF METADATA |
|||
; |
|||
PR_WP .DB 0 ; WRITE PROTECT BOOLEADN |
|||
PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) |
|||
PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION |
|||
PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!) |
|||
.DW 0 ; DEPRECATED |
|||
PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM |
|||
PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM |
|||
PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS) |
|||
; |
|||
; |
|||
; |
|||
.END |
|||
@ -0,0 +1,7 @@ |
|||
; global assembler options for CP/M loader |
|||
; when loading from a command line |
|||
|
|||
true equ -1 |
|||
false equ not true |
|||
|
|||
cmdline equ true |
|||
@ -0,0 +1,7 @@ |
|||
; global assembler options for CP/M loader |
|||
; when loading from a boot disk |
|||
|
|||
true equ -1 |
|||
false equ not true |
|||
|
|||
cmdline equ false |
|||
@ -0,0 +1,228 @@ |
|||
;=============================================================================== |
|||
; LOADER.ASM |
|||
; |
|||
; BOOTLOADER FOR ROMWBW DISK OPERATING SYSTEMS. |
|||
; |
|||
; CP/M DISK FORMATS ALLOW FOR RESERVED TRACKS THAT CONTAIN AN IMAGE OF THE |
|||
; OPERATING SYSTEM TO BE LOADED WHEN THE DISK IS BOOTED. THE OPERATING SYSTEM |
|||
; IMAGE ITSELF IS NORMALLY PREFIXED BY A 1-N SECTORS CONTAINING OS BOOTSTRAP |
|||
; CODE AND DISK METADATA. |
|||
; |
|||
; 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, |
|||
; PARTITION TABLE, AND BOOT SIGNATURE |
|||
; SECTOR 2: RESERVED |
|||
; SECTOR 3: METADATA |
|||
; |
|||
; THE HARDWARE BIOS IS EXPECTED TO READ AND LOAD THE FIRST TWO SECTORS FROM THE |
|||
; DISK TO MEMORY ADDRESS $8000 AND JUMP TO THAT LOCATION TO BEGIN THE BOOT |
|||
; PROCESS. THE BIOS IS EXPECTED TO VERIFY THAT A STANDARD BOOT SIGNATURE |
|||
; OF $55, $AA IS PRESENT AT OFFSET $1FE-$1FF. IF THE SIGNATURE IS NOT FOUND, |
|||
; THE BIOS SHOULD ASSUME THE DISK HAS NOT BEEN PROPERLY INITIALIZED AND SHOULD |
|||
; NOT JUMP TO THE LOAD ADDRESS. |
|||
; |
|||
;=============================================================================== |
|||
; |
|||
#INCLUDE "../HBIOS/ver.inc" |
|||
; |
|||
SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS |
|||
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE |
|||
SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE |
|||
; |
|||
BYT .EQU 1 ; used to describe METADATA_SIZE below |
|||
WRD .EQU 2 |
|||
; |
|||
SECTOR_SIZE .EQU 512 |
|||
BLOCK_SIZE .EQU 128 |
|||
PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS |
|||
METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below) |
|||
; |
|||
PARTTBL_LOC .EQU $1BE |
|||
PARTTBL_SIZ .EQU $40 |
|||
BOOTSIG_LOC .EQU $1FE |
|||
; |
|||
;------------------------------------------------------------------------------- |
|||
; SECTOR 1 |
|||
; |
|||
; THIS SECTOR FOLLOWS THE CONVENTIONS OF AN IBM-PC MBR CONTAINING THE OS |
|||
; BOOTSTRAP CODE, PARTITION TABLE, AND BOOT SIGNATURE |
|||
; |
|||
;---------------------------------------------------------------------------- |
|||
; |
|||
; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING |
|||
; ADDRESS OF $8000. |
|||
; |
|||
.ORG $8000 |
|||
JR BOOT |
|||
; |
|||
BOOT: |
|||
LD DE,STR_LOAD ; LOADING STRING |
|||
CALL PRTSTR ; PRINT |
|||
CALL PRTDOT ; PROGRESS |
|||
; |
|||
LD BC,$00FC ; UNA FUNC: GET BOOTSTRAP HISTORY |
|||
CALL $FFFD ; CALL UNA |
|||
JR NZ,ERROR ; HANDLE ERROR |
|||
CALL PRTDOT ; PROGRESS |
|||
LD B,L ; MOVE BOOT UNIT ID TO B |
|||
; |
|||
LD C,$41 ; UNA FUNC: SET LBA |
|||
LD DE,0 ; HI WORD ALWAYS ZERO |
|||
LD HL,3 ; IMAGE STARTS AT FOURTH SECTOR |
|||
CALL $FFFD ; SET LBA |
|||
JR NZ,ERROR ; HANDLE ERROR |
|||
CALL PRTDOT ; PROGRESS |
|||
; |
|||
LD C,$42 ; UNA FUNC: READ SECTORS |
|||
LD DE,$D000 ; STARTING ADDRESS FOR IMAGE |
|||
LD L,22 ; READ 22 SECTORS |
|||
CALL $FFFD ; DO READ |
|||
JR NZ,ERROR ; HANDLE ERROR |
|||
CALL PRTDOT ; PROGRESS |
|||
; |
|||
LD DE,STR_DONE ; DONE MESSAGE |
|||
CALL PRTSTR ; PRINT IT |
|||
; |
|||
LD D,B ; PASS BOOT UNIT TO OS |
|||
LD E,0 ; ASSUME LU IS ZERO |
|||
JP SYS_ENT ; GO TO SYSTEM |
|||
; |
|||
PRTCHR: |
|||
PUSH BC |
|||
PUSH DE |
|||
LD BC,$0012 ; UNIT 0, WRITE CHAR |
|||
LD E,A ; CHAR TO PRINT |
|||
CALL $FFFD ; PRINT |
|||
POP DE |
|||
POP BC |
|||
RET |
|||
; |
|||
PRTSTR: |
|||
PUSH BC |
|||
PUSH HL |
|||
LD BC,$0015 ; UNIT 0, WRITE CHARS UNTIL TERMINATOR |
|||
LD L,0 ; TERMINATOR IS NULL |
|||
CALL $FFFD ; PRINT |
|||
POP HL |
|||
POP BC |
|||
RET |
|||
; |
|||
PRTDOT: |
|||
LD A,'.' ; DOT CHARACTER |
|||
JR PRTCHR ; PRINT AND RETURN |
|||
; |
|||
; PRINT THE HEX BYTE VALUE IN A |
|||
; |
|||
PRTHEXBYTE: |
|||
PUSH AF |
|||
PUSH DE |
|||
CALL HEXASCII |
|||
LD A,D |
|||
CALL PRTCHR |
|||
LD A,E |
|||
CALL PRTCHR |
|||
POP DE |
|||
POP AF |
|||
RET |
|||
; |
|||
; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE |
|||
; |
|||
HEXASCII: |
|||
LD D,A |
|||
CALL HEXCONV |
|||
LD E,A |
|||
LD A,D |
|||
RLCA |
|||
RLCA |
|||
RLCA |
|||
RLCA |
|||
CALL HEXCONV |
|||
LD D,A |
|||
RET |
|||
; |
|||
; CONVERT LOW NIBBLE OF A TO ASCII HEX |
|||
; |
|||
HEXCONV: |
|||
AND 0FH ;LOW NIBBLE ONLY |
|||
ADD A,90H |
|||
DAA |
|||
ADC A,40H |
|||
DAA |
|||
RET |
|||
; |
|||
ERROR: |
|||
LD DE,STR_ERR ; POINT TO ERROR STRING |
|||
CALL PRTSTR ; PRINT IT |
|||
HALT ; HALT |
|||
; |
|||
; DATA |
|||
; |
|||
STR_LOAD .DB "\r\nLoading",0 |
|||
STR_DONE .DB "\r\n",0 |
|||
STR_ERR .DB " Read Error!",0 |
|||
; |
|||
.ORG $ - $8000 ; RESTORE ORG |
|||
.FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE |
|||
; |
|||
; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A |
|||
; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM. |
|||
; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80. |
|||
; |
|||
PARTTBL .FILL PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES |
|||
; |
|||
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT |
|||
; SIGNATURE. |
|||
; |
|||
BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE |
|||
; |
|||
;------------------------------------------------------------------------------- |
|||
; SECTOR 2 |
|||
; |
|||
; THIS SECTOR HAS NOT BEEN DEFINED AND IS RESERVED. |
|||
; |
|||
;---------------------------------------------------------------------------- |
|||
; |
|||
.FILL 512,0 ; JUST FILL SECTOR WITH ZEROES |
|||
; |
|||
;------------------------------------------------------------------------------- |
|||
; SECTOR 3 |
|||
; |
|||
; OS AND DISK METADATA |
|||
; |
|||
;---------------------------------------------------------------------------- |
|||
; |
|||
.FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED |
|||
; |
|||
; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY |
|||
; SOME HARDWARE BIOSES. |
|||
; |
|||
PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE |
|||
; |
|||
; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES |
|||
; |
|||
PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM) |
|||
PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED) |
|||
PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED) |
|||
PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED) |
|||
PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED) |
|||
; |
|||
; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR |
|||
; |
|||
.FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H |
|||
; |
|||
; SECOND CHUNK OF METADATA |
|||
; |
|||
PR_WP .DB 0 ; WRITE PROTECT BOOLEADN |
|||
PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) |
|||
PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION |
|||
PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!) |
|||
.DW 0 ; DEPRECATED |
|||
PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM |
|||
PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM |
|||
PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS) |
|||
; |
|||
; |
|||
; |
|||
.END |
|||
Loading…
Reference in new issue