Browse Source

Build process cleanup

pull/90/head
Wayne Warthen 6 years ago
parent
commit
ae287ca56d
  1. 14
      Source/BL/Build.cmd
  2. 6
      Source/BL/Clean.cmd
  3. 5
      Source/BuildShared.cmd
  4. 8
      Source/CPM22/Build.cmd
  5. 1
      Source/CPM22/Clean.cmd
  6. 0
      Source/CPM22/loader.asm
  7. 0
      Source/CPM22/ver.inc
  8. 1
      Source/Clean.cmd
  9. 24
      Source/HBIOS/Build.ps1
  10. 20
      Source/Images/Build.cmd
  11. 8
      Source/ZSDOS/Build.cmd
  12. 1
      Source/ZSDOS/Clean.cmd
  13. 228
      Source/ZSDOS/loader.asm
  14. 5
      Source/ZSDOS/ver.inc

14
Source/BL/Build.cmd

@ -1,14 +0,0 @@
@echo off
setlocal
set TOOLS=../../Tools
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
set TASMTABS=%TOOLS%\tasm32
set ZXBINDIR=%TOOLS%/cpm/bin/
set ZXLIBDIR=%TOOLS%/cpm/lib/
set ZXINCDIR=%TOOLS%/cpm/include/
tasm -t80 -g3 -fFF bl.asm bl.bin bl.lst

6
Source/BL/Clean.cmd

@ -1,6 +0,0 @@
@echo off
setlocal
if exist *.bin del *.bin
if exist *.lst del *.lst
if exist *.sys del *.sys

5
Source/BuildShared.cmd

@ -1,14 +1,13 @@
@echo off @echo off
setlocal setlocal
setlocal & cd Apps && call Build || exit /b 1 & endlocal
setlocal & cd CBIOS && call Build || exit /b 1 & endlocal
setlocal & cd CPM22 && call Build || exit /b 1 & endlocal setlocal & cd CPM22 && call Build || exit /b 1 & endlocal
setlocal & cd ZCPR && call Build || exit /b 1 & endlocal setlocal & cd ZCPR && call Build || exit /b 1 & endlocal
setlocal & cd ZCPR-DJ && call Build || exit /b 1 & endlocal setlocal & cd ZCPR-DJ && call Build || exit /b 1 & endlocal
setlocal & cd ZSDOS && call Build || exit /b 1 & endlocal setlocal & cd ZSDOS && call Build || exit /b 1 & endlocal
setlocal & cd CBIOS && call Build || exit /b 1 & endlocal
setlocal & cd CPM3 && call Build || exit /b 1 & endlocal setlocal & cd CPM3 && call Build || exit /b 1 & endlocal
setlocal & cd ZPM3 && call Build || exit /b 1 & endlocal setlocal & cd ZPM3 && call Build || exit /b 1 & endlocal
setlocal & cd Apps && call Build || exit /b 1 & endlocal
setlocal & cd Forth && call Build || exit /b 1 & endlocal setlocal & cd Forth && call Build || exit /b 1 & endlocal
setlocal & cd Fonts && call Build || exit /b 1 & endlocal setlocal & cd Fonts && call Build || exit /b 1 & endlocal
setlocal & cd BL && call Build || exit /b 1 & endlocal

8
Source/CPM22/Build.cmd

@ -32,6 +32,14 @@ zx MLOAD25 -OS2CCP.BIN=OS2CCP.HEX
zx MAC -OS3BDOS.ASM -$PO zx MAC -OS3BDOS.ASM -$PO
zx MLOAD25 -OS3BDOS.BIN=OS3BDOS.HEX zx MLOAD25 -OS3BDOS.BIN=OS3BDOS.HEX
tasm -t80 -g3 -fFF loader.asm loader.bin loader.lst
copy /b os2ccp.bin + os3bdos.bin + ..\cbios\cbios_wbw.bin cpm_wbw.bin
copy /b os2ccp.bin + os3bdos.bin + ..\cbios\cbios_una.bin cpm_una.bin
copy /b loader.bin + cpm_wbw.bin cpm_wbw.sys
copy /b loader.bin + cpm_una.bin cpm_una.sys
goto :eof goto :eof
:asm :asm

1
Source/CPM22/Clean.cmd

@ -5,3 +5,4 @@ if exist *.bin del *.bin
if exist *.lst del *.lst if exist *.lst del *.lst
if exist *.prn del *.prn if exist *.prn del *.prn
if exist *.hex del *.hex if exist *.hex del *.hex
if exist *.sys del *.sys

0
Source/BL/bl.asm → Source/CPM22/loader.asm

0
Source/BL/ver.inc → Source/CPM22/ver.inc

1
Source/Clean.cmd

