mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-08 07:23:14 -06:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9af3ed40fe | ||
|
|
63b624fa0c | ||
|
|
7c547f515a | ||
|
|
762f325e10 | ||
|
|
b030913abd | ||
|
|
ff5bf3c669 |
@@ -1,16 +1,16 @@
|
||||
/************************************/
|
||||
/* applvers.h dwg - 2.5.0.15 */
|
||||
/* applvers.h dwg - 2.5.3.19 */
|
||||
/************************************/
|
||||
|
||||
#define A_RMJ 2
|
||||
#define A_RMN 5
|
||||
#define A_RUP 0
|
||||
#define A_RTP 16
|
||||
#define A_RUP 3
|
||||
#define A_RTP 19
|
||||
|
||||
#define A_MONTH 6
|
||||
#define A_DAY 23
|
||||
#define A_YEAR 2013
|
||||
#define A_YR 13
|
||||
#define A_MONTH 1
|
||||
#define A_DAY 20
|
||||
#define A_YEAR 2014
|
||||
#define A_YR 14
|
||||
|
||||
/********************/
|
||||
/* eof - applvers.h */
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
|
||||
A$RMJ equ 2
|
||||
A$RMN equ 5
|
||||
A$RUP equ 0
|
||||
A$RTP equ 16
|
||||
A$RUP equ 3
|
||||
A$RTP equ 19
|
||||
|
||||
A$MONTH equ 6
|
||||
A$DAY equ 23
|
||||
A$YEAR equ 2013
|
||||
A$MONTH equ 1
|
||||
A$DAY equ 20
|
||||
A$YEAR equ 2014
|
||||
|
||||
date macro
|
||||
dat db ' 6/23/2013$'
|
||||
dat db ' 1/20/2014$'
|
||||
endm
|
||||
|
||||
serial macro
|
||||
|
||||
@@ -131,7 +131,7 @@ prtcfg1(pSysCfg)
|
||||
pCfg->conbaud);
|
||||
pager();
|
||||
printf ("Default Video Display: %s, Default Emulation: %s",
|
||||
VDAName[pCfg->defvda], EmuName[pCfg->defemu]);
|
||||
VDAName[(pCfg->defvda) >> 4], EmuName[pCfg->defemu]);
|
||||
pager();
|
||||
printf ("Current Terminal Type: %s",
|
||||
TermName[pCfg->termtype]);
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
Version 2.5.3
|
||||
-------------
|
||||
- WBW: Fixed EXM in DPB for 360K floppy definition (credit to Martin for finding this error)
|
||||
- WBW: Improved /WAIT trigger performance in PropIO (credit to Marko)
|
||||
PropIO now seems to be compatible with CPU clock speeds up to 16MHz
|
||||
- WBW: Corrected the IO base address for PPIDE driver on N8 variants (credit to Arlen Michaels)
|
||||
|
||||
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,5 +1,9 @@
|
||||
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.
|
||||
|
||||
@@ -25,24 +29,17 @@ 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. 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
|
||||
2. 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
|
||||
|
||||
4. You'll have to alter the disk definitions for the cpmtools package to cater
|
||||
3. 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
|
||||
|
||||
5. From now on it's the same as using the DOS/Windows instructions in Build.txt.
|
||||
4. 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 (Get-ExecutionPolicy)"
|
||||
PowerShell -command Write-Host "Your PowerShell ExecutionPolicy is currently set to: `'(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 (Get-ExecutionPolicy)"
|
||||
PowerShell -command Write-Host "Your new PowerShell ExecutionPolicy is now set to: `'(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-06-23
|
||||
Version: 2.5
|
||||
Updated: 2014-01-20
|
||||
Version: 2.5.3
|
||||
|
||||
This is an adaptation of CP/M-80 2.2 and ZSDOS/ZCPR
|
||||
targeting ROMs for all N8VEM Z80 hardware variations
|
||||
|
||||
BIN
RomDsk/cfg_n8vem_rf/1200.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/1200.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_n8vem_rf/38400.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/38400.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_n8vem_rf/9600.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/9600.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_n8vem_rf/FLASHZ.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/FLASHZ.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_n8vem_rf/LDTIM.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/LDTIM.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_n8vem_rf/RTC.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/RTC.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_n8vem_rf/T5.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/T5.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_n8vem_rf/VT3.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/VT3.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_n8vem_rf/XM.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/XM.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_n8vem_rf/XM5.COM
Normal file
BIN
RomDsk/cfg_n8vem_rf/XM5.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/1200.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/1200.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/38400.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/38400.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/9600.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/9600.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/FDTST.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/FDTST.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/FLASHZ.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/FLASHZ.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/LDTIM.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/LDTIM.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/RTC.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/RTC.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/SURVEY.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/SURVEY.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/XM.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/XM.COM
Normal file
Binary file not shown.
BIN
RomDsk/cfg_zeta_ppisd/XM5.COM
Normal file
BIN
RomDsk/cfg_zeta_ppisd/XM5.COM
Normal file
Binary file not shown.
14
RomList.txt
14
RomList.txt
@@ -108,6 +108,13 @@ 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
|
||||
@@ -253,6 +260,13 @@ 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
|
||||
|
||||
109
Source/cbios.asm
109
Source/cbios.asm
@@ -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 BNKSEL ; #17 - SEL. RAM BANK FOR LOW32K (obsolete, use HBIOS)
|
||||
JP PANIC ; #17 - SEL. RAM BANK FOR LOW32K (deprecated, 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,15 +101,13 @@ WBOOT:
|
||||
IM 1
|
||||
;
|
||||
LD SP,ISTACK ; STACK FOR INITIALIZATION
|
||||
;
|
||||
; 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
|
||||
;
|
||||
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
|
||||
;
|
||||
; FALL THRU TO INVOKE CP/M
|
||||
;
|
||||
@@ -378,12 +376,6 @@ READWRITE:
|
||||
JR BLKRW
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
BNKSEL:
|
||||
;
|
||||
LD A,C
|
||||
JP RAMPG
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
GETDSK:
|
||||
;
|
||||
; INPUT: C=DRIVE # (0=A, 1=B, ... P=16)
|
||||
@@ -1433,6 +1425,14 @@ 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
|
||||
;
|
||||
@@ -1461,7 +1461,7 @@ DPB_ROM:
|
||||
.DW 256 ; SPT: SECTORS PER TRACK
|
||||
.DB 4 ; BSH: BLOCK SHIFT FACTOR
|
||||
.DB 15 ; BLM: BLOCK MASK
|
||||
#IF (ROMBLKS < 256)
|
||||
#IF ((ROMBLKS - 1) < 256)
|
||||
.DB 1 ; EXM: EXTENT MASK
|
||||
#ELSE
|
||||
.DB 0 ; EXM: EXTENT MASK
|
||||
@@ -1483,7 +1483,7 @@ DPB_RAM:
|
||||
.DW 256 ; SPT: SECTORS PER TRACK
|
||||
.DB 4 ; BSH: BLOCK SHIFT FACTOR
|
||||
.DB 15 ; BLM: BLOCK MASK
|
||||
#IF (RAMBLKS < 256)
|
||||
#IF ((RAMBLKS - 1) < 256)
|
||||
.DB 1 ; EXM: EXTENT MASK
|
||||
#ELSE
|
||||
.DB 0 ; EXM: EXTENT MASK
|
||||
@@ -1496,6 +1496,24 @@ 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)
|
||||
@@ -1556,7 +1574,7 @@ DPB_FD360:
|
||||
.DW 36 ; SPT: SECTORS PER TRACK
|
||||
.DB 4 ; BSH: BLOCK SHIFT FACTOR
|
||||
.DB 15 ; BLM: BLOCK MASK
|
||||
.DB 0 ; EXM: EXTENT MASK
|
||||
.DB 1 ; EXM: EXTENT MASK
|
||||
.DW 170 ; DSM: TOTAL STORAGE IN BLOCKS - 1 BLK = ((360K - 18K OFF) / 2K BLS) - 1 = 170
|
||||
.DW 127 ; DRM: DIR ENTRIES - 1 = 128 - 1 = 127
|
||||
.DB 11110000B ; AL0: DIR BLK BIT MAP, FIRST BYTE
|
||||
@@ -1632,6 +1650,7 @@ 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
|
||||
;
|
||||
@@ -1707,6 +1726,10 @@ DPH_MAP:
|
||||
.DW HDSKDPH2
|
||||
.DW HDSKDPH3
|
||||
#ENDIF
|
||||
#IF (DSKMAP == DM_RF)
|
||||
.DW RFDPH0
|
||||
.DW RFDPH1
|
||||
#ENDIF
|
||||
#IF (DSKMAP != DM_ROM)
|
||||
.DW MDDPH0
|
||||
#ENDIF
|
||||
@@ -1753,6 +1776,10 @@ 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
|
||||
@@ -1765,24 +1792,18 @@ DSK_CNT .EQU DPH_CNT
|
||||
;
|
||||
; MAP LOGICAL TO PHYSICAL DEVICES
|
||||
;
|
||||
#IF (PLATFORM == PLT_N8)
|
||||
TTYDEV .EQU CIODEV_ASCI
|
||||
#ELSE
|
||||
TTYDEV .EQU CIODEV_UART
|
||||
#ENDIF
|
||||
;
|
||||
LD_TTY .EQU TTYDEV
|
||||
LD_TTY .EQU DEFCON
|
||||
LD_CRT .EQU CIODEV_CRT
|
||||
LD_BAT .EQU CIODEV_BAT
|
||||
LD_UC1 .EQU TTYDEV
|
||||
LD_PTR .EQU TTYDEV
|
||||
LD_UR1 .EQU TTYDEV
|
||||
LD_UR2 .EQU TTYDEV
|
||||
LD_PTP .EQU TTYDEV
|
||||
LD_UP1 .EQU TTYDEV
|
||||
LD_UP2 .EQU TTYDEV
|
||||
LD_LPT .EQU TTYDEV
|
||||
LD_UL1 .EQU TTYDEV
|
||||
LD_UC1 .EQU DEFCON
|
||||
LD_PTR .EQU DEFCON
|
||||
LD_UR1 .EQU DEFCON
|
||||
LD_UR2 .EQU DEFCON
|
||||
LD_PTP .EQU DEFCON
|
||||
LD_UP1 .EQU DEFCON
|
||||
LD_UP2 .EQU DEFCON
|
||||
LD_LPT .EQU DEFCON
|
||||
LD_UL1 .EQU DEFCON
|
||||
;
|
||||
#IF (PLATFORM == PLT_N8)
|
||||
LD_UC1 .SET CIODEV_ASCI + 1
|
||||
@@ -1855,9 +1876,6 @@ 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
|
||||
@@ -1892,14 +1910,13 @@ INIT1:
|
||||
CALL WRITESTR
|
||||
CALL NEWLINE
|
||||
|
||||
; 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
|
||||
; 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
|
||||
|
||||
; SYSTEM INITIALIZATION
|
||||
CALL BLKRES ; RESET DISK (DE)BLOCKING ALGORITHM
|
||||
|
||||
@@ -55,7 +55,7 @@ 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
|
||||
PPIDEIOB .EQU $80 ; 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)
|
||||
@@ -83,6 +83,8 @@ 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
|
||||
|
||||
@@ -55,7 +55,7 @@ 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
|
||||
PPIDEIOB .EQU $80 ; 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)
|
||||
@@ -83,6 +83,8 @@ 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,6 +91,8 @@ 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,6 +87,8 @@ 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,6 +87,8 @@ 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,6 +87,8 @@ 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,6 +87,8 @@ 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,6 +87,8 @@ 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,6 +87,8 @@ 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,6 +91,8 @@ 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,6 +87,8 @@ 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,6 +87,8 @@ 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,6 +87,8 @@ 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
|
||||
|
||||
103
Source/config_n8vem_rf.asm
Normal file
103
Source/config_n8vem_rf.asm
Normal file
@@ -0,0 +1,103 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; 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,6 +87,8 @@ 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,6 +87,8 @@ 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,6 +87,8 @@ 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
|
||||
|
||||
103
Source/config_zeta_ppisd.asm
Normal file
103
Source/config_zeta_ppisd.asm
Normal file
@@ -0,0 +1,103 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; 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,6 +87,8 @@ 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,6 +87,8 @@ 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,6 +149,9 @@ HB_INITTBL:
|
||||
#IF (HDSKENABLE)
|
||||
.DW HDSK_INIT
|
||||
#ENDIF
|
||||
#IF (RFENABLE)
|
||||
.DW RF_INIT
|
||||
#ENDIF
|
||||
#IF (PPKENABLE)
|
||||
.DW PPK_INIT
|
||||
#ENDIF
|
||||
@@ -326,6 +329,10 @@ DIO_DISPATCH1:
|
||||
#IF (HDSKENABLE)
|
||||
CP DIODEV_HDSK
|
||||
JP Z,HDSK_DISPATCH
|
||||
#ENDIF
|
||||
#IF (RFENABLE)
|
||||
CP DIODEV_RF
|
||||
JP Z,RF_DISPATCH
|
||||
#ENDIF
|
||||
CALL PANIC
|
||||
;
|
||||
@@ -734,6 +741,15 @@ 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
|
||||
jr nz,dmdone ; error, skip this drive
|
||||
jp 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,6 +570,10 @@ dmloop:
|
||||
cp DIODEV_HDSK ; SIMH HDSK
|
||||
jr z,dmprt
|
||||
|
||||
ld de,str_devrf
|
||||
cp DIODEV_RF ; RAM FLOPPY
|
||||
jr z,dmprt
|
||||
|
||||
jr dmdone
|
||||
|
||||
dmprt:
|
||||
@@ -770,6 +774,7 @@ str_devsd .DB "SD$"
|
||||
str_devprpsd .DB "PRPSD$"
|
||||
str_devpppsd .DB "PPPSD$"
|
||||
str_devhdsk .DB "HDSK$"
|
||||
str_devrf .DB "RF$"
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
|
||||
@@ -99,8 +99,12 @@ 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/*.*
|
||||
|
||||
@@ -112,11 +116,16 @@ 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
|
||||
@@ -147,8 +156,9 @@ $(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% >>$@
|
||||
@@ -168,6 +178,28 @@ 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) $< $@
|
||||
@@ -192,27 +224,55 @@ 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
|
||||
copy /B $(subst $(SPACE),+,$(^)) $@
|
||||
ifndef "windir"
|
||||
copy /B $(subst $(SPACE),+,$(^)) "$@"
|
||||
else
|
||||
cat $(CPBIN) $(DOSBIN) cbios.bin >>$@
|
||||
endif
|
||||
|
||||
rom0.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin
|
||||
copy /B $(subst $(SPACE),+,$(^)) $@
|
||||
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
|
||||
|
||||
rom1.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin hbios.bin
|
||||
copy /B $(subst $(SPACE),+,$(^)) $@
|
||||
ifndef "windir"
|
||||
copy /B $(subst $(SPACE),+,$(^)) "$@"
|
||||
else
|
||||
cat pgzero.bin bootrom.bin syscfg.bin loader.bin hbios.bin >>$@
|
||||
endif
|
||||
|
||||
$(OUTDIR)\$(ROMNAME).rom: rom0.bin rom1.bin $(ROMDISKFILES) $(OUTDIR)\$(ROMNAME).sys
|
||||
$(OUTDIR)/$(ROMNAME).rom: rom0.bin rom1.bin $(ROMDISKFILES) $(OUTDIR)/$(ROMNAME).sys
|
||||
ifndef "windir"
|
||||
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 $@
|
||||
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
|
||||
|
||||
$(OUTDIR)\$(ROMNAME).com: bootapp.bin syscfg.bin loader.bin hbios.bin dbgmon.bin os.bin
|
||||
copy /B $(subst $(SPACE),+,$(^)) $@
|
||||
$(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).sys: prefix.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
|
||||
|
||||
clean:
|
||||
ifndef "windir"
|
||||
if exist *.bin del *.bin
|
||||
if exist *.com del *.com
|
||||
if exist *.img del *.img
|
||||
@@ -221,4 +281,9 @@ clean:
|
||||
if exist *.exp del *.exp
|
||||
if exist *.tmp del *.tmp
|
||||
if exist build.inc del build.inc
|
||||
if exist $(OUTDIR)\*.* erase /Q $(OUTDIR)\*.*
|
||||
if exist "$(OUTDIR)/*.*" erase /Q "$(OUTDIR)/*.*"
|
||||
else
|
||||
rm -f *.bin *.com *.img *.rom *.lst *.exp *.tmp
|
||||
rm -f build.inc
|
||||
rm -f $(OUTDIR)/*.*
|
||||
endif
|
||||
@@ -1,206 +0,0 @@
|
||||
#
|
||||
# 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)/*.*
|
||||
266
Source/ppide.asm
266
Source/ppide.asm
@@ -21,12 +21,12 @@
|
||||
IDELSB .EQU PPIDEIOB + 0 ; LSB
|
||||
IDEMSB .EQU PPIDEIOB + 1 ; MSB
|
||||
IDECTL .EQU PPIDEIOB + 2 ; CONTROL SIGNALS
|
||||
PPI1CONT .EQU PPIDEIOB + 3 ; CONTROL BYTE PPI 82C55
|
||||
PPICTL .EQU PPIDEIOB + 3 ; PPI (8255) CONTROL PORT
|
||||
;
|
||||
; PPI control bytes for read and write to IDE drive
|
||||
;
|
||||
RD_IDE_8255 .EQU 10010010B ; IDE_8255_CTL OUT, IDE_8255_LSB/MSB INPUT
|
||||
WR_IDE_8255 .EQU 10000000B ; ALL THREE PORTS OUTPUT
|
||||
RD_IDE_8255 .EQU %10010010 ; IDE_8255_CTL OUT, IDE_8255_LSB/MSB INPUT
|
||||
WR_IDE_8255 .EQU %10000000 ; 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 10000000B ; 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 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
|
||||
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
|
||||
;
|
||||
;------------------------------------------------------------------
|
||||
; 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.
|
||||
;
|
||||
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_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
|
||||
;
|
||||
PPIDERC_OK .EQU 0
|
||||
PPIDERC_CMDERR .EQU 1
|
||||
PPIDERC_RDYTO .EQU 2
|
||||
PPIDERC_BUFTO .EQU 3
|
||||
PPIDE_RCOK .EQU 0
|
||||
PPIDE_RCCMDERR .EQU 1
|
||||
PPIDE_RCRDYTO .EQU 2
|
||||
PPIDE_RCBUFTO .EQU 3
|
||||
;
|
||||
; UNIT CONFIGURATION
|
||||
;
|
||||
PPIDE0_DEVICE .DB 11100000B ; LBA, MASTER DEVICE
|
||||
PPIDE1_DEVICE .DB 11110000B ; LBA, SLAVE DEVICE
|
||||
PPIDE_UNIT0 .DB %11100000 ; LBA, MASTER DEVICE
|
||||
PPIDE_UNIT1 .DB %11110000 ; LBA, SLAVE DEVICE
|
||||
;
|
||||
;
|
||||
;
|
||||
@@ -100,17 +100,21 @@ PPIDE_DISPATCH:
|
||||
CALL PANIC
|
||||
;
|
||||
PPIDE_RD:
|
||||
JP PPIDE_XREAD
|
||||
LD A,PPIDE_CMDREAD
|
||||
LD (PPIDEP_CMD),A
|
||||
JP PPIDE_RW
|
||||
;
|
||||
PPIDE_WR:
|
||||
JP PPIDE_XWRITE
|
||||
LD A,PPIDE_CMDWRITE
|
||||
LD (PPIDEP_CMD),A
|
||||
JP PPIDE_RW
|
||||
;
|
||||
PPIDE_ST:
|
||||
JP PPIDE_STATUS
|
||||
LD A,(PPIDE_STAT) ; LOAD STATUS
|
||||
OR A ; SET FLAGS
|
||||
RET
|
||||
;
|
||||
PPIDE_MED:
|
||||
JP PPIDE_MEDIA
|
||||
;
|
||||
; PPIDE_MEDIA
|
||||
;
|
||||
PPIDE_MEDIA:
|
||||
LD A,MID_HD
|
||||
RET
|
||||
;
|
||||
@@ -121,6 +125,9 @@ PPIDE_INIT:
|
||||
LD A,IDELSB
|
||||
CALL PRTHEXBYTE
|
||||
PRTS(" UNITS=2$")
|
||||
#IF (PPIDE8BIT)
|
||||
PRTS(" 8BIT$")
|
||||
#ENDIF
|
||||
#IF (PPIDESLOW)
|
||||
PRTS(" SLOW$")
|
||||
#ENDIF
|
||||
@@ -132,59 +139,22 @@ 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:
|
||||
; 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
|
||||
; 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
|
||||
|
||||
CALL PPIDE_WAITRDY ; WAIT FOR DRIVE READY
|
||||
JP NC,PPIDE_ERR
|
||||
CALL PPIDE_SETUP ; SETUP CYL, TRK, HEAD
|
||||
@@ -199,7 +169,7 @@ PPIDE_RW0:
|
||||
JP NC,PPIDE_ERR
|
||||
|
||||
LD A,(PPIDEP_CMD) ; DISPATCH TO READ OR WRITE SPECIFIC LOGIC
|
||||
CP PPIDECMD_WRITE
|
||||
CP PPIDE_CMDWRITE
|
||||
JP Z,PPIDE_RW1
|
||||
|
||||
CALL PPIDE_BUFRD ; READ BUFFER
|
||||
@@ -238,17 +208,55 @@ 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
|
||||
;
|
||||
;
|
||||
@@ -273,7 +281,7 @@ PPIDE_WBSY:
|
||||
SCF ; CARRY 1 = OK
|
||||
RET
|
||||
PPIDE_TO:
|
||||
LD A,PPIDERC_RDYTO
|
||||
LD A,PPIDE_RCRDYTO
|
||||
LD (PPIDE_RC),A
|
||||
XOR A ; CARRY 0 = TIMEOUT
|
||||
RET
|
||||
@@ -292,7 +300,7 @@ PPIDE_CHKERR:
|
||||
CALL PPIDE_READ ; READ IT
|
||||
LD (PPIDEP_ERR),A ; SAVE IT
|
||||
;
|
||||
LD A,PPIDERC_CMDERR ; COMMAND ERROR
|
||||
LD A,PPIDE_RCCMDERR ; COMMAND ERROR
|
||||
LD (PPIDE_RC),A ; SAVE IT
|
||||
;
|
||||
OR A ; CLEAR CF TO SIGNAL ERROR
|
||||
@@ -317,7 +325,7 @@ PPIDE_WDRQ:
|
||||
SCF ; CARRY 1 = OK
|
||||
RET
|
||||
PPIDE_TO2:
|
||||
LD A,PPIDERC_BUFTO
|
||||
LD A,PPIDE_RCBUFTO
|
||||
LD (PPIDE_RC),A
|
||||
XOR A ; CARRY 0 = TIMED OUT
|
||||
RET
|
||||
@@ -327,7 +335,7 @@ PPIDE_TO2:
|
||||
PPIDE_BUFRD:
|
||||
; SETUP PPI TO READ
|
||||
LD A,RD_IDE_8255 ; READ CONFIG
|
||||
OUT (PPI1CONT),A ; DO IT
|
||||
OUT (PPICTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; SELECT READ/WRITE IDE REGISTER
|
||||
@@ -341,7 +349,7 @@ PPIDE_BUFRD:
|
||||
; LOOP SETUP
|
||||
LD HL,(DIOBUF) ; LOCATION OF BUFFER
|
||||
LD B,0 ; 256 ITERATIONS
|
||||
LD C,IDEMSB ; SETUP C WITH IO PORT (MSB)
|
||||
LD C,IDELSB ; SETUP C WITH IO PORT (LSB)
|
||||
;
|
||||
CALL PPIDE_BUFRD1 ; FIRST PASS (FIRST 256 BYTES)
|
||||
CALL PPIDE_BUFRD1 ; SECOND PASS (LAST 256 BYTES)
|
||||
@@ -353,9 +361,6 @@ 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
|
||||
@@ -365,10 +370,14 @@ 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
|
||||
;
|
||||
@@ -376,22 +385,22 @@ PPIDE_BUFRD1: ; START OF READ LOOP
|
||||
;
|
||||
PPIDE_BUFWR:
|
||||
; SETUP PPI TO WRITE
|
||||
LD A,WR_IDE_8255 ; READ CONFIG
|
||||
OUT (PPI1CONT),A ; DO IT
|
||||
LD A,WR_IDE_8255 ; WRITE CONFIG
|
||||
OUT (PPICTL),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 := READ UNASSERTED
|
||||
LD E,A ; E := WRITE UNASSERTED
|
||||
XOR PPIDE_WR_LINE ; SWAP THE WRITE LINE BIT
|
||||
LD D,A ; D := READ ASSERTED
|
||||
LD D,A ; D := WRITE ASSERTED
|
||||
;
|
||||
; LOOP SETUP
|
||||
LD HL,(DIOBUF) ; LOCATION OF BUFFER
|
||||
LD B,0 ; 256 ITERATIONS
|
||||
LD C,IDEMSB ; SETUP C WITH IO PORT (MSB)
|
||||
LD C,IDELSB ; SETUP C WITH IO PORT (LSB)
|
||||
;
|
||||
CALL PPIDE_BUFWR1 ; FIRST PASS (FIRST 256 BYTES)
|
||||
CALL PPIDE_BUFWR1 ; SECOND PASS (LAST 256 BYTES)
|
||||
@@ -402,23 +411,26 @@ PPIDE_BUFWR:
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
RET
|
||||
;
|
||||
PPIDE_BUFWR1: ; START OF READ LOOP
|
||||
#IF (!PPIDE8BIT)
|
||||
DEC C ; MSB -> LSB
|
||||
#ENDIF
|
||||
PPIDE_BUFWR1: ; START OF WRITE LOOP
|
||||
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
|
||||
LD A,D ; ASSERT WRITE
|
||||
;
|
||||
; TOGGLE THE WRITE LINE
|
||||
LD A,D ; WRITE ASSERTED VALUE
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
LD A,E ; DEASSERT WRITE
|
||||
LD A,E ; WRITE UNASSERTED VALUE
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
JR NZ,PPIDE_BUFWR1 ; LOOP UNTIL DONE
|
||||
RET
|
||||
;
|
||||
@@ -437,12 +449,10 @@ PPIDE_SETUP:
|
||||
JP Z,PPIDE_SETUP_UNIT1
|
||||
CALL PANIC
|
||||
PPIDE_SETUP_UNIT0:
|
||||
LD A,(PPIDE0_DEVICE)
|
||||
; LD DE,(PPIDE0_OFFSET)
|
||||
LD A,(PPIDE_UNIT0)
|
||||
JP PPIDE_SETUP1
|
||||
PPIDE_SETUP_UNIT1:
|
||||
LD A,(PPIDE1_DEVICE)
|
||||
; LD DE,(PPIDE1_OFFSET)
|
||||
LD A,(PPIDE_UNIT1)
|
||||
JP PPIDE_SETUP1
|
||||
PPIDE_SETUP1:
|
||||
LD C,PPIDE_HEAD ; IDE HEAD REGISTER
|
||||
@@ -477,11 +487,13 @@ PPIDE_READ:
|
||||
;
|
||||
; SET PPI MODE TO READ CONFIGURATION
|
||||
LD A,RD_IDE_8255 ; PPI MODE TO READ
|
||||
OUT (PPI1CONT),A ; DO IT
|
||||
OUT (PPICTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; SELECT REQUESTED IDE REGISTER AND ASSERT READ
|
||||
; SELECT REQUESTED IDE REGISTER, THEN 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
|
||||
@@ -490,10 +502,16 @@ 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
|
||||
XOR A ; ZERO A
|
||||
OUT (IDECTL),A ; RELEASE ALL BUS SIGNALS
|
||||
LD A,C ; DEASSERT READ
|
||||
OUT (IDECTL),A ; DO IT
|
||||
XOR A ; RELEASE ALL BUS SIGNALS
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
POP AF ; RECOVER THE DATA BYTE
|
||||
@@ -508,15 +526,22 @@ PPIDE_WRITE:
|
||||
;
|
||||
; SET PPI MODE TO WRITE CONFIGURATION
|
||||
LD A,WR_IDE_8255 ; PPI MODE TO WRITE
|
||||
OUT (PPI1CONT),A ; DO IT
|
||||
OUT (PPICTL),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 (IDELSB),A ; SET IDE MSB
|
||||
; OUT (IDEMSB),A ; SET IDE MSB
|
||||
; RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
; PULSE THE WRITE LINE
|
||||
@@ -524,10 +549,13 @@ 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 ; ZERO A
|
||||
OUT (IDECTL),A ; RELEASE ALL BUS SIGNALS
|
||||
XOR A ; RELEASE ALL BUS SIGNALS
|
||||
OUT (IDECTL),A ; DO IT
|
||||
RECOVERY ; OPTIONAL SMALL DELAY
|
||||
;
|
||||
RET ; RETURN
|
||||
@@ -570,10 +598,10 @@ PPIDE_PRT:
|
||||
CALL PC_LBKT
|
||||
LD A,(PPIDEP_CMD)
|
||||
LD DE,PPIDESTR_READ
|
||||
CP PPIDECMD_READ
|
||||
CP PPIDE_CMDREAD
|
||||
JP Z,PPIDE_PRTCMD
|
||||
LD DE,PPIDESTR_WRITE
|
||||
CP PPIDECMD_WRITE
|
||||
CP PPIDE_CMDWRITE
|
||||
JP Z,PPIDE_PRTCMD
|
||||
LD DE,PPIDESTR_UNKCMD
|
||||
PPIDE_PRTCMD:
|
||||
@@ -614,16 +642,16 @@ PPIDE_PRTCMD:
|
||||
CALL PC_LBKT
|
||||
LD A,(PPIDE_RC)
|
||||
LD DE,PPIDESTR_RCOK
|
||||
CP PPIDERC_OK
|
||||
CP PPIDE_RCOK
|
||||
JP Z,PPIDE_PRTRC
|
||||
LD DE,PPIDESTR_RCCMDERR
|
||||
CP PPIDERC_CMDERR
|
||||
CP PPIDE_RCCMDERR
|
||||
JP Z,PPIDE_PRTRC
|
||||
LD DE,PPIDESTR_RCRDYTO
|
||||
CP PPIDERC_RDYTO
|
||||
CP PPIDE_RCRDYTO
|
||||
JP Z,PPIDE_PRTRC
|
||||
LD DE,PPIDESTR_RCBUFTO
|
||||
CP PPIDERC_BUFTO
|
||||
CP PPIDE_RCBUFTO
|
||||
JP Z,PPIDE_PRTRC
|
||||
LD DE,PPIDESTR_RCUNK
|
||||
PPIDE_PRTRC:
|
||||
@@ -664,12 +692,6 @@ 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.
|
||||
@@ -690,4 +712,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
Normal file
127
Source/rf.asm
Normal file
@@ -0,0 +1,127 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; 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
|
||||
30
Source/rf_dph.asm
Normal file
30
Source/rf_dph.asm
Normal file
@@ -0,0 +1,30 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; 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,6 +24,7 @@ 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,6 +57,7 @@ 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)
|
||||
;
|
||||
@@ -77,6 +78,7 @@ 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 0
|
||||
#DEFINE RTP 16
|
||||
#DEFINE BIOSVER "2.5"
|
||||
#DEFINE BIOSBLD "Build 16"
|
||||
#DEFINE REVISION 412
|
||||
#DEFINE RUP 3
|
||||
#DEFINE RTP 19
|
||||
#DEFINE BIOSVER "2.5.3"
|
||||
#DEFINE BIOSBLD "Build 19"
|
||||
#DEFINE REVISION 500
|
||||
|
||||
@@ -727,8 +727,9 @@ PRINT:
|
||||
;
|
||||
PRIN1:
|
||||
MOV A,M ;GET NEXT BYTE
|
||||
ANI 7FH ;WW - CLEAR MSB
|
||||
CALL CONOUT ;PRINT CHAR
|
||||
ANI ~80H ;WW - CLEAR HIGH BIT
|
||||
;WW CALL CONOUT ;PRINT CHAR
|
||||
CNZ CONOUT ;WW - DON'T OUTPUT CHAR IF ZERO
|
||||
MOV A,M ;GET NEXT BYTE AGAIN FOR TEST
|
||||
INX H ;PT TO NEXT BYTE
|
||||
ORA A ;SET FLAGS
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -131,7 +131,7 @@ PUB cls1(c,screencolor,pcport,ascii,CR) | i,x,y
|
||||
|
||||
inverse := 1
|
||||
|
||||
statprint(36,0, string(" N8VEM ParPortProp | RomWBW v0.92"))
|
||||
statprint(36,0, string(" N8VEM ParPortProp | RomWBW v0.93"))
|
||||
inverse := 0
|
||||
statprint(37,0, string(" "))
|
||||
statprint(38,0, string(" "))
|
||||
|
||||
Reference in New Issue
Block a user