mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-08 07:23:14 -06:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1326737ee |
@@ -1,14 +1,14 @@
|
||||
/************************************/
|
||||
/* applvers.h dwg - 2.5.2.18 */
|
||||
/* applvers.h dwg - 2.5.0.15 */
|
||||
/************************************/
|
||||
|
||||
#define A_RMJ 2
|
||||
#define A_RMN 5
|
||||
#define A_RUP 2
|
||||
#define A_RTP 18
|
||||
#define A_RUP 0
|
||||
#define A_RTP 16
|
||||
|
||||
#define A_MONTH 9
|
||||
#define A_DAY 29
|
||||
#define A_MONTH 6
|
||||
#define A_DAY 23
|
||||
#define A_YEAR 2013
|
||||
#define A_YR 13
|
||||
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
|
||||
A$RMJ equ 2
|
||||
A$RMN equ 5
|
||||
A$RUP equ 2
|
||||
A$RTP equ 18
|
||||
A$RUP equ 0
|
||||
A$RTP equ 16
|
||||
|
||||
A$MONTH equ 9
|
||||
A$DAY equ 29
|
||||
A$MONTH equ 6
|
||||
A$DAY equ 23
|
||||
A$YEAR equ 2013
|
||||
|
||||
date macro
|
||||
dat db ' 9/29/2013$'
|
||||
dat db ' 6/23/2013$'
|
||||
endm
|
||||
|
||||
serial macro
|
||||
|
||||
@@ -131,7 +131,7 @@ prtcfg1(pSysCfg)
|
||||
pCfg->conbaud);
|
||||
pager();
|
||||
printf ("Default Video Display: %s, Default Emulation: %s",
|
||||
VDAName[(pCfg->defvda) >> 4], EmuName[pCfg->defemu]);
|
||||
VDAName[pCfg->defvda], EmuName[pCfg->defemu]);
|
||||
pager();
|
||||
printf ("Current Terminal Type: %s",
|
||||
TermName[pCfg->termtype]);
|
||||
|
||||
@@ -1,11 +1,3 @@
|
||||
Version 2.5.2
|
||||
-------------
|
||||
- WBW: Added initial support for RAM Floppy
|
||||
|
||||
Version 2.5.1
|
||||
-------------
|
||||
- WBW: Fix PPIDE bug
|
||||
|
||||
Version 2.5
|
||||
-----------
|
||||
- WBW: Implemented CRT driver model (video and keyboard)
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
Assembling the RomWBW firmware under Linux.
|
||||
|
||||
Note: Updated on 6/25/2013 to eliminate the need for the separate Linux
|
||||
makefile. The standard makefile now has conditionals to allow it to be
|
||||
used under Windows of Linux (I hope) --WW
|
||||
|
||||
This method has been used under Ubuntu Linux and may have to be adapted for
|
||||
other distributions. It is a bit more involved than the Windows procedure.
|
||||
|
||||
@@ -29,17 +25,24 @@ These are all done from a terminal. (: is end of the command prompt)
|
||||
1. Go to the RomWBW Source directory.e.g.
|
||||
:cd /n8vem/RomWBW/current/Source
|
||||
|
||||
2. The Linux version of TASM can't handle the CR-LF line endings. So from the
|
||||
2. I have included a new makefile called "makefile.linux" in the Source
|
||||
directory. Rename this to just "makefile". Edit it to suit your targets and
|
||||
if you have changed the default location for TASM.
|
||||
:~/RomWBW/current/Source mv makefile.linux makefile
|
||||
|
||||
3. The Linux version of TASM can't handle the CR-LF line endings. So from the
|
||||
command prompt use dos2unix to convert all the source files.
|
||||
:~/RomWBW/current/Source dos2unix -f *.asm *.inc *.z80 *.lib diskdefs
|
||||
|
||||
3. You'll have to alter the disk definitions for the cpmtools package to cater
|
||||
4. You'll have to alter the disk definitions for the cpmtools package to cater
|
||||
for the new roms. Easiest way is to copy the one given in the source over the
|
||||
old. This must be done as superuser.
|
||||
:~/RomWBW/current/Source sudo cp diskdefs /etc/cpmtools/diskdefs
|
||||
|
||||
4. From now on it's the same as using the DOS/Windows instructions in Build.txt.
|
||||
5. From now on it's the same as using the DOS/Windows instructions in Build.txt.
|
||||
Make any last changes, go to the Source directory and make
|
||||
:~/RomWBW/current/Source make clean ; make
|
||||
|
||||
DGG
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -7,7 +7,7 @@ echo which means that local scripts can be run without
|
||||
echo being signed. This is required to use the RomWBW
|
||||
echo build process.
|
||||
echo.
|
||||
PowerShell -command Write-Host "Your PowerShell ExecutionPolicy is currently set to: `'(Get-ExecutionPolicy)`'"
|
||||
PowerShell -command Write-Host "Your PowerShell ExecutionPolicy is currently (Get-ExecutionPolicy)"
|
||||
echo.
|
||||
echo In order to modify the ExecutionPolicy, this command
|
||||
echo file *MUST* be run with administrator privileges.
|
||||
@@ -24,6 +24,6 @@ echo Attempting to change Execution Policy...
|
||||
echo.
|
||||
PowerShell Set-ExecutionPolicy RemoteSigned
|
||||
echo.
|
||||
PowerShell -command Write-Host "Your new PowerShell ExecutionPolicy is now set to: `'(Get-ExecutionPolicy)`'"
|
||||
PowerShell -command Write-Host "Your new PowerShell ExecutionPolicy is now (Get-ExecutionPolicy)"
|
||||
echo.
|
||||
pause
|
||||
@@ -8,8 +8,8 @@ Builders: Wayne Warthen (wwarthen@gmail.com)
|
||||
Douglas Goodall (douglas_goodall@mac.com)
|
||||
David Giles (vk5dg@internode.on.net)
|
||||
|
||||
Updated: 2013-09-28
|
||||
Version: 2.5.2
|
||||
Updated: 2013-06-23
|
||||
Version: 2.5
|
||||
|
||||
This is an adaptation of CP/M-80 2.2 and ZSDOS/ZCPR
|
||||
targeting ROMs for all N8VEM Z80 hardware variations
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
14
RomList.txt
14
RomList.txt
@@ -108,13 +108,6 @@ DRI CP/M (BDOS & CCP)
|
||||
- Basic ROM/RAM disk (no floppy/IDE)
|
||||
- Drives A:=ROM, B:=RAM, C:=HDSK0-00, D:=HDSK0-01, E:=HDSK0-02, F:=HDSK0-03
|
||||
|
||||
N8VEM_rf.rom for N8VEM Z80 SBC V1/2 + RAM Flopppy:
|
||||
- 512KB ROM, 512KB RAM
|
||||
- 38.4KB serial console baud rate
|
||||
- Basic ROM/RAM disk (no floppy/IDE)
|
||||
- RAM Floppy support
|
||||
- Drives A:=ROM, B:=RAM, C:=RF0, D:=RF1
|
||||
|
||||
N8VEM_vdu.rom for N8VEM Z80 SBC V1/V2:
|
||||
- 512KB ROM, 512KB RAM
|
||||
- 38.4KB serial console baud rate
|
||||
@@ -260,13 +253,6 @@ ZSYSTEM (ZSDOS & ZCPR)
|
||||
- Basic ROM/RAM disk (no floppy/IDE)
|
||||
- Drives A:=ROM, B:=RAM, C:=HDSK0-00, D:=HDSK0-01, E:=HDSK0-02, F:=HDSK0-03
|
||||
|
||||
N8VEM_rf_z.rom for N8VEM Z80 SBC V1/2 + RAM Flopppy:
|
||||
- 512KB ROM, 512KB RAM
|
||||
- 38.4KB serial console baud rate
|
||||
- Basic ROM/RAM disk (no floppy/IDE)
|
||||
- RAM Floppy support
|
||||
- Drives A:=ROM, B:=RAM, C:=RF0, D:=RF1
|
||||
|
||||
ZETA_std_z.rom for Zeta Z80 SBC:
|
||||
- 512KB ROM, 512KB RAM
|
||||
- 38.4KB serial console baud rate
|
||||
|
||||
@@ -46,7 +46,7 @@ WBOOTE JP WBOOT ; #1 - WARM START
|
||||
; easily located by external programs. They transfger control to routines
|
||||
; that are located somewhere within the main section of the CBIOS.
|
||||
;
|
||||
JP PANIC ; #17 - SEL. RAM BANK FOR LOW32K (deprecated, use HBIOS)
|
||||
JP BNKSEL ; #17 - SEL. RAM BANK FOR LOW32K (obsolete, use HBIOS)
|
||||
JP GETDSK ; #18 - Get Disk Info (device/unit/lu)
|
||||
JP SETDSK ; #19 - Set Disk Into (device/unit/lu)
|
||||
JP GETINFO ; #20 - Get BIOS Info Base Ptr
|
||||
@@ -101,13 +101,15 @@ WBOOT:
|
||||
IM 1
|
||||
;
|
||||
LD SP,ISTACK ; STACK FOR INITIALIZATION
|
||||
;
|
||||
LD B,BF_SYSBNKCPY ; B = FUNCTION = BANK COPY
|
||||
LD C,$81 ; C = BANK = RAM BANK 1
|
||||
LD HL,$0800 ; SOURCE = $800, CCP CACHE IN RAM BANK 1
|
||||
LD DE,CPM_LOC ; DESTINATION IS LOCATION OF ACTIVE CCP
|
||||
LD IX,CCPSIZ ; SIZE OF CCP
|
||||
RST 08
|
||||
;
|
||||
; RELOAD COMMAND PROCESSOR FROM CACHE
|
||||
LD A,1 ; SELECT RAM BANK 1
|
||||
CALL RAMPG ; DO IT
|
||||
LD HL,0800H ; LOCATION IN RAM BANK 1 OF COMMAND PROCESSOR CACHE
|
||||
LD DE,CPM_LOC ; LOCATION OF ACTIVE COMMAND PROCESSOR
|
||||
LD BC,CCPSIZ ; SIZE OF COMMAND PROCESSOR
|
||||
LDIR ; COPY
|
||||
CALL RAMPGZ ; RESTORE RAM PAGE 0
|
||||
;
|
||||
; FALL THRU TO INVOKE CP/M
|
||||
;
|
||||
@@ -376,6 +378,12 @@ READWRITE:
|
||||
JR BLKRW
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
BNKSEL:
|
||||
;
|
||||
LD A,C
|
||||
JP RAMPG
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
GETDSK:
|
||||
;
|
||||
; INPUT: C=DRIVE # (0=A, 1=B, ... P=16)
|
||||
@@ -1425,14 +1433,6 @@ SIZ_HDSK_DPH .EQU $ - ORG_HDSK_DPH
|
||||
.ECHO SIZ_HDSK_DPH
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
#IF (RFENABLE)
|
||||
ORG_RF_DPH .EQU $
|
||||
#INCLUDE "rf_dph.asm"
|
||||
SIZ_RF_DPH .EQU $ - ORG_RF_DPH
|
||||
.ECHO "RF DPH occupies "
|
||||
.ECHO SIZ_RF_DPH
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
; DISK PARAMETER BLOCKS
|
||||
;
|
||||
@@ -1496,24 +1496,6 @@ DPB_RAM:
|
||||
.DW 0 ; OFF: RESERVED TRACKS = 0 TRK
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
; 4MB RAM FLOPPY DRIVE, 32 TRKS, 1024 SECS/TRK, 128 BYTES/SEC
|
||||
; BLOCKSIZE (BLS) = 2K, DIRECTORY ENTRIES = 256
|
||||
; SEC/TRK ENGINEERED SO THAT AFTER DEBLOCKING, SECTOR NUMBER OCCUPIES 1 BYTE (0-255)
|
||||
;
|
||||
.DB (2048 / 128) ; RECORDS PER BLOCK (BLS / 128)
|
||||
DPB_RF:
|
||||
.DW 1024 ; SPT: SECTORS PER TRACK
|
||||
.DB 4 ; BSH: BLOCK SHIFT FACTOR
|
||||
.DB 15 ; BLM: BLOCK MASK
|
||||
.DB 0 ; EXM: EXTENT MASK
|
||||
.DW 2047 ; DSM: TOTAL STORAGE IN BLOCKS - 1 BLK = (4MB / 2K BLS) - 1 = 2047
|
||||
.DW 255 ; DRM: DIR ENTRIES - 1 = 256 - 1 = 255
|
||||
.DB 11110000B ; AL0: DIR BLK BIT MAP, FIRST BYTE
|
||||
.DB 00000000B ; AL1: DIR BLK BIT MAP, SECOND BYTE
|
||||
.DW 0 ; CKS: DIRECTORY CHECK VECTOR SIZE = 256 / 4
|
||||
.DW 0 ; OFF: RESERVED TRACKS = 0 TRK
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
; 8MB HARD DISK DRIVE, 65 TRKS, 1024 SECS/TRK, 128 BYTES/SEC
|
||||
; BLOCKSIZE (BLS) = 4K, DIRECTORY ENTRIES = 128
|
||||
; SEC/TRK ENGINEERED SO THAT AFTER DEBLOCKING, SECTOR NUMBER OCCUPIES 1 BYTE (0-255)
|
||||
@@ -1650,7 +1632,6 @@ DPB_MAP:
|
||||
.DW DPB_FD360 ; MID_FD360
|
||||
.DW DPB_FD120 ; MID_FD120
|
||||
.DW DPB_FD111 ; MID_FD111
|
||||
.DW DPB_RF ; MID_RF
|
||||
;
|
||||
DPB_CNT .EQU ($ - DPB_MAP) / 2
|
||||
;
|
||||
@@ -1726,10 +1707,6 @@ DPH_MAP:
|
||||
.DW HDSKDPH2
|
||||
.DW HDSKDPH3
|
||||
#ENDIF
|
||||
#IF (DSKMAP == DM_RF)
|
||||
.DW RFDPH0
|
||||
.DW RFDPH1
|
||||
#ENDIF
|
||||
#IF (DSKMAP != DM_ROM)
|
||||
.DW MDDPH0
|
||||
#ENDIF
|
||||
@@ -1776,10 +1753,6 @@ DPH_MAP:
|
||||
.DW HDSKDPH2
|
||||
.DW HDSKDPH3
|
||||
#ENDIF
|
||||
#IF ((DSKMAP != DM_RF) & RFENABLE)
|
||||
.DW RFDPH0
|
||||
.DW RFDPH1
|
||||
#ENDIF
|
||||
#ENDIF ; CUSTOM_DPHMAP
|
||||
;
|
||||
DPH_CNT .EQU ($ - DPH_MAP) / 2
|
||||
@@ -1882,6 +1855,9 @@ INIT:
|
||||
; SETUP A TEMP STACK IN UPPER 32K
|
||||
LD SP,ISTACK ; STACK FOR INITIALIZATION
|
||||
|
||||
; ENSURE RAM PAGE ZERO ACTIVE
|
||||
CALL RAMPGZ
|
||||
|
||||
; THIS INIT CODE WILL BE OVERLAID, SO WE ARE GOING
|
||||
; TO MODIFY THE BOOT ENTRY POINT TO CAUSE A PANIC
|
||||
; TO EASILY IDENTIFY IF SOMETHING TRIES TO INVOKE
|
||||
@@ -1916,13 +1892,14 @@ INIT1:
|
||||
CALL WRITESTR
|
||||
CALL NEWLINE
|
||||
|
||||
; SAVE COMMAND PROCESSOR TO CACHE IN RAM BANK 1
|
||||
LD B,BF_SYSBNKCPY ; B = FUNCTION = BANK COPY
|
||||
LD C,$81 ; C = BANK = RAM BANK 1
|
||||
LD HL,CPM_LOC ; SOURCE IS LOCATION OF ACTIVE CCP
|
||||
LD DE,$0800 ; DESTINATION = $800, CCP CACHE IN RAM BANK 1
|
||||
LD IX,CCPSIZ ; SIZE OF CCP
|
||||
RST 08
|
||||
; SAVE COMMAND PROCESSOR TO CACHE IN RAM1
|
||||
LD A,1
|
||||
CALL RAMPG
|
||||
LD HL,CPM_LOC ; LOCATION OF ACTIVE COMMAND PROCESSOR
|
||||
LD DE,0800H ; LOCATION IN RAM 1 OF COMMAND PROCESSOR CACHE
|
||||
LD BC,CCPSIZ ; SIZE OF COMMAND PROCESSOR
|
||||
LDIR
|
||||
CALL RAMPGZ
|
||||
|
||||
; SYSTEM INITIALIZATION
|
||||
CALL BLKRES ; RESET DISK (DE)BLOCKING ALGORITHM
|
||||
|
||||
@@ -83,8 +83,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU TRUE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -83,8 +83,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU TRUE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -91,8 +91,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU TRUE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU TRUE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -91,8 +91,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC
|
||||
;==================================================================================================
|
||||
;
|
||||
; BUILD CONFIGURATION OPTIONS
|
||||
;
|
||||
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
|
||||
;
|
||||
BOOTCON .EQU CIODEV_UART ; CONSOLE DEVICE FOR BOOT MESSAGES (MUST BE PRIMARY SERIAL PORT FOR PLATFORM)
|
||||
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
|
||||
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
|
||||
CONBAUD .EQU 38400 ; BAUDRATE FOR CONSOLE DURING HARDWARE INIT
|
||||
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
|
||||
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
TERMTYPE .EQU TERM_ANSI ; TERM_TTY=0, TERM_ANSI=1, TERM_WYSE=2
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
CLRRAMDISK .EQU CLR_AUTO ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA)
|
||||
;
|
||||
DSKMAP .EQU DM_RAM ; DM_ROM, DM_RAM, DM_FD, DM_IDE, DM_PPIDE, DM_SD, DM_PRPSD, DM_PPPSD, DM_HDSK
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
UARTENABLE .EQU TRUE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE)
|
||||
UARTCNT .EQU 1 ; NUMBER OF UARTS
|
||||
UART0IOB .EQU $68 ; UART0 IOBASE
|
||||
UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE
|
||||
UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY)
|
||||
UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!)
|
||||
;
|
||||
ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT
|
||||
ASCI0BAUD .EQU CONBAUD ; ASCI0 BAUDRATE (IMPLEMENTED BY Z180_CNTLB0)
|
||||
ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1)
|
||||
;
|
||||
VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
|
||||
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT
|
||||
UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT
|
||||
N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT
|
||||
;
|
||||
DEFIOBYTE .EQU $00 ; DEFAULT INITIAL VALUE FOR CP/M IOBYTE, $00=TTY, $01=CRT (MUST HAVE CRT HARDWARE)
|
||||
ALTIOBYTE .EQU DEFIOBYTE ; ALT INITIAL VALUE (USED WHEN CONFIG JUMPER SHORTED)
|
||||
WRTCACHE .EQU TRUE ; ENABLE WRITE CACHING IN CBIOS (DE)BLOCKING ALGORITHM
|
||||
DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS
|
||||
;
|
||||
MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED)
|
||||
;
|
||||
FDENABLE .EQU FALSE ; TRUE FOR FLOPPY SUPPORT
|
||||
FDMODE .EQU FDMODE_DIO ; FDMODE_DIO, FDMODE_ZETA, FDMODE_DIDE, FDMODE_N8, FDMODE_DIO3
|
||||
FDTRACE .EQU 1 ; 0=SILENT, 1=FATAL ERRORS, 2=ALL ERRORS, 3=EVERYTHING (ONLY RELEVANT IF FDENABLE = TRUE)
|
||||
FDMEDIA .EQU FDM144 ; FDM720, FDM144, FDM360, FDM120 (ONLY RELEVANT IF FDENABLE = TRUE)
|
||||
FDMEDIAALT .EQU FDM720 ; ALTERNATE MEDIA TO TRY, SAME CHOICES AS ABOVE (ONLY RELEVANT IF FDMAUTO = TRUE)
|
||||
FDMAUTO .EQU TRUE ; SELECT BETWEEN MEDIA OPTS ABOVE AUTOMATICALLY
|
||||
;
|
||||
IDEENABLE .EQU FALSE ; TRUE FOR IDE SUPPORT
|
||||
IDEMODE .EQU IDEMODE_DIO ; IDEMODE_DIO, IDEMODE_DIDE
|
||||
IDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
IDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!)
|
||||
IDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
PPIDEENABLE .EQU FALSE ; TRUE FOR PPIDE SUPPORT (DO NOT COMBINE WITH DSKYENABLE)
|
||||
PPIDEIOB .EQU $60 ; PPIDE IOBASE
|
||||
PPIDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPIDEENABLE = TRUE)
|
||||
PPIDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!)
|
||||
PPIDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
PPIDESLOW .EQU FALSE ; ADD DELAYS TO HELP PROBLEMATIC HARDWARE (TRY THIS IF PPIDE IS UNRELIABLE)
|
||||
;
|
||||
SDENABLE .EQU FALSE ; TRUE FOR SD SUPPORT
|
||||
SDMODE .EQU SDMODE_JUHA ; SDMODE_JUHA, SDMODE_CSIO, SDMODE_UART, SDMODE_PPI, SDMODE_DSD
|
||||
SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER
|
||||
;
|
||||
PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!)
|
||||
PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!)
|
||||
PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE)
|
||||
PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; TRUE FOR PARPORTPROP SUPPORT
|
||||
PPPSDENABLE .EQU TRUE ; TRUE FOR PARPORTPROP SD SUPPORT
|
||||
PPPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPPENABLE = TRUE)
|
||||
PPPSDCAPACITY .EQU 64 ; CAPACITY OF PPP SD DEVICE (IN MB)
|
||||
PPPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU TRUE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
KBDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF KBDENABLE = TRUE)
|
||||
;
|
||||
TTYENABLE .EQU FALSE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .EQU FALSE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABLE = TRUE)
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS)
|
||||
BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE
|
||||
BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU TRUE ; TRUE FOR HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU TRUE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ROMWBW 2.X CONFIGURATION FOR ZETA W/ PPISD
|
||||
;==================================================================================================
|
||||
;
|
||||
; BUILD CONFIGURATION OPTIONS
|
||||
;
|
||||
CPUFREQ .EQU 20 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
|
||||
;
|
||||
BOOTCON .EQU CIODEV_UART ; CONSOLE DEVICE FOR BOOT MESSAGES (MUST BE PRIMARY SERIAL PORT FOR PLATFORM)
|
||||
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
|
||||
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
|
||||
CONBAUD .EQU 38400 ; BAUDRATE FOR CONSOLE DURING HARDWARE INIT
|
||||
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
|
||||
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
TERMTYPE .EQU TERM_ANSI ; TERM_TTY=0, TERM_ANSI=1, TERM_WYSE=2
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
CLRRAMDISK .EQU CLR_AUTO ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA)
|
||||
;
|
||||
DSKMAP .EQU DM_RAM ; DM_ROM, DM_RAM, DM_FD, DM_IDE, DM_PPIDE, DM_SD, DM_PRPSD, DM_PPPSD, DM_HDSK
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
UARTENABLE .EQU TRUE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE)
|
||||
UARTCNT .EQU 1 ; NUMBER OF UARTS
|
||||
UART0IOB .EQU $68 ; UART0 IOBASE
|
||||
UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE
|
||||
UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY)
|
||||
UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!)
|
||||
;
|
||||
ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT
|
||||
ASCI0BAUD .EQU CONBAUD ; ASCI0 BAUDRATE (IMPLEMENTED BY Z180_CNTLB0)
|
||||
ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1)
|
||||
;
|
||||
VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
|
||||
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT
|
||||
UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT
|
||||
N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT
|
||||
;
|
||||
DEFIOBYTE .EQU $00 ; DEFAULT INITIAL VALUE FOR CP/M IOBYTE, $00=TTY, $01=CRT (MUST HAVE CRT HARDWARE)
|
||||
ALTIOBYTE .EQU DEFIOBYTE ; ALT INITIAL VALUE (USED WHEN CONFIG JUMPER SHORTED)
|
||||
WRTCACHE .EQU TRUE ; ENABLE WRITE CACHING IN CBIOS (DE)BLOCKING ALGORITHM
|
||||
DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS
|
||||
;
|
||||
MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED)
|
||||
;
|
||||
FDENABLE .EQU TRUE ; TRUE FOR FLOPPY SUPPORT
|
||||
FDMODE .EQU FDMODE_ZETA ; FDMODE_DIO, FDMODE_ZETA, FDMODE_DIDE, FDMODE_N8, FDMODE_DIO3
|
||||
FDTRACE .EQU 1 ; 0=SILENT, 1=FATAL ERRORS, 2=ALL ERRORS, 3=EVERYTHING (ONLY RELEVANT IF FDENABLE = TRUE)
|
||||
FDMEDIA .EQU FDM144 ; FDM720, FDM144, FDM360, FDM120 (ONLY RELEVANT IF FDENABLE = TRUE)
|
||||
FDMEDIAALT .EQU FDM720 ; ALTERNATE MEDIA TO TRY, SAME CHOICES AS ABOVE (ONLY RELEVANT IF FDMAUTO = TRUE)
|
||||
FDMAUTO .EQU TRUE ; SELECT BETWEEN MEDIA OPTS ABOVE AUTOMATICALLY
|
||||
;
|
||||
IDEENABLE .EQU FALSE ; TRUE FOR IDE SUPPORT
|
||||
IDEMODE .EQU IDEMODE_DIO ; IDEMODE_DIO, IDEMODE_DIDE
|
||||
IDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
IDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!)
|
||||
IDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
PPIDEENABLE .EQU FALSE ; TRUE FOR PPIDE SUPPORT (DO NOT COMBINE WITH DSKYENABLE)
|
||||
PPIDEIOB .EQU $60 ; PPIDE IOBASE
|
||||
PPIDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPIDEENABLE = TRUE)
|
||||
PPIDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!)
|
||||
PPIDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
PPIDESLOW .EQU FALSE ; ADD DELAYS TO HELP PROBLEMATIC HARDWARE (TRY THIS IF PPIDE IS UNRELIABLE)
|
||||
;
|
||||
SDENABLE .EQU TRUE ; TRUE FOR SD SUPPORT
|
||||
SDMODE .EQU SDMODE_PPI ; SDMODE_JUHA, SDMODE_CSIO, SDMODE_UART, SDMODE_PPI, SDMODE_DSD
|
||||
SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER
|
||||
;
|
||||
PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!)
|
||||
PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!)
|
||||
PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE)
|
||||
PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; TRUE FOR PARPORTPROP SUPPORT
|
||||
PPPSDENABLE .EQU TRUE ; TRUE FOR PARPORTPROP SD SUPPORT
|
||||
PPPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPPENABLE = TRUE)
|
||||
PPPSDCAPACITY .EQU 64 ; CAPACITY OF PPP SD DEVICE (IN MB)
|
||||
PPPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
KBDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF KBDENABLE = TRUE)
|
||||
;
|
||||
TTYENABLE .EQU FALSE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .EQU FALSE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABLE = TRUE)
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS)
|
||||
BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE
|
||||
BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -87,8 +87,6 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
|
||||
@@ -149,9 +149,6 @@ HB_INITTBL:
|
||||
#IF (HDSKENABLE)
|
||||
.DW HDSK_INIT
|
||||
#ENDIF
|
||||
#IF (RFENABLE)
|
||||
.DW RF_INIT
|
||||
#ENDIF
|
||||
#IF (PPKENABLE)
|
||||
.DW PPK_INIT
|
||||
#ENDIF
|
||||
@@ -329,10 +326,6 @@ DIO_DISPATCH1:
|
||||
#IF (HDSKENABLE)
|
||||
CP DIODEV_HDSK
|
||||
JP Z,HDSK_DISPATCH
|
||||
#ENDIF
|
||||
#IF (RFENABLE)
|
||||
CP DIODEV_RF
|
||||
JP Z,RF_DISPATCH
|
||||
#ENDIF
|
||||
CALL PANIC
|
||||
;
|
||||
@@ -741,15 +734,6 @@ SIZ_HDSK .EQU $ - ORG_HDSK
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
|
||||
#IF (RFENABLE)
|
||||
ORG_RF .EQU $
|
||||
#INCLUDE "rf.asm"
|
||||
SIZ_RF .EQU $ - ORG_RF
|
||||
.ECHO "RF occupies "
|
||||
.ECHO SIZ_RF
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
|
||||
#IF (PPKENABLE)
|
||||
ORG_PPK .EQU $
|
||||
#INCLUDE "ppk.asm"
|
||||
|
||||
@@ -524,7 +524,7 @@ dmloop:
|
||||
ld (BL_TMPDRV),a ; save it for printing if needed
|
||||
call CBIOS_GETDSK ; get drive into, c still has drive number
|
||||
or a ; set flags on result
|
||||
jp nz,dmdone ; error, skip this drive
|
||||
jr nz,dmdone ; error, skip this drive
|
||||
ld (BL_TMPLU),de ; save lu for later
|
||||
ld a,b ; device/unit into a for matching below
|
||||
|
||||
@@ -570,10 +570,6 @@ dmloop:
|
||||
cp DIODEV_HDSK ; SIMH HDSK
|
||||
jr z,dmprt
|
||||
|
||||
ld de,str_devrf
|
||||
cp DIODEV_RF ; RAM FLOPPY
|
||||
jr z,dmprt
|
||||
|
||||
jr dmdone
|
||||
|
||||
dmprt:
|
||||
@@ -774,7 +770,6 @@ str_devsd .DB "SD$"
|
||||
str_devprpsd .DB "PRPSD$"
|
||||
str_devpppsd .DB "PPPSD$"
|
||||
str_devhdsk .DB "HDSK$"
|
||||
str_devrf .DB "RF$"
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
|
||||
@@ -99,12 +99,8 @@ ifndef ROMNAME
|
||||
ROMNAME := $(PLATFORM)_$(CONFIG)
|
||||
endif
|
||||
|
||||
ifndef "windir"
|
||||
CPMTOOLSPATH := ../tools/cpmtools
|
||||
CPMCP := $(CPMTOOLSPATH)/cpmcp.exe
|
||||
else
|
||||
CPMCP := /usr/bin/cpmcp
|
||||
endif
|
||||
|
||||
ROMDSKFILES := ../RomDsk/$(SYS)_$(ROMSIZE)KB/*.* ../RomDsk/cfg_$(PLATFORM)_$(CONFIG)/*.* ../Apps/Output/*.*
|
||||
|
||||
@@ -116,16 +112,11 @@ DOSBIN := zsdos.bin
|
||||
CPBIN := zcprw.bin
|
||||
endif
|
||||
|
||||
OUTDIR := ../Output
|
||||
OUTDIR := ..\Output
|
||||
|
||||
ifndef "windir"
|
||||
TASMPATH := ../tools/tasm32
|
||||
TASM := $(TASMPATH)/tasm.exe
|
||||
TASMTABS := $(TASMPATH)
|
||||
else
|
||||
TASM := /usr/local/bin/tasm
|
||||
TASMTABS := /usr/local/lib
|
||||
endif
|
||||
export TASMTABS
|
||||
|
||||
ASMOPT80 := -t$(CPU) -g3
|
||||
@@ -156,9 +147,8 @@ $(error Usage: make PLATFORM=[N8VEM|ZETA|N8|S2I|S100] CONFIG=<config> ROMSIZE=[5
|
||||
endif
|
||||
endif
|
||||
|
||||
all: $(OUTDIR)/$(ROMNAME).rom $(OUTDIR)/$(ROMNAME).sys $(OUTDIR)/$(ROMNAME).com
|
||||
all: $(OUTDIR)\$(ROMNAME).rom $(OUTDIR)\$(ROMNAME).sys $(OUTDIR)\$(ROMNAME).com
|
||||
|
||||
ifndef "windir"
|
||||
build.inc:
|
||||
echo ; >$@
|
||||
echo ; RomWBW Configured for $(PLATFORM) $(CONFIG), %date:~4,10% %time% >>$@
|
||||
@@ -178,28 +168,6 @@ build.inc:
|
||||
echo ; >>$@
|
||||
echo #INCLUDE "config_$(PLATFORM)_$(CONFIG).asm" >>$@
|
||||
echo ; >>$@
|
||||
else
|
||||
echo ';' >$@
|
||||
echo -n '; RomWBW Configured for '$(CONFIG)'' >>$@
|
||||
date >> $@
|
||||
echo ';' >>$@
|
||||
echo -n '#DEFINE TIMESTAMP "' >>$@
|
||||
date '+%Y %m %d %H%M"' >>$@
|
||||
echo ';' >>$@
|
||||
echo '; INCLUDE PLATFORM SPECIFIC DEVICE DEFINITIONS' >>$@
|
||||
echo ';' >>$@
|
||||
echo 'ROMSIZE .EQU '$(ROMSIZE)'' >>$@
|
||||
echo 'PLATFORM .EQU PLT_'$(PLATFORM)'' >>$@
|
||||
|
||||
echo '#IF (PLATFORM == PLT_S100)' >>$@
|
||||
echo ' #INCLUDE "std-s100.inc"' >>$@
|
||||
echo '#ELSE' >>$@
|
||||
echo ' #INCLUDE "std-n8vem.inc"' >>$@
|
||||
echo '#ENDIF' >>$@
|
||||
echo ';' >>$@
|
||||
echo '#INCLUDE "config_'$(PLATFORM)'_'$(CONFIG)'.asm"' >>$@
|
||||
echo ';' >>$@
|
||||
endif
|
||||
|
||||
bootrom.bin : bootrom.asm std.asm build.inc ver.inc
|
||||
$(TASM) $(ASMOPT80) $< $@
|
||||
@@ -224,55 +192,27 @@ dbgmon.bin: dbgmon.asm std.asm ver.inc build.inc
|
||||
syscfg.bin: syscfg.asm std.asm build.inc ver.inc
|
||||
|
||||
os.bin: $(CPBIN) $(DOSBIN) cbios.bin
|
||||
ifndef "windir"
|
||||
copy /B $(subst $(SPACE),+,$(^)) "$@"
|
||||
else
|
||||
cat $(CPBIN) $(DOSBIN) cbios.bin >>$@
|
||||
endif
|
||||
copy /B $(subst $(SPACE),+,$(^)) $@
|
||||
|
||||
rom0.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin
|
||||
ifndef "windir"
|
||||
copy /B $(subst $(SPACE),+,$(^)) "$@"
|
||||
else
|
||||
cat pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin >>$@
|
||||
endif
|
||||
copy /B $(subst $(SPACE),+,$(^)) $@
|
||||
|
||||
rom1.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin hbios.bin
|
||||
ifndef "windir"
|
||||
copy /B $(subst $(SPACE),+,$(^)) "$@"
|
||||
else
|
||||
cat pgzero.bin bootrom.bin syscfg.bin loader.bin hbios.bin >>$@
|
||||
endif
|
||||
copy /B $(subst $(SPACE),+,$(^)) $@
|
||||
|
||||
$(OUTDIR)/$(ROMNAME).rom: rom0.bin rom1.bin $(ROMDISKFILES) $(OUTDIR)/$(ROMNAME).sys
|
||||
ifndef "windir"
|
||||
$(OUTDIR)\$(ROMNAME).rom: rom0.bin rom1.bin $(ROMDISKFILES) $(OUTDIR)\$(ROMNAME).sys
|
||||
copy blank$(ROMSIZE)KB.dat RomDisk.tmp
|
||||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp $(ROMDSKFILES) 0:
|
||||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp ../Output/$(ROMNAME).sys 0:$(SYS).sys
|
||||
copy /B rom0.bin+rom1.bin+RomDisk.tmp "$@"
|
||||
else
|
||||
cp blank$(ROMSIZE)KB.dat RomDisk.tmp
|
||||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp $(ROMDSKFILES) 0:
|
||||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp ../Output/$(ROMNAME).sys 0:$(SYS).sys
|
||||
cat rom0.bin rom1.bin RomDisk.tmp >>$@
|
||||
endif
|
||||
copy /B rom0.bin+rom1.bin+RomDisk.tmp $@
|
||||
|
||||
$(OUTDIR)/$(ROMNAME).com: bootapp.bin syscfg.bin loader.bin hbios.bin dbgmon.bin os.bin
|
||||
ifndef "windir"
|
||||
copy /B $(subst $(SPACE),+,$(^)) "$@"
|
||||
else
|
||||
cat bootapp.bin syscfg.bin loader.bin hbios.bin dbgmon.bin os.bin >>$@
|
||||
endif
|
||||
$(OUTDIR)\$(ROMNAME).com: bootapp.bin syscfg.bin loader.bin hbios.bin dbgmon.bin os.bin
|
||||
copy /B $(subst $(SPACE),+,$(^)) $@
|
||||
|
||||
$(OUTDIR)/$(ROMNAME).sys: prefix.bin os.bin
|
||||
ifndef "windir"
|
||||
copy /B $(subst $(SPACE),+,$(^)) "$@"
|
||||
else
|
||||
cat prefix.bin os.bin >>$@
|
||||
endif
|
||||
$(OUTDIR)\$(ROMNAME).sys: prefix.bin os.bin
|
||||
copy /B $(subst $(SPACE),+,$(^)) $@
|
||||
|
||||
clean:
|
||||
ifndef "windir"
|
||||
if exist *.bin del *.bin
|
||||
if exist *.com del *.com
|
||||
if exist *.img del *.img
|
||||
@@ -281,9 +221,4 @@ ifndef "windir"
|
||||
if exist *.exp del *.exp
|
||||
if exist *.tmp del *.tmp
|
||||
if exist build.inc del build.inc
|
||||
if exist "$(OUTDIR)/*.*" erase /Q "$(OUTDIR)/*.*"
|
||||
else
|
||||
rm -f *.bin *.com *.img *.rom *.lst *.exp *.tmp
|
||||
rm -f build.inc
|
||||
rm -f $(OUTDIR)/*.*
|
||||
endif
|
||||
if exist $(OUTDIR)\*.* erase /Q $(OUTDIR)\*.*
|
||||
206
Source/makefile.linux
Normal file
206
Source/makefile.linux
Normal file
@@ -0,0 +1,206 @@
|
||||
#
|
||||
# GCC based makefile
|
||||
#
|
||||
# 06/18/2012 2.0 dgg - updated for v2.0
|
||||
#
|
||||
# 02/22/2012 1.5 dgg - modified for assembly under Linux
|
||||
#
|
||||
# 01/11/2011 1.4 wbw - added support for ZSDOS/ZDDOS/ZCPR
|
||||
#
|
||||
# 12/22/2011 1.3 wbw - removed all built-in config stuff, operation is now entirely
|
||||
# dependent on variables CONFIG, ROMSIZE, and CPU
|
||||
#
|
||||
# 12/02/2011 1.3 wbw - replaced makever functionality with built-in makefile stuff
|
||||
#
|
||||
# 11/29/2011 1.3 dwg - uses makever to generate stdincl.inc from the version.hpp file
|
||||
#
|
||||
# 11/19/2011 1.3 dwg - added n8vem_vdu to "usage" and "all" rules
|
||||
# enhanced clean to get files in $(OUTDIR)
|
||||
# added custom to "all" rule
|
||||
|
||||
#
|
||||
# The operation of this makefile is entirely dependent on the setting
|
||||
# of three variables: CONFIG, ROMSIZE, and CPU:
|
||||
#
|
||||
# CONFIG determines which configuration to build which means that
|
||||
# it will determine the config_xxx.asm config settings file to
|
||||
# include as well as the output file names. So, for example,
|
||||
# if CONFIG is "n8vem", the config_n8vem.asm file will be used
|
||||
# for BIOS configuration settings and the output files will be
|
||||
# n8vem.rom, n8vem.sys, and n8vem.com.
|
||||
#
|
||||
# ROMSIZE specifies the size of the ROM image to be produced and
|
||||
# currently must be either "1024" for a 1MB ROM or "512" for a
|
||||
# 512KB ROM.
|
||||
#
|
||||
# CPU specifies the instruction set to be used in assembly and
|
||||
# must be either "80" for Z80 or "180" for Z180. Currently,
|
||||
# you should use 180 for N8 ROMs and 80 for everything else.
|
||||
#
|
||||
# SYS specifies the system variant to build in. CPM will
|
||||
# build traditional CP/M. ZSYS will build ZSystem which
|
||||
# currently means ZSDOS 1.2 & ZCPR 1.0
|
||||
#
|
||||
# ROMNAME names the output file. It defaults to
|
||||
# CONFIG. The output of the build will be:
|
||||
# <ROMNAME>.rom, <ROMNAME>.sys, and <ROMNAME>.com.
|
||||
#
|
||||
# These variables can be passed into the makefile by the command
|
||||
# line, hardcoded in this file, or set as environment variables
|
||||
# in the OS. To use a command line, use the following format:
|
||||
#
|
||||
# make CONFIG=<config> ROMSIZE=<romsize> CPU=<cpu> SYS=<sys> ROMNAME=<romname>
|
||||
#
|
||||
# An example of this is:
|
||||
#
|
||||
# make CONFIG=n8vem ROMSIZE=512 CPU=80 SYS=CPM ROMNAME=n8vem
|
||||
#
|
||||
# Alternatively, you can specify the variables by hardcoding them
|
||||
# in this file. To do so, uncomment the five lines after these
|
||||
# comments and change the values as desired.
|
||||
# If the variables are specified this way, you would then invoke
|
||||
# the make by simply using "make"
|
||||
#
|
||||
# If you want to set them as environment variables, you can
|
||||
# do this with commands like the following at an OS command
|
||||
# prompt or in a batch file:
|
||||
#
|
||||
# SET CONFIG=n8vem
|
||||
# SET ROMSIZE=512
|
||||
# SET CPU=80
|
||||
# SET SYS=CPM
|
||||
# SET ROMNAME=n8vem
|
||||
#
|
||||
# Note: use "make clean" to delete temporary and output files
|
||||
#
|
||||
# A good idea is to do a clean with every build and this can be
|
||||
# accomplished on one command line doing something like this:
|
||||
#
|
||||
# make clean all CONFIG=n8vem ROMSIZE=512 CPU=80 SYS=CPM ROMNAME=n8vem
|
||||
#
|
||||
# or, if you are using hard coded variables above:
|
||||
#
|
||||
# make clean all
|
||||
#
|
||||
# Uncomment and update values below to hardcode settings:
|
||||
#
|
||||
#CONFIG := n8vem
|
||||
#ROMSIZE := 512
|
||||
#CPU := 80
|
||||
#SYS := CPM
|
||||
#ROMNAME := n8vem
|
||||
|
||||
ifndef ROMNAME
|
||||
ROMNAME := $(CONFIG)
|
||||
endif
|
||||
|
||||
CPMCP := /usr/bin/cpmcp
|
||||
|
||||
ROMDSKFILES := ../RomDsk/$(SYS)_$(ROMSIZE)KB/*.* ../RomDsk/cfg_$(CONFIG)/*.* ../Apps/core/*.*
|
||||
|
||||
ifeq "$(SYS)" "CPM"
|
||||
DOSBIN := bdosb01.bin
|
||||
CPBIN := ccpb03.bin
|
||||
else
|
||||
DOSBIN := zsdos.bin
|
||||
CPBIN := zcprw.bin
|
||||
endif
|
||||
|
||||
OUTDIR := ../Output
|
||||
|
||||
TASM := /usr/local/bin/tasm
|
||||
TASMTABS := /usr/local/lib
|
||||
export TASMTABS
|
||||
|
||||
ASMOPT80 := -t$(CPU) -g3
|
||||
ASMOPT85 := -t85 -g3
|
||||
|
||||
ASM80 := $(TASM) $(ASMOPT80)
|
||||
ASM85 := $(TASM) $(ASMOPT85)
|
||||
ASMIMG := $(TASM) $(ASMOPT80) -b -fE5
|
||||
|
||||
NULL :=
|
||||
SPACE := ${NULL} ${NULL}
|
||||
|
||||
%.bin: %.asm
|
||||
$(ASM80) $< $@
|
||||
|
||||
%.com: %.asm
|
||||
$(ASM80) $< $@
|
||||
|
||||
%.img: %.asm
|
||||
$(ASMIMG) $< $@
|
||||
|
||||
%.exe: %.cpp
|
||||
$(CC) $< -o $@
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
ifeq "$(and $(CONFIG), $(ROMSIZE), $(CPU), $(SYS), $(ROMNAME))" ""
|
||||
$(error Usage: make CONFIG=<config> ROMSIZE=[512|1024] CPU=[80|180] SYS=[CPM|ZSYS] ROMNAME=<romname>)
|
||||
endif
|
||||
endif
|
||||
|
||||
all: $(OUTDIR)/$(ROMNAME).rom $(OUTDIR)/$(ROMNAME).sys $(OUTDIR)/$(ROMNAME).com
|
||||
|
||||
build.inc:
|
||||
echo ';' >$@
|
||||
echo -n '; RomWBW Configured for '$(CONFIG)' ' >>$@
|
||||
date >> $@
|
||||
echo ; >>$@
|
||||
echo -n '#DEFINE TIMESTAMP "' >>$@
|
||||
date '+%Y %m %d %H%M"' >>$@
|
||||
echo ; >>$@
|
||||
echo '#DEFINE VARIANT "WBW-$(USERNAME)"' >>$@
|
||||
echo ; >>$@
|
||||
echo ROMSIZE .EQU $(ROMSIZE) >>$@
|
||||
echo ; >>$@
|
||||
echo '#INCLUDE "config_'$(CONFIG)'.asm"' >>$@
|
||||
echo ; >>$@
|
||||
|
||||
bootrom.bin : bootrom.asm std.asm build.inc ver.inc
|
||||
$(TASM) $(ASMOPT80) $< $@
|
||||
|
||||
bootapp.bin : bootapp.asm std.asm build.inc ver.inc
|
||||
$(TASM) $(ASMOPT80) $< $@
|
||||
|
||||
pgzero.bin : pgzero.asm std.asm build.inc ver.inc
|
||||
$(TASM) $(ASMOPT80) $< $@
|
||||
|
||||
zcprw.bin : zcprw.asm zcpr.asm
|
||||
$(TASM) $(ASMOPT85) $< $@
|
||||
|
||||
zsdos.bin : zsdos.asm zsdos.lib zsdos-gp.z80
|
||||
$(TASM) $(ASMOPT80) $< $@
|
||||
|
||||
cbios.bin: cbios.asm fd_dph.asm ide_dph.asm ppide_dph.asm sd_dph.asm prp_dph.asm ppp_dph.asm uart.asm vdu.asm std.asm ver.inc build.inc
|
||||
$(TASM) $(ASMOPT80) -dBLD_SYS=SYS_$(SYS) $< $@
|
||||
|
||||
dbgmon.bin: dbgmon.asm std.asm ver.inc build.inc
|
||||
|
||||
syscfg.bin: syscfg.asm std.asm build.inc ver.inc
|
||||
|
||||
os.bin: $(CPBIN) $(DOSBIN) cbios.bin
|
||||
cat $(CPBIN) $(DOSBIN) cbios.bin >>$@
|
||||
|
||||
rom0.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin
|
||||
cat pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin >>$@
|
||||
|
||||
rom1.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin bnk1.bin
|
||||
cat pgzero.bin bootrom.bin syscfg.bin loader.bin bnk1.bin >>$@
|
||||
|
||||
$(OUTDIR)/$(ROMNAME).rom: rom0.bin rom1.bin $(ROMDISKFILES) $(OUTDIR)/$(ROMNAME).sys
|
||||
cp blank$(ROMSIZE)KB.dat RomDisk.tmp
|
||||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp $(ROMDSKFILES) 0:
|
||||
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp ../Output/$(ROMNAME).sys 0:$(SYS).sys
|
||||
cat rom0.bin rom1.bin RomDisk.tmp >>$@
|
||||
|
||||
$(OUTDIR)/$(ROMNAME).com: bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin os.bin
|
||||
cat bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin os.bin >>$@
|
||||
|
||||
$(OUTDIR)/$(ROMNAME).sys: prefix.bin os.bin
|
||||
cat prefix.bin os.bin >>$@
|
||||
|
||||
clean:
|
||||
rm -f *.bin *.com *.img *.rom *.lst *.exp *.tmp
|
||||
rm -f build.inc
|
||||
rm -f $(OUTDIR)/*.*
|
||||
270
Source/ppide.asm
270
Source/ppide.asm
@@ -21,12 +21,12 @@
|
||||
IDELSB .EQU PPIDEIOB + 0 ; LSB
|
||||
IDEMSB .EQU PPIDEIOB + 1 ; MSB
|
||||
IDECTL .EQU PPIDEIOB + 2 ; CONTROL SIGNALS
|
||||
PPICTL .EQU PPIDEIOB + 3 ; PPI (8255) CONTROL PORT
|
||||
PPI1CONT .EQU PPIDEIOB + 3 ; CONTROL BYTE PPI 82C55
|
||||
;
|
||||
; PPI control bytes for read and write to IDE drive
|
||||
;
|
||||
RD_IDE_8255 .EQU %10010010 ; IDE_8255_CTL OUT, IDE_8255_LSB/MSB INPUT
|
||||
WR_IDE_8255 .EQU %10000000 ; ALL THREE PORTS OUTPUT
|
||||
RD_IDE_8255 .EQU 10010010B ; IDE_8255_CTL OUT, IDE_8255_LSB/MSB INPUT
|
||||
WR_IDE_8255 .EQU 10000000B ; ALL THREE PORTS OUTPUT
|
||||
;
|
||||
; IDE CONTROL LINES FOR USE WITH IDE_8255_CTL. CHANGE THESE 8
|
||||
; CONSTANTS TO REFLECT WHERE EACH SIGNAL OF THE 8255 EACH OF THE
|
||||
@@ -34,14 +34,14 @@ WR_IDE_8255 .EQU %10000000 ; ALL THREE PORTS OUTPUT
|
||||
; BE ON THE SAME PORT, BUT THESE 8 LINES LET YOU CONNECT THEM TO
|
||||
; WHICHEVER PINS ON THAT PORT.
|
||||
;
|
||||
PPIDE_A0_LINE .EQU $01 ; DIRECT FROM 8255 TO IDE INTERFACE
|
||||
PPIDE_A1_LINE .EQU $02 ; DIRECT FROM 8255 TO IDE INTERFACE
|
||||
PPIDE_A2_LINE .EQU $04 ; DIRECT FROM 8255 TO IDE INTERFACE
|
||||
PPIDE_CS0_LINE .EQU $08 ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
PPIDE_CS1_LINE .EQU $10 ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
PPIDE_WR_LINE .EQU $20 ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
PPIDE_RD_LINE .EQU $40 ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
PPIDE_RST_LINE .EQU $80 ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
PPIDE_A0_LINE .EQU 01H ; DIRECT FROM 8255 TO IDE INTERFACE
|
||||
PPIDE_A1_LINE .EQU 02H ; DIRECT FROM 8255 TO IDE INTERFACE
|
||||
PPIDE_A2_LINE .EQU 04H ; DIRECT FROM 8255 TO IDE INTERFACE
|
||||
PPIDE_CS0_LINE .EQU 08H ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
PPIDE_CS1_LINE .EQU 10H ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
PPIDE_WR_LINE .EQU 20H ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
PPIDE_RD_LINE .EQU 40H ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
PPIDE_RST_LINE .EQU 80H ; INVERTER BETWEEN 8255 AND IDE INTERFACE
|
||||
;
|
||||
;------------------------------------------------------------------
|
||||
; MORE SYMBOLIC CONSTANTS... THESE SHOULD NOT BE CHANGED, UNLESS OF
|
||||
@@ -66,24 +66,24 @@ PPIDE_ASTTS .EQU PPIDE_CS1_LINE + PPIDE_A2_LINE + PPIDE_A1_LINE + PPIDE_A0_LI
|
||||
;
|
||||
; IDE COMMAND CONSTANTS. THESE SHOULD NEVER CHANGE.
|
||||
;
|
||||
PPIDE_CMDRECAL .EQU $10
|
||||
PPIDE_CMDREAD .EQU $20
|
||||
PPIDE_CMDWRITE .EQU $30
|
||||
PPIDE_CMDINIT .EQU $91
|
||||
PPIDE_CMDID .EQU $EC
|
||||
PPIDE_CMDSPINDOWN .EQU $E0
|
||||
PPIDE_CMDSPINUP .EQU $E1
|
||||
PPIDE_CMDSETFEAT .EQU $EF
|
||||
PPIDECMD_RECAL .EQU 010H
|
||||
PPIDECMD_READ .EQU 020H
|
||||
PPIDECMD_WRITE .EQU 030H
|
||||
PPIDECMD_INIT .EQU 091H
|
||||
PPIDECMD_ID .EQU 0ECH
|
||||
PPIDECMD_SPINDOWN .EQU 0E0H
|
||||
PPIDECMD_SPINUP .EQU 0E1H
|
||||
PPIDECMD_SETFEAT .EQU 0EFH
|
||||
;
|
||||
PPIDE_RCOK .EQU 0
|
||||
PPIDE_RCCMDERR .EQU 1
|
||||
PPIDE_RCRDYTO .EQU 2
|
||||
PPIDE_RCBUFTO .EQU 3
|
||||
PPIDERC_OK .EQU 0
|
||||
PPIDERC_CMDERR .EQU 1
|
||||
PPIDERC_RDYTO .EQU 2
|
||||
PPIDERC_BUFTO .EQU 3
|
||||
;
|
||||
; UNIT CONFIGURATION
|
||||
;
|
||||
PPIDE_UNIT0 .DB %11100000 ; LBA, MASTER DEVICE
|
||||
PPIDE_UNIT1 .DB %11110000 ; LBA, SLAVE DEVICE
|
||||
PPIDE0_DEVICE .DB 11100000B ; LBA, MASTER DEVICE
|
||||
PPIDE1_DEVICE .DB 11110000B ; LBA, SLAVE DEVICE
|
||||
;
|
||||
;
|
||||
;
|
||||
@@ -100,21 +100,17 @@ PPIDE_DISPATCH:
|
||||
CALL PANIC
|
||||
;
|
||||
PPIDE_RD:
|
||||
LD A,PPIDE_CMDREAD
|
||||
LD (PPIDEP_CMD),A
|
||||
JP PPIDE_RW
|
||||
;
|
||||
JP PPIDE_XREAD
|
||||
PPIDE_WR:
|
||||
LD A,PPIDE_CMDWRITE
|
||||
LD (PPIDEP_CMD),A
|
||||
JP PPIDE_RW
|
||||
;
|
||||
JP PPIDE_XWRITE
|
||||
PPIDE_ST:
|
||||
LD A,(PPIDE_STAT) ; LOAD STATUS
|
||||
OR A ; SET FLAGS
|
||||
RET
|
||||
;
|
||||
JP PPIDE_STATUS
|
||||
PPIDE_MED:
|
||||
JP PPIDE_MEDIA
|
||||
;
|
||||
; PPIDE_MEDIA
|
||||
;
|
||||
PPIDE_MEDIA:
|
||||
LD A,MID_HD
|
||||
RET
|
||||
;
|
||||
@@ -125,9 +121,6 @@ PPIDE_INIT:
|
||||
LD A,IDELSB
|
||||
CALL PRTHEXBYTE
|
||||
PRTS(" UNITS=2$")
|
||||
#IF (PPIDE8BIT)
|
||||
PRTS(" 8BIT$")
|
||||
#ENDIF
|
||||
#IF (PPIDESLOW)
|
||||
PRTS(" SLOW$")
|
||||
#ENDIF
|
||||
@@ -139,22 +132,59 @@ PPIDE_INIT:
|
||||
;
|
||||
;
|
||||
;
|
||||
PPIDE_STATUS:
|
||||
LD A,(PPIDE_STAT) ; LOAD STATUS
|
||||
OR A ; SET FLAGS
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
PPIDE_XREAD:
|
||||
LD A,PPIDECMD_READ
|
||||
LD (PPIDEP_CMD),A
|
||||
JP PPIDE_RW
|
||||
;
|
||||
;
|
||||
;
|
||||
PPIDE_XWRITE:
|
||||
LD A,PPIDECMD_WRITE
|
||||
LD (PPIDEP_CMD),A
|
||||
JP PPIDE_RW
|
||||
;
|
||||
;
|
||||
;
|
||||
PPIDE_RW:
|
||||
; INIT REQUIRED?
|
||||
LD A,(PPIDE_STAT)
|
||||
OR A ; SET FLAGS
|
||||
JR Z,PPIDE_RW0 ; IF STATUS OK, BYPASS RESET
|
||||
|
||||
CALL PPIDE_RESET ; DO THE RESET
|
||||
; NEED TO CHECK STATUS HERE!!!
|
||||
|
||||
PPIDE_RW0:
|
||||
; CLEAR RESULTS
|
||||
XOR A ; A = 0
|
||||
LD (PPIDE_RC),A ; CLEAR RETURN CODE
|
||||
LD (PPIDEP_STTS),A ; CLEAR SAVED STTS
|
||||
LD (PPIDEP_ERR),A ; CLEAR SAVED ERR
|
||||
|
||||
; INIT REQUIRED?
|
||||
LD A,(PPIDE_STAT)
|
||||
OR A ; SET FLAGS
|
||||
JR Z,PPIDE_RW0 ; IF STATUS OK, BYPASS RESET
|
||||
|
||||
CALL PPIDE_RESET ; DO THE RESET
|
||||
|
||||
#IF (PPIDE8BIT)
|
||||
CALL PPIDE_WAITRDY
|
||||
LD C,PPIDE_FEATURE ; IDE FEATURE REGISTER
|
||||
LD A,01H ; VALUE := 1
|
||||
CALL PPIDE_WRITE ; DO IT
|
||||
LD C,PPIDE_COMMAND ; IDE COMMAND REGISTER
|
||||
LD A,PPIDECMD_SETFEAT ; SET FEATURE
|
||||
CALL PPIDE_WRITE ; DO IT
|
||||
CALL PPIDE_WAITRDY
|
||||
JP NC,PPIDE_ERR
|
||||
CALL PPIDE_CHKERR ; CHECK FOR ERRORS
|
||||
JP NC,PPIDE_ERR
|
||||
#IF (PPIDETRACE >= 2)
|
||||
CALL PPIDE_PRT
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
|
||||
PPIDE_RW0:
|
||||
CALL PPIDE_WAITRDY ; WAIT FOR DRIVE READY
|
||||
JP NC,PPIDE_ERR
|
||||
CALL PPIDE_SETUP ; SETUP CYL, TRK, HEAD
|
||||
@@ -169,7 +199,7 @@ PPIDE_RW0:
|
||||
JP NC,PPIDE_ERR
|
||||
|
||||
LD A,(PPIDEP_CMD) ; DISPATCH TO READ OR WRITE SPECIFIC LOGIC
|
||||
CP PPIDE_CMDWRITE
|
||||
CP PPIDECMD_WRITE
|
||||
JP Z,PPIDE_RW1
|
||||
|
||||
CALL PPIDE_BUFRD ; READ BUFFER
|
||||
@@ -208,55 +238,17 @@ PPIDE_OK:
|
||||
;
|
||||
;
|
||||
PPIDE_RESET:
|
||||
#IF (PPIDETRACE >= 2)
|
||||
CALL NEWLINE
|
||||
PRTX(PPIDESTR_PREFIX)
|
||||
PRTS(" RESET$")
|
||||
#ENDIF
|
||||
#IF (PPIDETRACE >= 2)
|
||||
CALL PC_PERIOD
|
||||
#ENDIF
|
||||
LD C,PPIDE_CONTROL ; IDE CONTROL REGISTER
|
||||
LD A,000001110B ; NO INTERRUPTS, ASSERT RESET BOTH DRIVES
|
||||
CALL PPIDE_WRITE ; DO IT
|
||||
LD DE,8 ; DELAY ABOUT 200ms
|
||||
CALL VDELAY
|
||||
#IF (PPIDETRACE >= 2)
|
||||
CALL PC_PERIOD
|
||||
#ENDIF
|
||||
LD C,PPIDE_CONTROL ; IDE CONTROL REGISTER
|
||||
LD A,000000010B ; NO INTERRUPTS, DEASSERT RESET
|
||||
CALL PPIDE_WRITE ; DO IT
|
||||
XOR A ; STATUS OK
|
||||
LD (PPIDE_STAT),A ; SAVE IT
|
||||
|
||||
#IF (PPIDE8BIT)
|
||||
|
||||
#IF (PPIDETRACE >= 2)
|
||||
CALL PC_PERIOD
|
||||
#ENDIF
|
||||
CALL PPIDE_WAITRDY
|
||||
|
||||
#IF (PPIDETRACE >= 2)
|
||||
CALL PC_PERIOD
|
||||
#ENDIF
|
||||
LD C,PPIDE_FEATURE ; IDE FEATURE REGISTER
|
||||
LD A,01H ; VALUE := 1
|
||||
CALL PPIDE_WRITE ; DO IT
|
||||
|
||||
#IF (PPIDETRACE >= 2)
|
||||
CALL PC_PERIOD
|
||||
#ENDIF
|
||||
LD C,PPIDE_COMMAND ; IDE COMMAND REGISTER
|
||||
LD A,PPIDE_CMDSETFEAT ; SET FEATURE
|
||||
CALL PPIDE_WRITE ; DO IT
|
||||
|
||||
#IF (PPIDETRACE >= 2)
|
||||
CALL PC_PERIOD
|
||||
#ENDIF
|
||||
|
||||
#ENDIF
|
||||
|
||||
RET
|
||||
;
|
||||
;
|
||||
@@ -281,7 +273,7 @@ PPIDE_WBSY:
|
||||
SCF ; CARRY 1 = OK
|
||||
RET
|
||||
PPIDE_TO:
|
||||
LD A,PPIDE_RCRDYTO
|
||||
LD A,PPIDERC_RDYTO
|
||||
LD (PPIDE_RC),A
|
||||
XOR A ; CARRY 0 = TIMEOUT
|
||||
RET
|
||||
@@ -300,7 +292,7 @@ PPIDE_CHKERR:
|
||||
CALL PPIDE_READ ; READ IT
|
||||
LD (PPIDEP_ERR),A ; SAVE IT
|
||||
;
|
||||
LD A,PPIDE_RCCMDERR ; COMMAND ERROR
|
||||
LD A,PPIDERC_CMDERR ; COMMAND ERROR
|
||||
LD (PPIDE_RC),A ; SAVE IT
|
||||
;
|
||||
OR A ; CLEAR CF TO SIGNAL ERROR
|
||||
@@ -325,7 +317,7 @@ PPIDE_WDRQ:
|
||||
SCF ; CARRY 1 = OK
|
||||
RET
|
||||
PPIDE_TO2:
|
||||
LD A,PPIDE_RCBUFTO
|
||||
LD A,PPIDERC_BUFTO
|
||||
LD (PPIDE_RC),A
|
||||
XOR A ; CARRY 0 = TIMED OUT
|
||||
RET
|
||||
@@ -335,7 +327,7 @@ PPIDE_TO2:
|
||||
PPIDE_BUFRD:
|
||||
; SETUP PPI TO READ
|
||||
LD A,RD_IDE_8255 ; READ CONFIG
|
||||
OUT (PPICTL),A ; DO IT
|
||||
OUT (PPI1CONT),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; SELECT READ/WRITE IDE REGISTER
|
||||
@@ -349,7 +341,7 @@ PPIDE_BUFRD:
|
||||
; LOOP SETUP
|
||||
LD HL,(DIOBUF) ; LOCATION OF BUFFER
|
||||
LD B,0 ; 256 ITERATIONS
|
||||
LD C,IDELSB ; SETUP C WITH IO PORT (LSB)
|
||||
LD C,IDEMSB ; SETUP C WITH IO PORT (MSB)
|
||||
;
|
||||
CALL PPIDE_BUFRD1 ; FIRST PASS (FIRST 256 BYTES)
|
||||
CALL PPIDE_BUFRD1 ; SECOND PASS (LAST 256 BYTES)
|
||||
@@ -361,6 +353,9 @@ PPIDE_BUFRD:
|
||||
RET
|
||||
;
|
||||
PPIDE_BUFRD1: ; START OF READ LOOP
|
||||
#IF (!PPIDE8BIT)
|
||||
DEC C ; MSB -> LSB
|
||||
#ENDIF
|
||||
LD A,D ; ASSERT READ
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
@@ -370,14 +365,10 @@ PPIDE_BUFRD1: ; START OF READ LOOP
|
||||
INC C ; LSB -> MSB
|
||||
INI ; GET AND SAVE NEXT BYTE
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
PUSH AF
|
||||
DEC C ; MSB -> LSB
|
||||
POP AF
|
||||
#ENDIF
|
||||
LD A,E ; DEASSERT READ
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
JR NZ,PPIDE_BUFRD1 ; LOOP UNTIL DONE
|
||||
RET
|
||||
;
|
||||
@@ -385,22 +376,22 @@ PPIDE_BUFRD1: ; START OF READ LOOP
|
||||
;
|
||||
PPIDE_BUFWR:
|
||||
; SETUP PPI TO WRITE
|
||||
LD A,WR_IDE_8255 ; WRITE CONFIG
|
||||
OUT (PPICTL),A ; DO IT
|
||||
LD A,WR_IDE_8255 ; READ CONFIG
|
||||
OUT (PPI1CONT),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; SELECT READ/WRITE IDE REGISTER
|
||||
LD A,PPIDE_DATA ; DATA REGISTER
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
LD E,A ; E := WRITE UNASSERTED
|
||||
LD E,A ; E := READ UNASSERTED
|
||||
XOR PPIDE_WR_LINE ; SWAP THE WRITE LINE BIT
|
||||
LD D,A ; D := WRITE ASSERTED
|
||||
LD D,A ; D := READ ASSERTED
|
||||
;
|
||||
; LOOP SETUP
|
||||
LD HL,(DIOBUF) ; LOCATION OF BUFFER
|
||||
LD B,0 ; 256 ITERATIONS
|
||||
LD C,IDELSB ; SETUP C WITH IO PORT (LSB)
|
||||
LD C,IDEMSB ; SETUP C WITH IO PORT (MSB)
|
||||
;
|
||||
CALL PPIDE_BUFWR1 ; FIRST PASS (FIRST 256 BYTES)
|
||||
CALL PPIDE_BUFWR1 ; SECOND PASS (LAST 256 BYTES)
|
||||
@@ -411,26 +402,23 @@ PPIDE_BUFWR:
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
RET
|
||||
;
|
||||
PPIDE_BUFWR1: ; START OF WRITE LOOP
|
||||
PPIDE_BUFWR1: ; START OF READ LOOP
|
||||
#IF (!PPIDE8BIT)
|
||||
DEC C ; MSB -> LSB
|
||||
#ENDIF
|
||||
OUTI ; SEND NEXT BYTE OF BUFFER
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
#IF (!PPIDE8BIT)
|
||||
INC C ; LSB -> MSB
|
||||
OUTI ; SEND NEXT BYTE OF BUFFER
|
||||
PUSH AF
|
||||
DEC C ; MSB -> LSB
|
||||
POP AF
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
#ENDIF
|
||||
;
|
||||
; TOGGLE THE WRITE LINE
|
||||
LD A,D ; WRITE ASSERTED VALUE
|
||||
LD A,D ; ASSERT WRITE
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
LD A,E ; WRITE UNASSERTED VALUE
|
||||
LD A,E ; DEASSERT WRITE
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
JR NZ,PPIDE_BUFWR1 ; LOOP UNTIL DONE
|
||||
RET
|
||||
;
|
||||
@@ -449,10 +437,12 @@ PPIDE_SETUP:
|
||||
JP Z,PPIDE_SETUP_UNIT1
|
||||
CALL PANIC
|
||||
PPIDE_SETUP_UNIT0:
|
||||
LD A,(PPIDE_UNIT0)
|
||||
LD A,(PPIDE0_DEVICE)
|
||||
; LD DE,(PPIDE0_OFFSET)
|
||||
JP PPIDE_SETUP1
|
||||
PPIDE_SETUP_UNIT1:
|
||||
LD A,(PPIDE_UNIT1)
|
||||
LD A,(PPIDE1_DEVICE)
|
||||
; LD DE,(PPIDE1_OFFSET)
|
||||
JP PPIDE_SETUP1
|
||||
PPIDE_SETUP1:
|
||||
LD C,PPIDE_HEAD ; IDE HEAD REGISTER
|
||||
@@ -487,13 +477,11 @@ PPIDE_READ:
|
||||
;
|
||||
; SET PPI MODE TO READ CONFIGURATION
|
||||
LD A,RD_IDE_8255 ; PPI MODE TO READ
|
||||
OUT (PPICTL),A ; DO IT
|
||||
OUT (PPI1CONT),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; SELECT REQUESTED IDE REGISTER, THEN ASSERT READ
|
||||
; SELECT REQUESTED IDE REGISTER AND ASSERT READ
|
||||
LD A,C ; REGISTER SELECTION -> A
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
OR PPIDE_RD_LINE ; ASSERT READ
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
@@ -502,16 +490,10 @@ PPIDE_READ:
|
||||
IN A,(IDELSB) ; READ LSB
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
PUSH AF ; SAVE IT FOR NOW
|
||||
;
|
||||
; ; DUMMY READ OF MSB
|
||||
; IN A,(IDEMSB) ; READ LSB
|
||||
; RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; CLEAN UP AND RETURN
|
||||
LD A,C ; DEASSERT READ
|
||||
OUT (IDECTL),A ; DO IT
|
||||
XOR A ; RELEASE ALL BUS SIGNALS
|
||||
OUT (IDECTL),A ; DO IT
|
||||
XOR A ; ZERO A
|
||||
OUT (IDECTL),A ; RELEASE ALL BUS SIGNALS
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
POP AF ; RECOVER THE DATA BYTE
|
||||
@@ -526,22 +508,15 @@ PPIDE_WRITE:
|
||||
;
|
||||
; SET PPI MODE TO WRITE CONFIGURATION
|
||||
LD A,WR_IDE_8255 ; PPI MODE TO WRITE
|
||||
OUT (PPICTL),A ; DO IT
|
||||
OUT (PPI1CONT),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; SELECT REQUESTED IDE REGISTER
|
||||
LD A,C ; REGISTER SELECTION -> A
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
|
||||
; SET THE VALUE TO WRITE
|
||||
POP AF ; GET VALUE BACK
|
||||
OUT (IDELSB),A ; SET IDE LSB
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; ; MSB ALWAYS GETS ZERO
|
||||
; XOR A ; ZERO A
|
||||
; OUT (IDEMSB),A ; SET IDE MSB
|
||||
; OUT (IDELSB),A ; SET IDE MSB
|
||||
; RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; PULSE THE WRITE LINE
|
||||
@@ -549,13 +524,10 @@ PPIDE_WRITE:
|
||||
OR PPIDE_WR_LINE ; ASSERT WRITE
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
LD A,C
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; CLEAN UP AND RETURN
|
||||
XOR A ; RELEASE ALL BUS SIGNALS
|
||||
OUT (IDECTL),A ; DO IT
|
||||
XOR A ; ZERO A
|
||||
OUT (IDECTL),A ; RELEASE ALL BUS SIGNALS
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
RET ; RETURN
|
||||
@@ -598,10 +570,10 @@ PPIDE_PRT:
|
||||
CALL PC_LBKT
|
||||
LD A,(PPIDEP_CMD)
|
||||
LD DE,PPIDESTR_READ
|
||||
CP PPIDE_CMDREAD
|
||||
CP PPIDECMD_READ
|
||||
JP Z,PPIDE_PRTCMD
|
||||
LD DE,PPIDESTR_WRITE
|
||||
CP PPIDE_CMDWRITE
|
||||
CP PPIDECMD_WRITE
|
||||
JP Z,PPIDE_PRTCMD
|
||||
LD DE,PPIDESTR_UNKCMD
|
||||
PPIDE_PRTCMD:
|
||||
@@ -642,16 +614,16 @@ PPIDE_PRTCMD:
|
||||
CALL PC_LBKT
|
||||
LD A,(PPIDE_RC)
|
||||
LD DE,PPIDESTR_RCOK
|
||||
CP PPIDE_RCOK
|
||||
CP PPIDERC_OK
|
||||
JP Z,PPIDE_PRTRC
|
||||
LD DE,PPIDESTR_RCCMDERR
|
||||
CP PPIDE_RCCMDERR
|
||||
CP PPIDERC_CMDERR
|
||||
JP Z,PPIDE_PRTRC
|
||||
LD DE,PPIDESTR_RCRDYTO
|
||||
CP PPIDE_RCRDYTO
|
||||
CP PPIDERC_RDYTO
|
||||
JP Z,PPIDE_PRTRC
|
||||
LD DE,PPIDESTR_RCBUFTO
|
||||
CP PPIDE_RCBUFTO
|
||||
CP PPIDERC_BUFTO
|
||||
JP Z,PPIDE_PRTRC
|
||||
LD DE,PPIDESTR_RCUNK
|
||||
PPIDE_PRTRC:
|
||||
@@ -692,6 +664,12 @@ PPIDEP_SEC .DB 0
|
||||
PPIDEP_STTS .DB 0
|
||||
PPIDEP_ERR .DB 0
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
; Error Register (ERR bit being set in the Status Register)
|
||||
;
|
||||
; Bit 7: BBK (Bad Block Detected) Set when a Bad Block is detected.
|
||||
@@ -712,4 +690,4 @@ PPIDEP_ERR .DB 0
|
||||
; Bit 3: DRQ (Data Request) Set when device is ready to transfer a word or byte of data to or from the host and the device.
|
||||
; Bit 2: CORR (Corrected Data) Always set to 0.
|
||||
; Bit 1: IDX (Index) Always set to 0.
|
||||
; Bit 0: ERR (Error) Set when an error occurred during the previous ATA command.
|
||||
; Bit 0: ERR (Error) Set when an error occurred during the previous ATA command.
|
||||
127
Source/rf.asm
127
Source/rf.asm
@@ -1,127 +0,0 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; RAM FLOPPY DISK DRIVER
|
||||
;==================================================================================================
|
||||
;
|
||||
;
|
||||
;
|
||||
RF_U0IO .EQU $A0
|
||||
RF_U1IO .EQU $A4
|
||||
;
|
||||
; IO PORT OFFSETS
|
||||
;
|
||||
RF_DAT .EQU 0
|
||||
RF_AL .EQU 1
|
||||
RF_AH .EQU 2
|
||||
RF_ST .EQU 3
|
||||
;
|
||||
;
|
||||
;
|
||||
RF_DISPATCH:
|
||||
LD A,B ; GET REQUESTED FUNCTION
|
||||
AND $0F
|
||||
JR Z,RF_READ
|
||||
DEC A
|
||||
JR Z,RF_WRITE
|
||||
DEC A
|
||||
JR Z,RF_STATUS
|
||||
DEC A
|
||||
JR Z,RF_MEDIA
|
||||
CALL PANIC
|
||||
;
|
||||
; RF_MEDIA
|
||||
;
|
||||
RF_MEDIA:
|
||||
LD A,C ; DEVICE/UNIT IS IN C
|
||||
AND $0F ; ISOLATE UNIT NUM
|
||||
CP 2 ; CHECK FOR MAX UNIT EXCEEDED
|
||||
CALL NC,PANIC ; PANIC IF TOO HIGH
|
||||
LD A,MID_RF ; SET CORRECT MEDIA VALUE
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
RF_INIT:
|
||||
PRTS("RF: UNITS=2$")
|
||||
;
|
||||
XOR A ; INIT SUCCEEDED
|
||||
RET ; RETURN
|
||||
;
|
||||
;
|
||||
;
|
||||
RF_STATUS:
|
||||
XOR A ; STATUS ALWAYS OK
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
RF_READ:
|
||||
CALL RF_SETIO
|
||||
CALL RF_SETADR
|
||||
LD HL,(DIOBUF)
|
||||
LD B,0
|
||||
LD A,(RF_IO)
|
||||
OR RF_DAT
|
||||
LD C,A
|
||||
INIR
|
||||
INIR
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
RF_WRITE:
|
||||
CALL RF_SETIO
|
||||
LD A,(RF_IO)
|
||||
OR RF_ST
|
||||
LD C,A
|
||||
IN A,(C)
|
||||
BIT 0,A ; CHECK WRITE PROTECT
|
||||
LD A,1 ; PREPARE TO RETURN FALSE (ERROR)
|
||||
RET NZ ; WRITE PROTECTED!
|
||||
CALL RF_SETADR
|
||||
LD HL,(DIOBUF)
|
||||
LD B,0
|
||||
LD A,(RF_IO)
|
||||
OR RF_DAT
|
||||
LD C,A
|
||||
OTIR
|
||||
OTIR
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
RF_SETIO:
|
||||
LD A,(HSTDSK) ; GET DEVICE/UNIT
|
||||
AND $0F ; ISOLATE UNIT NUM
|
||||
JR NZ,RF_SETIO1
|
||||
LD A,RF_U0IO
|
||||
JR RF_SETIO3
|
||||
RF_SETIO1:
|
||||
DEC A
|
||||
JR NZ,RF_SETIO2
|
||||
LD A,RF_U1IO
|
||||
JR RF_SETIO3
|
||||
RF_SETIO2:
|
||||
CALL PANIC ; INVALID UNIT
|
||||
RF_SETIO3:
|
||||
LD (RF_IO),A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
RF_SETADR:
|
||||
LD A,(RF_IO)
|
||||
OR RF_AL
|
||||
LD C,A
|
||||
LD A,(HSTSEC)
|
||||
OUT (C),A
|
||||
LD A,(HSTTRK)
|
||||
INC C
|
||||
OUT (C),A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
RF_IO .DB 0
|
||||
@@ -1,30 +0,0 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; RF DISK DRIVER - DATA
|
||||
;==================================================================================================
|
||||
;
|
||||
; RAM FLOPPY 00
|
||||
;
|
||||
.DB DIODEV_RF + 0
|
||||
RFDPH0 .DW 0000,0000
|
||||
.DW 0000,0000
|
||||
.DW DIRBF,DPB_RF
|
||||
.DW RFCSV0,RFALV0
|
||||
;
|
||||
; RAM FLOPPY 01
|
||||
;
|
||||
.DB DIODEV_RF + 1
|
||||
RFDPH1 .DW 0000,0000
|
||||
.DW 0000,0000
|
||||
.DW DIRBF,DPB_RF
|
||||
.DW RFCSV1,RFALV1
|
||||
;
|
||||
RFCKS .EQU 0 ; CKS: 0 FOR NON-REMOVABLE MEDIA
|
||||
RFALS .EQU 256 ; ALS: BLKS / 8 = 2048 / 8 = 256 (ROUNDED UP)
|
||||
;
|
||||
; BUFFERS
|
||||
;
|
||||
RFCSV0: .FILL RFCKS ; NO DIRECTORY CHECKSUM, NON-REMOVABLE DRIVE
|
||||
RFALV0: .FILL RFALS ; MAX OF 2048 DATA BLOCKS
|
||||
RFCSV1: .FILL RFCKS ; NO DIRECTORY CHECKSUM, NON-REMOVABLE DRIVE
|
||||
RFALV1: .FILL RFALS ; MAX OF 2048 DATA BLOCKS
|
||||
@@ -24,7 +24,6 @@ DIODEV_SD .EQU $50
|
||||
DIODEV_PRPSD .EQU $60
|
||||
DIODEV_PPPSD .EQU $70
|
||||
DIODEV_HDSK .EQU $80
|
||||
DIODEV_RF .EQU $90
|
||||
;
|
||||
; VDA DEVICES (VIDEO DISPLAY ADAPTER)
|
||||
;
|
||||
|
||||
@@ -57,7 +57,6 @@ DM_SD .EQU 6 ; SD DRIVE PRIORITY
|
||||
DM_PRPSD .EQU 7 ; PROPIO SD DRIVE PRIORITY
|
||||
DM_PPPSD .EQU 8 ; PROPIO SD DRIVE PRIORITY
|
||||
DM_HDSK .EQU 9 ; SIMH HARD DISK DRIVE PRIORITY
|
||||
DM_RF .EQU 10 ; RAM FLOPPY PRIORITY
|
||||
;
|
||||
; FLOPPY DISK MEDIA SELECTIONS (ID'S MUST BE INDEX OF ENTRY IN FCD_TBL)
|
||||
;
|
||||
@@ -78,7 +77,6 @@ MID_FD144 .EQU 5
|
||||
MID_FD360 .EQU 6
|
||||
MID_FD120 .EQU 7
|
||||
MID_FD111 .EQU 8
|
||||
MID_RF .EQU 9
|
||||
;
|
||||
; FD MODE SELECTIONS
|
||||
;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#DEFINE RMJ 2
|
||||
#DEFINE RMN 5
|
||||
#DEFINE RUP 2
|
||||
#DEFINE RTP 18
|
||||
#DEFINE BIOSVER "2.5.2"
|
||||
#DEFINE BIOSBLD "Build 18"
|
||||
#DEFINE REVISION 500
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 16
|
||||
#DEFINE BIOSVER "2.5"
|
||||
#DEFINE BIOSBLD "Build 16"
|
||||
#DEFINE REVISION 412
|
||||
|
||||
@@ -727,9 +727,8 @@ PRINT:
|
||||
;
|
||||
PRIN1:
|
||||
MOV A,M ;GET NEXT BYTE
|
||||
ANI ~80H ;WW - CLEAR HIGH BIT
|
||||
;WW CALL CONOUT ;PRINT CHAR
|
||||
CNZ CONOUT ;WW - DON'T OUTPUT CHAR IF ZERO
|
||||
ANI 7FH ;WW - CLEAR MSB
|
||||
CALL CONOUT ;PRINT CHAR
|
||||
MOV A,M ;GET NEXT BYTE AGAIN FOR TEST
|
||||
INX H ;PT TO NEXT BYTE
|
||||
ORA A ;SET FLAGS
|
||||
|
||||
Reference in New Issue
Block a user