@ -11,7 +11,6 @@ setlocal & cd CPM3 && call Clean.cmd & endlocal
setlocal & cd ZPM3 && call Clean.cmd & endlocal setlocal & cd ZPM3 && call Clean.cmd & endlocal
setlocal & cd Forth && call Clean.cmd & endlocal setlocal & cd Forth && call Clean.cmd & endlocal
setlocal & cd Fonts && call Clean.cmd & endlocal setlocal & cd Fonts && call Clean.cmd & endlocal
setlocal & cd BL && call Clean.cmd & endlocal
setlocal & cd BPBIOS && call Clean.cmd & endlocal setlocal & cd BPBIOS && call Clean.cmd & endlocal
setlocal & cd HBIOS && call Clean.cmd & endlocal setlocal & cd HBIOS && call Clean.cmd & endlocal
setlocal & cd Doc && call Clean.cmd & endlocal setlocal & cd Doc && call Clean.cmd & endlocal

24
Source/HBIOS/Build.ps1

@ -107,7 +107,7 @@ $ComFile = "${OutDir}/${RomName}.com" # Final name of COM image (command line lo
$ImgFile = "${OutDir}/${RomName}.img" # Final name of IMG image (memory loadable HBIOS/CBIOS image) $ImgFile = "${OutDir}/${RomName}.img" # Final name of IMG image (memory loadable HBIOS/CBIOS image)
# Select the proper CBIOS to include in the ROM. UNA is special. # Select the proper CBIOS to include in the ROM. UNA is special.
if ($Platform -eq "UNA") {$CBiosFile = '../CBIOS/cbios_una.bin'} else {$CBiosFile = '../CBIOS/cbios_wbw.bin'}
if ($Platform -eq "UNA") {$Bios = 'una'} else {$Bios = 'wbw'}
# List of RomWBW proprietary apps to imbed in ROM disk. # List of RomWBW proprietary apps to imbed in ROM disk.
$RomApps = "assign","fdu","format","mode","osldr","rtc","survey","syscopy","sysgen","talk","timer","xm","inttest" $RomApps = "assign","fdu","format","mode","osldr","rtc","survey","syscopy","sysgen","talk","timer","xm","inttest"
@ -155,14 +155,6 @@ ROMSIZE .EQU ${ROMSize}
; ;
"@ | Out-File "build.inc" -Encoding ASCII "@ | Out-File "build.inc" -Encoding ASCII
# Bring over previously assembled binary copy of the CP/M CCP and BDOS images for later use.
Copy-Item '..\cpm22\os2ccp.bin' 'ccp.bin'
Copy-Item '..\cpm22\os3bdos.bin' 'bdos.bin'
# Bring over previously assembled binary copy of the ZSystem CCP and BDOS images for later use.
Copy-Item '..\zcpr-dj\zcpr.bin' 'zcpr.bin'
Copy-Item '..\zsdos\zsdos.bin' 'zsdos.bin'
# Bring over previously assembled binary copy of Forth for later use. # Bring over previously assembled binary copy of Forth for later use.
Copy-Item '..\Forth\camel80.bin' 'camel80.bin' Copy-Item '..\Forth\camel80.bin' 'camel80.bin'
@ -187,17 +179,10 @@ if ($Platform -ne "UNA")
# #
"Building ${RomName} output files..." "Building ${RomName} output files..."
# Combine the CCP and BDOS portions of CP/M and ZSystem to create OS images
Concat 'ccp.bin','bdos.bin',$CBiosFile 'cpm.bin'
Concat 'zcpr.bin','zsdos.bin',$CBiosFile 'zsys.bin'
# Prepend a bit of boot code required to bootstrap the OS images
Concat 'prefix.bin','cpm.bin' 'cpm.sys'
Concat 'prefix.bin','zsys.bin' 'zsys.sys'
# Build 32K OS chunk containing the loader, debug monitor, and OS images # Build 32K OS chunk containing the loader, debug monitor, and OS images
Concat 'romldr.bin', 'eastaegg.bin','dbgmon.bin', 'cpm.bin', 'zsys.bin' osimg.bin
Concat 'romldr.bin', 'eastaegg.bin','dbgmon.bin', "..\cpm22\cpm_${Bios}.bin", "..\zsdos\zsys_${Bios}.bin" osimg.bin
Concat 'camel80.bin', 'nascom.bin', 'tastybasic.bin', 'game.bin', 'imgpad0.bin' osimg1.bin Concat 'camel80.bin', 'nascom.bin', 'tastybasic.bin', 'game.bin', 'imgpad0.bin' osimg1.bin
# #
# Now the ROM disk image is created. This is done by starting with a # Now the ROM disk image is created. This is done by starting with a
# blank ROM disk image of the correct size, then cpmtools is used to # blank ROM disk image of the correct size, then cpmtools is used to
@ -225,7 +210,8 @@ foreach ($App in $RomApps)
} }
# Add the CP/M and ZSystem system images to the ROM disk (used by SYSCOPY) # Add the CP/M and ZSystem system images to the ROM disk (used by SYSCOPY)
cpmcp -f $RomFmt $RomDiskFile *.sys 0:
cpmcp -f $RomFmt $RomDiskFile ..\cpm22\cpm_${Bios}.sys 0:cpm.sys
cpmcp -f $RomFmt $RomDiskFile ..\zsdos\zsys_${Bios}.sys 0:zsys.sys
# #
# Finally, the individual binary components are concatenated together to produce # Finally, the individual binary components are concatenated together to produce

20
Source/Images/Build.cmd

@ -6,20 +6,12 @@ echo : Cleaning...
echo : echo :
call Clean.cmd call Clean.cmd
echo :
echo : Creating System Images
echo :
copy /b ..\bl\bl.bin + ..\cpm22\os2ccp.bin + ..\cpm22\os3bdos.bin + ..\cbios\cbios_wbw.bin cpm_wbw.sys
copy /b ..\bl\bl.bin + ..\cpm22\os2ccp.bin + ..\cpm22\os3bdos.bin + ..\cbios\cbios_una.bin cpm_una.sys
copy /b ..\bl\bl.bin + ..\zcpr-dj\zcpr.bin + ..\zsdos\zsdos.bin + ..\cbios\cbios_wbw.bin zsys_wbw.sys
copy /b ..\bl\bl.bin + ..\zcpr-dj\zcpr.bin + ..\zsdos\zsdos.bin + ..\cbios\cbios_una.bin zsys_una.sys
echo : echo :
echo : Building Floppy Disk Images... echo : Building Floppy Disk Images...
echo : echo :
call BuildFD.cmd cpm22 cpm_wbw
call BuildFD.cmd zsdos zsys_wbw
call BuildFD.cmd nzcom zsys_wbw
call BuildFD.cmd cpm22 ..\cpm22\cpm_wbw
call BuildFD.cmd zsdos ..\zsdos\zsys_wbw
call BuildFD.cmd nzcom ..\zsdos\zsys_wbw
call BuildFD.cmd cpm3 call BuildFD.cmd cpm3
call BuildFD.cmd zpm3 call BuildFD.cmd zpm3
call BuildFD.cmd ws4 call BuildFD.cmd ws4
@ -27,9 +19,9 @@ call BuildFD.cmd ws4
echo : echo :
echo : Building Hard Disk Images... echo : Building Hard Disk Images...
echo : echo :
call BuildHD.cmd cpm22 cpm_wbw
call BuildHD.cmd zsdos zsys_wbw
call BuildHD.cmd nzcom zsys_wbw
call BuildHD.cmd cpm22 ..\cpm22\cpm_wbw
call BuildHD.cmd zsdos ..\zsdos\zsys_wbw
call BuildHD.cmd nzcom ..\zsdos\zsys_wbw
call BuildHD.cmd cpm3 call BuildHD.cmd cpm3
call BuildHD.cmd zpm3 call BuildHD.cmd zpm3
call BuildHD.cmd ws4 call BuildHD.cmd ws4

8
Source/ZSDOS/Build.cmd

@ -13,3 +13,11 @@ set ZXINCDIR=%TOOLS%/cpm/include/
zx ZMAC -ZSDOS -/P zx ZMAC -ZSDOS -/P
zx LINK -ZSDOS.BIN=ZSDOS[LD800] zx LINK -ZSDOS.BIN=ZSDOS[LD800]
tasm -t80 -g3 -fFF loader.asm loader.bin loader.lst
copy /b ..\zcpr-dj\zcpr.bin + zsdos.bin + ..\cbios\cbios_wbw.bin zsys_wbw.bin
copy /b ..\zcpr-dj\zcpr.bin + zsdos.bin + ..\cbios\cbios_una.bin zsys_una.bin
copy /b loader.bin + zsys_wbw.bin zsys_wbw.sys
copy /b loader.bin + zsys_una.bin zsys_una.sys

1
Source/ZSDOS/Clean.cmd

@ -9,3 +9,4 @@ if exist *.hex del *.hex
if exist *.rel del *.rel if exist *.rel del *.rel
if exist *.sym del *.sym if exist *.sym del *.sym
if exist *.err del *.err if exist *.err del *.err
if exist *.sys del *.sys

228
Source/ZSDOS/loader.asm

@ -0,0 +1,228 @@
;===============================================================================
; BL.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 "ver.inc"
;
SYS_ENT .EQU $E600 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $D000 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE
SYS_END .EQU $FE00 ; 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

5
Source/ZSDOS/ver.inc

@ -0,0 +1,5 @@
#DEFINE RMJ 2
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.28"
Loading…
Cancel
Save