mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
15 Commits
v3.1.1-pre
...
v3.1.1-pre
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51d9bdb655 | ||
|
|
25374946e0 | ||
|
|
689f8a2280 | ||
|
|
36b160f934 | ||
|
|
bf965c2604 | ||
|
|
e6b9d2dcfd | ||
|
|
33afeac10d | ||
|
|
2c0b818aba | ||
|
|
c5043d66f9 | ||
|
|
1b8e88e1a2 | ||
|
|
d599a3d57b | ||
|
|
461d1ce512 | ||
|
|
8c9ce2184e | ||
|
|
e5b1d5afc8 | ||
|
|
214ed54584 |
@@ -8,4 +8,4 @@ all::
|
||||
mkdir -p Tunes
|
||||
|
||||
clobber::
|
||||
@rm -f *.bin *.com *.img *.rom *.pdf *.log *.eeprom *.ovr *.hlp *.doc *.COM *.BIN Tunes/*.mym Tunes/*.pt?
|
||||
@rm -f *.bin *.com *.img *.rom *.pdf *.log *.eeprom *.ovr *.hlp *.doc *.COM *.BIN Tunes/*.mym Tunes/*.pt? Tunes/*.vgm
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
43
ReadMe.md
43
ReadMe.md
@@ -1,50 +1,9 @@
|
||||
---
|
||||
author: "Wayne Warthen (mailto:wwarthen@gmail.com)"
|
||||
classoption:
|
||||
- oneside
|
||||
colorlinks: true
|
||||
date: 02 Feb 2022
|
||||
documentclass: book
|
||||
fontfamily: helvet
|
||||
fontsize: 12pt
|
||||
geometry:
|
||||
- top=1.5in
|
||||
- bottom=1.5in
|
||||
- left=1.5in
|
||||
- right=1.5in
|
||||
graphics: true
|
||||
header-includes:
|
||||
-
|
||||
-
|
||||
include-before:
|
||||
-
|
||||
-
|
||||
institution: RetroBrew Computers Group
|
||||
linestretch: 1.25
|
||||
numbersections: true
|
||||
papersize: letter
|
||||
secnumdepth: 1
|
||||
title: RomWBW Getting Started
|
||||
toc: true
|
||||
toc-depth: 1
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# RomWBW
|
||||
|
||||
## Z80/Z180 System Software
|
||||
|
||||
Version 3.1 Pre-release
|
||||
02 Feb 2022
|
||||
28 Feb 2022
|
||||
|
||||
Wayne Warthen <wwarthen@gmail.com>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
RomWBW Getting Started
|
||||
Wayne Warthen (mailto:wwarthen@gmail.com)
|
||||
02 Feb 2022
|
||||
28 Feb 2022
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ RomWBW
|
||||
Z80/Z180 System Software
|
||||
|
||||
Version 3.1 Pre-release
|
||||
02 Feb 2022
|
||||
28 Feb 2022
|
||||
|
||||
Wayne Warthen wwarthen@gmail.com
|
||||
|
||||
|
||||
22
Readme.unix
22
Readme.unix
@@ -19,10 +19,14 @@ with respect to the .DS directive. it's usually a bad idea to mix
|
||||
It assumes that you have some standard system tools and libraries
|
||||
installed, specifically: gcc, gnu make, libncurses, and srecord.
|
||||
Typically, something like this will take care of adding all
|
||||
required packages:
|
||||
required packages in Linux:
|
||||
|
||||
sudo apt install build-essential libncurses-dev srecord
|
||||
|
||||
For MacOS, you will need:
|
||||
|
||||
brew install srecord
|
||||
|
||||
To build:
|
||||
cd to the top directory and type "make".
|
||||
|
||||
@@ -40,16 +44,20 @@ the "SCZ180" platform:
|
||||
|
||||
make ROM_PLATFORM=SCZ180 ROM_CONFIG=126
|
||||
|
||||
Please be aware that the make-based build does have a couple of
|
||||
deficiencies.
|
||||
Please be aware that the make-based build does have a few deficiencies.
|
||||
|
||||
First, there are some build failures that will not stop the make
|
||||
process. Some of this is because real CP/M 2.2 tools are used in
|
||||
First and most important, the Makefiles do not handle reruns very well.
|
||||
To ensure a full buld, use "make clobber" from the top level directory
|
||||
before running the actual build. For those used to using "make clean",
|
||||
you can do that but it is not as thorough as "make clobber".
|
||||
|
||||
Second, there are some build failures that will not stop the make
|
||||
process. Most of this is because real CP/M 2.2 tools are used in
|
||||
places and CP/M 2.2 does not allow programs to return a result code.
|
||||
|
||||
Second, not all dependencies are properly handled. So, changes to some
|
||||
Third, not all dependencies are properly handled. So, changes to some
|
||||
files will not cause things to rebuild as appropriate. In general, I
|
||||
recommend doing a "make clean" before running "make" to ensure that
|
||||
recommend doing a "make clobber" before running "make" to ensure that
|
||||
everything is fully rebuilt.
|
||||
|
||||
For macOS users, you may encounter a failure reading or writing files.
|
||||
|
||||
@@ -4,13 +4,11 @@ setlocal
|
||||
set TOOLS=../../Tools
|
||||
set APPBIN=..\..\Binary\Apps
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
call :asm syscopy || exit /b
|
||||
call :asm assign || exit /b
|
||||
@@ -21,10 +19,10 @@ call :asm rtc || exit /b
|
||||
call :asm timer || exit /b
|
||||
call :asm rtchb || exit /b
|
||||
|
||||
zx Z80ASM -SYSGEN/F || exit /b
|
||||
zxcc Z80ASM -SYSGEN/F || exit /b
|
||||
|
||||
zx MAC SURVEY.ASM -$PO || exit /b
|
||||
zx MLOAD25 -SURVEY.COM=SURVEY.HEX || exit /b
|
||||
zxcc MAC SURVEY.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -SURVEY.COM=SURVEY.HEX || exit /b
|
||||
|
||||
pushd XM && call Build || exit /b & popd
|
||||
pushd FDU && call Build || exit /b & popd
|
||||
|
||||
567
Source/Apps/Test/2piotst/2piotst.mac
Normal file
567
Source/Apps/Test/2piotst/2piotst.mac
Normal file
@@ -0,0 +1,567 @@
|
||||
; 24.9.2018 PMS (b1ackmai1er)
|
||||
; Modified version for ECB-ZILOG PERIPHERALS BOARD - TEST 2 PIO's
|
||||
; 01.11.2011 WKA
|
||||
; Assembler M80
|
||||
; ECB-4PIO
|
||||
; Testprogramm f<>r die I/O-Karte ECB-4PIO in Z80-Mnemonics
|
||||
|
||||
PAGE 72
|
||||
.Z80
|
||||
ASEG
|
||||
ORG 100H
|
||||
;
|
||||
;CP/M-ADDRESSES
|
||||
;* * * * * * *
|
||||
;
|
||||
BOOT EQU 0 ;WARMBOOT CP/M
|
||||
BDOS EQU 5 ;ENTRY BDOS
|
||||
NMI EQU 66H ;Error-ROUTINE
|
||||
;
|
||||
;CONSOLE-CODES
|
||||
;* * * * * * *
|
||||
;
|
||||
EOT EQU 4 ;END OF TEXT
|
||||
BS EQU 8 ;BACKSPACE
|
||||
TAB EQU 9 ;TABULATOR
|
||||
LF EQU 0AH ;LINE-FEED
|
||||
CR EQU 0DH ;CARRIAGE-RETURN
|
||||
FF EQU 0CH ;FORM-FEED
|
||||
ESC EQU 1BH ;ESCAPE
|
||||
CTRLC EQU 'C'-40H ;CONTROL-C
|
||||
CTRLW EQU 'W'-40H ;CONTROL-W
|
||||
CTRLX EQU 'X'-40H ;CONTROL-X
|
||||
CTRLY EQU 'Y'-40H ;CONTROL-Y
|
||||
CTRLZ EQU 'Z'-40H ;CONTROL-Z
|
||||
;
|
||||
BASE EQU 0B8H ; 4 DIL-SCHALTER
|
||||
;
|
||||
PIO0AD EQU BASE+0 ; PIO 0 A DATEN
|
||||
PIO0AC EQU BASE+2 ; PIO 0 A CONTROL
|
||||
PIO0BD EQU BASE+1 ; PIO 0 B DATEN
|
||||
PIO0BC EQU BASE+3 ; PIO 0 B CONTROL
|
||||
;
|
||||
PIO1AD EQU BASE+4 ; PIO 1 A DATEN
|
||||
PIO1AC EQU BASE+6 ; PIO 1 A CONTROL
|
||||
PIO1BD EQU BASE+5 ; PIO 1 B DATEN
|
||||
PIO1BC EQU BASE+7 ; PIO 1 B CONTROL
|
||||
;
|
||||
MAIN: LD DE,PIO_SRTMSG
|
||||
CALL PSTRIN
|
||||
;
|
||||
LD DE,INI_MSG
|
||||
CALL PSTRIN
|
||||
CALL INIT
|
||||
;
|
||||
LD DE,PIO0ADW ;PIO0 A
|
||||
CALL PSTRIN
|
||||
LD A,55H
|
||||
PUSH AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
OUT (PIO0AD),A
|
||||
IN A,(PIO0AD)
|
||||
PUSH AF
|
||||
;
|
||||
LD DE,PIO0ADR
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
;
|
||||
LD DE,PIO0ADW
|
||||
CALL PSTRIN
|
||||
LD A,0AAH
|
||||
PUSH AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
OUT (PIO0AD),A
|
||||
IN A,(PIO0AD)
|
||||
PUSH AF
|
||||
;
|
||||
LD DE,PIO0ADR
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
;
|
||||
LD DE,PIO0BDW ;PIO0 B
|
||||
CALL PSTRIN
|
||||
LD A,55H
|
||||
PUSH AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
OUT (PIO0BD),A
|
||||
IN A,(PIO0BD)
|
||||
PUSH AF
|
||||
;
|
||||
LD DE,PIO0BDR
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
;
|
||||
LD DE,PIO0BDW
|
||||
CALL PSTRIN
|
||||
LD A,0AAH
|
||||
PUSH AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
OUT (PIO0BD),A
|
||||
IN A,(PIO0BD)
|
||||
PUSH AF
|
||||
;
|
||||
LD DE,PIO0BDR
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
;
|
||||
LD DE,PIO1ADW ;PIO1 A
|
||||
CALL PSTRIN
|
||||
LD A,55H
|
||||
PUSH AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
OUT (PIO1AD),A
|
||||
IN A,(PIO1AD)
|
||||
PUSH AF
|
||||
;
|
||||
LD DE,PIO1ADR
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
;
|
||||
LD DE,PIO1ADW
|
||||
CALL PSTRIN
|
||||
LD A,0AAH
|
||||
PUSH AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
OUT (PIO1AD),A
|
||||
IN A,(PIO1AD)
|
||||
PUSH AF
|
||||
;
|
||||
LD DE,PIO1ADR
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
;
|
||||
LD DE,PIO1BDW ;PIO1 B
|
||||
CALL PSTRIN
|
||||
LD A,55H
|
||||
PUSH AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
OUT (PIO1BD),A
|
||||
IN A,(PIO1BD)
|
||||
PUSH AF
|
||||
;
|
||||
LD DE,PIO1BDR
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
;
|
||||
LD DE,PIO1BDW
|
||||
CALL PSTRIN
|
||||
LD A,0AAH
|
||||
PUSH AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
OUT (PIO1BD),A
|
||||
IN A,(PIO1BD)
|
||||
PUSH AF
|
||||
;
|
||||
LD DE,PIO1BDR
|
||||
CALL PSTRIN
|
||||
POP AF
|
||||
CALL OUTB
|
||||
LD DE,LINE_E
|
||||
CALL PSTRIN
|
||||
;
|
||||
LD DE,PIO_ENDMSG
|
||||
CALL PSTRIN
|
||||
JP BOOT
|
||||
;
|
||||
;==========================================================================
|
||||
INIT: LD HL,PIO0T ; PIO0 INITITALISIEREN
|
||||
CALL INITX
|
||||
LD HL,PIO1T ; PIO1 INITITALISIEREN
|
||||
CALL INITX
|
||||
RET
|
||||
;
|
||||
INITX: LD A,(HL) ; BYTE-ANZAHL
|
||||
OR A
|
||||
RET Z
|
||||
LD B,A ; Port-Adresse nach C
|
||||
INC HL
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
OTIR
|
||||
JR INITX
|
||||
;
|
||||
PIO0T: DEFB 05 ; 5 BYTE ZUM PIO 0 A CONTROL
|
||||
DEFB PIO0AC
|
||||
DEFB 00000011B ; DIS-INT
|
||||
DEFB 01001111B ; BETR.ART BYTE EINGABE
|
||||
DEFB 01001111B ; BETR.ART BYTE EINGABE
|
||||
DEFB 11001111B ; BETR.ART BIT EIN/AUSG.
|
||||
DEFB 00000000B ; ALLES AUSG.
|
||||
DEFB 01 ; 1 BYTE ZUM PIO 0 A DATEN
|
||||
DEFB PIO0AD
|
||||
DEFB 00000000B ; DATEN "LOW"
|
||||
;
|
||||
DEFB 05 ; 5 BYTE ZUM PIO 0 B CONTROL
|
||||
DEFB PIO0BC
|
||||
DEFB 00000011B ; DIS-INT
|
||||
DEFB 01001111B ; BETR.ART BYTE EINGABE
|
||||
DEFB 01001111B ; BETR.ART BYTE EINGABE
|
||||
DEFB 11001111B ; BETR.ART BIT EIN/AUSG.
|
||||
DEFB 00000000B ; ALLES AUSG.
|
||||
DEFB 01 ; 1 BYTE ZUM PIO 0 B DATEN
|
||||
DEFB PIO0BD
|
||||
DEFB 00000000B ; DATEN "LOW"
|
||||
DEFB 0 ; ENDE PIO 0 B -TABELLE
|
||||
;
|
||||
PIO1T: DEFB 05 ; 5 BYTE ZUM PIO 1 A CONTROL
|
||||
DEFB PIO1AC
|
||||
DEFB 00000011B ; DIS-INT
|
||||
DEFB 01001111B ; BETR.ART BYTE EINGABE
|
||||
DEFB 01001111B ; BETR.ART BYTE EINGABE
|
||||
DEFB 11001111B ; BETR.ART BIT EIN/AUSG.
|
||||
DEFB 00000000B ; ALLES AUSG.
|
||||
DEFB 01 ; 1 BYTE ZUM PIO 1 A DATEN
|
||||
DEFB PIO1AD
|
||||
DEFB 00000000B ; DATEN "LOW"
|
||||
;
|
||||
DEFB 05 ; 5 BYTE ZUM PIO 1 B CONTROL
|
||||
DEFB PIO1BC
|
||||
DEFB 00000011B ; DIS-INT
|
||||
DEFB 01001111B ; BETR.ART BYTE EINGABE
|
||||
DEFB 01001111B ; BETR.ART BYTE EINGABE
|
||||
DEFB 11001111B ; BETR.ART BIT EIN/AUSG.
|
||||
DEFB 00000000B ; ALLES AUSG.
|
||||
DEFB 01 ; 1 BYTE ZUM PIO 1 B DATEN
|
||||
DEFB PIO1BD
|
||||
DEFB 00000000B ; DATEN "LOW"
|
||||
DEFB 0 ; ENDE PIO 1 B -TABELLE
|
||||
;
|
||||
;==========================================================================
|
||||
;
|
||||
;Output on Screen
|
||||
;****************
|
||||
;
|
||||
PRBS: LD E,BS
|
||||
CALL PCHAR
|
||||
RET
|
||||
;
|
||||
;Output CR+LF on Screen
|
||||
;**********************
|
||||
;
|
||||
CRLF: LD E,CR
|
||||
CALL PCHAR
|
||||
LD E,LF
|
||||
CALL PCHAR
|
||||
RET
|
||||
;
|
||||
;Output ASCII-Character
|
||||
;**********************
|
||||
;
|
||||
PRINP: PUSH AF
|
||||
LD E,A
|
||||
CALL PCHAR
|
||||
POP AF
|
||||
RET;
|
||||
;
|
||||
;CALL BDOS with Register Save
|
||||
;****************************
|
||||
;
|
||||
INCHA: LD C,1 ;INPUT CHARACTER TO A
|
||||
JR BDO
|
||||
PCHAR: LD C,2 ;PRINT CHARACTER IN E
|
||||
JR BDO
|
||||
PSTRIN: LD C,9 ;PRINT STRING
|
||||
JR BDO
|
||||
INBUFF: LD C,10 ;READ CONSOLE-BUFFER
|
||||
JR BDO
|
||||
CSTS: LD C,11 ;CONSOLE-STATUS
|
||||
JR BDO
|
||||
OPEN: LD C,15 ;OPEN FILE
|
||||
JR BDO
|
||||
CLOSE: LD C,16 ;CLOSE FILE
|
||||
JR BDO
|
||||
DELETE: LD C,19 ;DELETE FILE
|
||||
JR BDO
|
||||
READS: LD C,20 ;READ SEEK
|
||||
JR BDO
|
||||
WRITES: LD C,21 ;WRITE SEEK
|
||||
JR BDO
|
||||
MAKE: LD C,22 ;MAKE FILE
|
||||
JR BDO
|
||||
SETDMA: LD C,26 ;SET DMA-ADDRESS
|
||||
BDO: PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
CALL BDOS
|
||||
POP IY
|
||||
POP IX
|
||||
POP BC
|
||||
POP DE
|
||||
POP HL
|
||||
RET
|
||||
;
|
||||
;DIRECT CONSOLE INPUT
|
||||
;********************
|
||||
;
|
||||
INDCON: CALL INDCOX
|
||||
CP 0
|
||||
JR Z,INDCON
|
||||
RET
|
||||
;
|
||||
INDCOX: LD C,6 ;Code for Direct Console Input
|
||||
LD E,0FFH ;Code for Input
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
CALL BDOS
|
||||
POP IY
|
||||
POP IX
|
||||
POP BC
|
||||
POP DE
|
||||
POP HL
|
||||
RET
|
||||
;
|
||||
;
|
||||
;Output WORD
|
||||
;***********
|
||||
;
|
||||
;PARAMETER: Entry WORD IN HL
|
||||
;*********
|
||||
;
|
||||
OUTW: LD A,H
|
||||
CALL OUTB
|
||||
LD A,L
|
||||
CALL OUTB
|
||||
RET
|
||||
;
|
||||
;Output BYTE
|
||||
;***********
|
||||
;
|
||||
;PARAMETER: Entry BYTE IN A
|
||||
;*********
|
||||
;
|
||||
OUTB: PUSH AF
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND 0FH
|
||||
CALL HBTHE ;Change Half-BYTE
|
||||
POP AF
|
||||
AND 0FH
|
||||
CALL HBTHE
|
||||
RET
|
||||
;
|
||||
;Output HALF-BYTE
|
||||
;****************
|
||||
;
|
||||
;PARAMETER: Entry Half-BYTE IN A (BIT 0 - 3)
|
||||
;*********
|
||||
;
|
||||
HBTHE: CP 0AH
|
||||
JR C,HBTHE1
|
||||
ADD A,7 ;Character to Letter
|
||||
HBTHE1: ADD A,30H
|
||||
LD E,A
|
||||
CALL PCHAR
|
||||
RET
|
||||
;
|
||||
;Input ADDRESS
|
||||
;*************
|
||||
;
|
||||
;PARAMETER: Exit with ADDRESS IN HL
|
||||
;*********
|
||||
;
|
||||
INADR: LD HL,0
|
||||
INADR1: CALL INCHAR ;Input TETRADE
|
||||
LD D,A
|
||||
CALL INBYT1 ;IN HEXA
|
||||
RET C ;END OF Input
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
OR L
|
||||
LD L,A
|
||||
JR INADR1 ;New Key
|
||||
;
|
||||
;
|
||||
;Input BYTE
|
||||
;**********
|
||||
;
|
||||
;PARAMTER: Exit with BYTE IN A
|
||||
;********
|
||||
;
|
||||
INBYT: CALL INADR
|
||||
LD A,L
|
||||
RET
|
||||
;
|
||||
;Input of one TETRADE to A (BIT 0-3)
|
||||
;************************************
|
||||
;
|
||||
INBYT1: SUB '0'
|
||||
RET C
|
||||
CP 'G'-30H
|
||||
JR NC,INBYT3 ;Error
|
||||
CP ':'-30H
|
||||
JR C,INBYT2
|
||||
CP 'A'-30H
|
||||
JR C,INBYT3 ;Error
|
||||
SUB 7
|
||||
INBYT2: OR A
|
||||
RET
|
||||
;
|
||||
INBYT3: SCF
|
||||
RET
|
||||
;
|
||||
;Input ASCII-Character to A
|
||||
;**************************
|
||||
;
|
||||
INCON: CALL INDCON ;Input ASCII-Character to A
|
||||
CP CTRLC ;TEST CONTROL-C
|
||||
JP Z,QUIT
|
||||
CP CTRLX ;TEST CONTROL-X
|
||||
JR Z,INCHA1
|
||||
CP CTRLW ;TEST CONTROL-W
|
||||
JR Z,INCHA3
|
||||
CP CTRLY ;TEST CONTROL-Y
|
||||
JR Z,INCHA2
|
||||
CP BS
|
||||
RET Z
|
||||
CP CR
|
||||
RET Z
|
||||
CP ' '
|
||||
JR C,INCON
|
||||
JR INCH1
|
||||
;
|
||||
INCHAR: CALL INCHA ;Input ASCII-Character to A
|
||||
CP CTRLC ;TEST CONTROL-C
|
||||
JR Z,QUIT
|
||||
CP CTRLX ;TEST CONTROL-X
|
||||
JR Z,INCHA1
|
||||
CP CTRLW ;TEST CONTROL-W
|
||||
JR Z,INCHA3
|
||||
CP CTRLY ;TEST CONTROL-Y
|
||||
JR Z,INCHA2
|
||||
CP BS
|
||||
RET Z
|
||||
CP CR
|
||||
RET Z
|
||||
CP ' '
|
||||
JR C,INCHAR ;Input invalied
|
||||
;
|
||||
INCH1: CP 'A'
|
||||
RET C ;Character ok
|
||||
;
|
||||
RES 5,A ;lower case -> upper case
|
||||
RET
|
||||
INCHA1: POP HL
|
||||
LD E,FF
|
||||
CALL PCHAR ;Clear screen
|
||||
JP GOON
|
||||
INCHA2: POP HL
|
||||
LD E,FF
|
||||
CALL PCHAR ;Clear screen
|
||||
JP GOON
|
||||
INCHA3: LD E,FF
|
||||
CALL PCHAR
|
||||
RET
|
||||
;
|
||||
;ABBRUCH DER BEARBEITUNG
|
||||
;***********************
|
||||
;
|
||||
COMPLT: LD DE,TCOMP
|
||||
CALL PSTRIN
|
||||
JP GOON
|
||||
QUIT: CALL CRLF
|
||||
LD DE,TQUIT
|
||||
JR FINIS
|
||||
INTTIM: POP DE ;STACK OK
|
||||
; CALL DESAK
|
||||
LD DE,TNMIAB
|
||||
CALL PSTRIN
|
||||
LD DE,MAIN ;NEW ADDRESS
|
||||
PUSH DE
|
||||
RETN
|
||||
FINIS: CALL PSTRIN ;AT BDOS-ERROR
|
||||
GOON:
|
||||
JP BOOT
|
||||
;
|
||||
;
|
||||
;TEXT-Messages
|
||||
;*************
|
||||
;
|
||||
TCOMP: DEFB ESC,21,0,14H,ESC,23,0
|
||||
DEFM 'Function complete !!$'
|
||||
TQUIT: DEFB ESC,23,0,14H,7
|
||||
DEFM 'End Run RAMFTEST$'
|
||||
TNMIAB: DEFB ESC,23,0,14H
|
||||
DEFM 'Time Out !!$'
|
||||
;
|
||||
;
|
||||
INI_MSG:DEFM 'ECB-4PIO Init all PIO Bit-Mode ',CR,LF,'$'
|
||||
PIO0ADW:DEFM 'ECB-4PIO Write to PIO0AD ','$'
|
||||
PIO0ADR:DEFM 'ECB-4PIO Read from PIO0AD ','$'
|
||||
PIO0BDW:DEFM 'ECB-4PIO Write to PIO0BD ','$'
|
||||
PIO0BDR:DEFM 'ECB-4PIO Read from PIO0BD ','$'
|
||||
PIO1ADW:DEFM 'ECB-4PIO Write to PIO1AD ','$'
|
||||
PIO1ADR:DEFM 'ECB-4PIO Read from PIO1AD ','$'
|
||||
PIO1BDW:DEFM 'ECB-4PIO Write to PIO1BD ','$'
|
||||
PIO1BDR:DEFM 'ECB-4PIO Read from PIO1BD ','$'
|
||||
|
||||
PIO_SRTMSG:
|
||||
DEFM 'ECB-ZILOG PERIPHERALS start test 1.0',CR,LF,'$'
|
||||
PIO_ENDMSG:
|
||||
DEFM 'ECB-ZILOG PERIPHERALS end test 1.0',CR,LF,'$'
|
||||
LINE_E: DEFM 'H',CR,LF,'$'
|
||||
;
|
||||
IF1
|
||||
.PRINTX 'Pass 1 complete'
|
||||
ENDIF
|
||||
;
|
||||
IF2
|
||||
.PRINTX 'Pass 2 complete'
|
||||
.PRINTX 'Assembly complete'
|
||||
ENDIF
|
||||
;
|
||||
END
|
||||
|
||||
13
Source/Apps/Test/2piotst/Build.cmd
Normal file
13
Source/Apps/Test/2piotst/Build.cmd
Normal file
@@ -0,0 +1,13 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TOOLS=..\..\..\..\Tools
|
||||
|
||||
set PATH=%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zxcc M80 -=2piotst/l || exit /b
|
||||
zxcc L80 -2piotst,2piotst.com/n/e || exit /b
|
||||
|
||||
copy /Y 2piotst.com ..\..\..\..\Binary\Apps\Test\ || exit /b
|
||||
8
Source/Apps/Test/2piotst/Clean.cmd
Normal file
8
Source/Apps/Test/2piotst/Clean.cmd
Normal file
@@ -0,0 +1,8 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.com del *.com
|
||||
if exist *.lst del *.lst
|
||||
if exist *.bin del *.bin
|
||||
if exist *.rel del *.rel
|
||||
if exist *.prn del *.prn
|
||||
8
Source/Apps/Test/2piotst/Makefile
Normal file
8
Source/Apps/Test/2piotst/Makefile
Normal file
@@ -0,0 +1,8 @@
|
||||
OBJECTS = 2piotst.com
|
||||
DEST = ../../../../Binary/Apps/Test
|
||||
TOOLS =../../../../Tools
|
||||
OTHERS = *.rel
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
2piotst.com : 2piotst.rel
|
||||
@@ -4,13 +4,11 @@ setlocal
|
||||
set TOOLS=../../../Tools
|
||||
set APPBIN=..\..\Binary\Apps
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
pushd DMAmon && call Build || exit /b & popd
|
||||
pushd tstdskng && call Build || exit /b & popd
|
||||
@@ -22,6 +20,7 @@ pushd rzsz && call Build || exit /b & popd
|
||||
pushd vdctest && call Build || exit /b & popd
|
||||
pushd kbdtest && call Build || exit /b & popd
|
||||
pushd ps2info && call Build || exit /b & popd
|
||||
pushd 2piotst && call Build || exit /b & popd
|
||||
|
||||
goto :eof
|
||||
|
||||
|
||||
@@ -17,3 +17,4 @@ pushd rzsz && call Clean || exit /b 1 & popd
|
||||
pushd vdctest && call Clean || exit /b 1 & popd
|
||||
pushd kbdtest && call Clean || exit /b 1 & popd
|
||||
pushd ps2info && call Clean || exit /b 1 & popd
|
||||
pushd 2piotst && call Clean || exit /b 1 & popd
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
OBJECTS =
|
||||
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info
|
||||
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst
|
||||
DEST = ../../../Binary/Apps/Test
|
||||
TOOLS =../../../Tools
|
||||
|
||||
|
||||
@@ -3,22 +3,20 @@ setlocal
|
||||
|
||||
set TOOLS=..\..\..\Tools
|
||||
|
||||
set PATH=%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set ZXBINDIR=%TOOLS%\cpm\bin\
|
||||
set ZXLIBDIR=%TOOLS%\cpm\lib\
|
||||
set ZXINCDIR=%TOOLS%\cpm\include\
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zx mac xmdm125.asm $PO || exit /b
|
||||
zxcc mac xmdm125.asm $PO || exit /b
|
||||
|
||||
zx slr180 -xmhb/HF || exit /b
|
||||
zx mload25 XM=xmdm125,xmhb || exit /b
|
||||
zxcc slr180 -xmhb/HF || exit /b
|
||||
zxcc mload25 XM=xmdm125,xmhb || exit /b
|
||||
|
||||
rem zx slr180 -xmuf/HF || exit /b
|
||||
rem zx mload25 XMUF=xmdm125,xmuf || exit /b
|
||||
rem zxcc slr180 -xmuf/HF || exit /b
|
||||
rem zxcc mload25 XMUF=xmdm125,xmuf || exit /b
|
||||
|
||||
zx slr180 -xmhb_old/HF || exit /b
|
||||
zx mload25 XMOLD=xmdm125,xmhb_old || exit /b
|
||||
zxcc slr180 -xmhb_old/HF || exit /b
|
||||
zxcc mload25 XMOLD=xmdm125,xmhb_old || exit /b
|
||||
|
||||
rem set PROMPT=[Build] %PROMPT%
|
||||
rem %comspec%
|
||||
|
||||
@@ -7,10 +7,10 @@ OTHERS = *.hex
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
xm.com: xmdm125.hex xmhb.hex
|
||||
$(ZXCC) $(CPM)/MLOAD25 XM=xmdm125,xmhb
|
||||
$(ZXCC) MLOAD25 XM=xmdm125,xmhb
|
||||
|
||||
xmuf.com: xmdm125.hex xmuf.hex
|
||||
$(ZXCC) $(CPM)/MLOAD25 XMUF=xmdm125,xmuf
|
||||
$(ZXCC) MLOAD25 XMUF=xmdm125,xmuf
|
||||
|
||||
xmold.com: xmdm125.hex xmhb_old.hex
|
||||
$(ZXCC) $(CPM)/MLOAD25 XMOLD=xmdm125,xmhb_old
|
||||
$(ZXCC) MLOAD25 XMOLD=xmdm125,xmhb_old
|
||||
|
||||
@@ -3,35 +3,33 @@ setlocal
|
||||
|
||||
set TOOLS=..\..\..\Tools
|
||||
|
||||
set PATH=%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set ZXBINDIR=%TOOLS%\cpm\bin\
|
||||
set ZXLIBDIR=%TOOLS%\cpm\lib\
|
||||
set ZXINCDIR=%TOOLS%\cpm\include\
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zx z80asm -zmd/fm
|
||||
zx l80 -zmd,zmd/n/e
|
||||
zxcc z80asm -zmd/fm
|
||||
zxcc l80 -zmd,zmd/n/e
|
||||
|
||||
zx z80asm -zmap/fm
|
||||
zx l80 -zmap,zmap/n/e
|
||||
zxcc z80asm -zmap/fm
|
||||
zxcc l80 -zmap,zmap/n/e
|
||||
|
||||
zx z80asm -znews/fm
|
||||
zx l80 -znews,znews/n/e
|
||||
zxcc z80asm -znews/fm
|
||||
zxcc l80 -znews,znews/n/e
|
||||
|
||||
zx z80asm -znewp/fm
|
||||
zx l80 -znewp,znewp/n/e
|
||||
zxcc z80asm -znewp/fm
|
||||
zxcc l80 -znewp,znewp/n/e
|
||||
|
||||
zx z80asm -zfors/fm
|
||||
zx l80 -zfors,zfors/n/e
|
||||
zxcc z80asm -zfors/fm
|
||||
zxcc l80 -zfors,zfors/n/e
|
||||
|
||||
zx z80asm -zforp/fm
|
||||
zx l80 -zforp,zforp/n/e
|
||||
zxcc z80asm -zforp/fm
|
||||
zxcc l80 -zforp,zforp/n/e
|
||||
|
||||
zx z80asm -zmdel/fm
|
||||
zx l80 -zmdel,zmdel/n/e
|
||||
zxcc z80asm -zmdel/fm
|
||||
zxcc l80 -zmdel,zmdel/n/e
|
||||
|
||||
zx z80asm -zmdhb/fh
|
||||
zx mload25 -zmd=zmd.com,zmdhb
|
||||
zxcc z80asm -zmdhb/fh
|
||||
zxcc mload25 -zmd=zmd.com,zmdhb
|
||||
|
||||
copy /Y zmd.com ..\..\..\Binary\Apps\ || exit /b
|
||||
|
||||
|
||||
@@ -6,5 +6,5 @@ OTHERS = *.hex zmd.rel
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
zmd.com: zmd.rel zmdhb.hex
|
||||
$(ZXCC) $(CPM)/L80 -zmd,zmd/n/e
|
||||
$(ZXCC) $(CPM)/MLOAD25 -zmd=zmd.com,zmdhb
|
||||
$(ZXCC) L80 -zmd,zmd/n/e
|
||||
$(ZXCC) MLOAD25 -zmd=zmd.com,zmdhb
|
||||
|
||||
@@ -3,14 +3,12 @@ setlocal
|
||||
|
||||
set TOOLS=..\..\..\Tools
|
||||
|
||||
set PATH=%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set ZXBINDIR=%TOOLS%\cpm\bin\
|
||||
set ZXLIBDIR=%TOOLS%\cpm\lib\
|
||||
set ZXINCDIR=%TOOLS%\cpm\include\
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zx Z80ASM -ZMO-RW01/H || exit /b
|
||||
zx MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-RW01 || exit /b
|
||||
zxcc Z80ASM -ZMO-RW01/H || exit /b
|
||||
zxcc MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-RW01 || exit /b
|
||||
|
||||
copy /Y zmp.com ..\..\..\Binary\Apps\ || exit /b
|
||||
copy /Y *.ovr ..\..\..\Binary\Apps\ || exit /b
|
||||
|
||||
@@ -7,4 +7,4 @@ NODELETE = *.ovr zmp.doc *.hlp
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
zmp.com: zmo-rw01.hex
|
||||
$(ZXCC) $(CPM)/MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-RW01
|
||||
$(ZXCC) MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-RW01
|
||||
|
||||
@@ -22,12 +22,14 @@
|
||||
; 2016-04-08 [WBW] Determine key memory addresses dynamically
|
||||
; 2019-08-07 [WBW] Fixed DPB selection error
|
||||
; 2019-11-17 [WBW] Added preliminary CP/M 3 support
|
||||
; 2019-12-24 [WBW] Fixed location of BIOS save area\
|
||||
; 2019-12-24 [WBW] Fixed location of BIOS save area
|
||||
; 2020-04-29 [WBW] Updated for larger DPH (16 -> 20 bytes)
|
||||
; 2020-05-06 [WBW] Add patch level to version compare
|
||||
; 2020-05-10 [WBW] Set media change flag in XDPH for CP/M 3
|
||||
; 2020-05-12 [WBW] Back out media change flag
|
||||
; 2021-12-06 [WBW] Fix inverted ROM/RAM DPB mapping in buffer alloc
|
||||
; 2022-02-28 [WBW] Use HBIOS to swap banks under CP/M 3
|
||||
; Use CPM3 BDOS direct BIOS call to get DRVTBL adr
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
@@ -43,6 +45,7 @@ stksiz .equ $40 ; Working stack size
|
||||
;
|
||||
restart .equ $0000 ; CP/M restart vector
|
||||
bdos .equ $0005 ; BDOS invocation vector
|
||||
bnksel .equ $FFF3 ; HBIOS bank select vector
|
||||
;
|
||||
stamp .equ $40 ; loc of RomWBW CBIOS zero page stamp
|
||||
;
|
||||
@@ -108,8 +111,11 @@ init:
|
||||
ld c,$0C ; function number
|
||||
call bdos ; do it, HL := version
|
||||
ld (cpmver),hl ; save it
|
||||
ld a,l ; low byte
|
||||
cp $30 ; CP/M 3.0?
|
||||
;push hl ; *debug*
|
||||
;pop bc ; *debug*
|
||||
;call prthexword ; *debug*
|
||||
;ld a,l ; low byte
|
||||
;cp $30 ; CP/M 3.0?
|
||||
;
|
||||
; get location of config data and verify integrity
|
||||
ld hl,stamp ; HL := adr or RomWBW zero page stamp
|
||||
@@ -231,18 +237,24 @@ initx:
|
||||
; CP/M 3 initialization
|
||||
;
|
||||
initcpm3:
|
||||
ld hl,(bioloc)
|
||||
ld de,22*3 ; offset of DRVTBL func
|
||||
add hl,de ; HL := DRVTBL func
|
||||
call jphl ; do it, HL := DRVTBL adr
|
||||
ld (drvtbl),hl ; save it
|
||||
ld a,22 ; XBIOS DRVTBL function
|
||||
call xbios ; Invoke XBIOS
|
||||
ld (drvtbl),hl ; save DRVTBL address
|
||||
;
|
||||
; The CP/M 3 drvtbl is in common memory, but the XDPHs are not.
|
||||
; So, here we temporarily swap the bank to the CP/M 3 system
|
||||
; bank. We cannot use the CP/M Direct BIOS call because it
|
||||
; explicitly blocks use of SELMEM, so we are foreced to use
|
||||
; HBIOS call. The CP/M 3 system bank is always the HBIOS
|
||||
; user bank.
|
||||
;
|
||||
; switch to sysbnk
|
||||
ld hl,(bioloc)
|
||||
ld de,27*3 ; offset of SELMEM func
|
||||
add hl,de ; HL := SELMEM func
|
||||
ld a,0 ; bank 0 is system bank
|
||||
call jphl
|
||||
ld a,($FFE0) ; get current bank
|
||||
push af ; save it
|
||||
ld bc,$F8F2 ; HBIOS Get Bank Info
|
||||
rst 08 ; call HBIOS, E=User Bank
|
||||
ld a,e ; HBIOS User Bank
|
||||
call bnksel ; HBIOS BNKSEL
|
||||
;
|
||||
; copy CP/M 3 drvtbl to drvmap working copy
|
||||
ld hl,(drvtbl) ; get drive table in HL
|
||||
@@ -278,11 +290,8 @@ initc4:
|
||||
djnz initc2
|
||||
;
|
||||
; switch back to tpabnk
|
||||
ld hl,(bioloc)
|
||||
ld de,27*3 ; offset of SELMEM func
|
||||
add hl,de ; HL := SELMEM func
|
||||
ld a,1 ; bank 1 is tpa bank
|
||||
call jphl
|
||||
pop af ; recover prev bank
|
||||
call bnksel ; HBIOS BNKSEL
|
||||
;
|
||||
; return success
|
||||
xor a ; signal success
|
||||
@@ -397,6 +406,15 @@ usage:
|
||||
call crlf ; formatting
|
||||
ld de,msgban1 ; point to version message part 1
|
||||
call prtstr ; print it
|
||||
ld de,msg22 ; assume CP/M 2.2
|
||||
ld a,(cpmver) ; low byte of ver
|
||||
cp $30 ; CP/M 3.0?
|
||||
jp c,usage1 ; if not, jump ahead
|
||||
ld de,msg3 ; CP/M 3
|
||||
usage1:
|
||||
call prtstr
|
||||
ld de,msbban2 ; next portion of banner
|
||||
call prtstr
|
||||
ld a,(unamod) ; get UNA flag
|
||||
or a ; set flags
|
||||
ld de,msghb ; point to HBIOS mode message
|
||||
@@ -404,7 +422,7 @@ usage:
|
||||
ld de,msgub ; point to UBIOS mode message
|
||||
call nz,prtstr ; if UNA, say so
|
||||
call crlf ; formatting
|
||||
ld de,msgban2 ; point to version message part 2
|
||||
ld de,msgban3 ; point to version message part 2
|
||||
call prtstr ; print it
|
||||
call crlf2 ; blank line
|
||||
ld de,msguse ; point to usage message
|
||||
@@ -728,13 +746,13 @@ makdph3:
|
||||
;
|
||||
;
|
||||
instcpm3:
|
||||
;
|
||||
; switch to sysbnk
|
||||
ld hl,(bioloc)
|
||||
ld de,27*3 ; offset of SELMEM func
|
||||
add hl,de ; HL := SELMEM func
|
||||
ld a,0 ; bank 0 is system bank
|
||||
call jphl
|
||||
; swicth to sysbnk
|
||||
ld a,($FFE0) ; get current bank
|
||||
push af ; save it
|
||||
ld bc,$F8F2 ; HBIOS Get Bank Info
|
||||
rst 08 ; call HBIOS, E=User Bank
|
||||
ld a,e ; HBIOS User Bank
|
||||
call $FFF3 ; HBIOS BNKSEL
|
||||
;
|
||||
; copy drvmap working copy to CP/M 3 drvtbl
|
||||
ld hl,(drvtbl) ; get drvtbl address
|
||||
@@ -802,11 +820,8 @@ instc3:
|
||||
djnz instc1
|
||||
;
|
||||
; switch back to tpabnk
|
||||
ld hl,(bioloc)
|
||||
ld de,27*3 ; offset of SELMEM func
|
||||
add hl,de ; HL := SELMEM func
|
||||
ld a,1 ; bank 1 is tpa bank
|
||||
call jphl
|
||||
pop af ; recover prev bank
|
||||
call $FFF3 ; HBIOS BNKSEL
|
||||
;
|
||||
; set SCB drive door open flag
|
||||
ld a,$54 ; SCB drive door opened flag
|
||||
@@ -1733,6 +1748,23 @@ cbios:
|
||||
call addhl ; determine specific function address
|
||||
jp (hl) ; invoke CBIOS
|
||||
;
|
||||
; Routine to call CPM3 BIOS routines via BDOS
|
||||
; function 50.
|
||||
;
|
||||
xbios:
|
||||
ld (biofnc),a ; set BIOS function
|
||||
ld c,50 ; direct BIOS call function
|
||||
ld (dereg),de ; set DE parm
|
||||
ld de,biospb ; BIOS parameter block
|
||||
jp bdos ; invoke BDOS
|
||||
;
|
||||
biospb:
|
||||
biofnc .db 0 ; BIOS function
|
||||
areg .db 0 ; A register
|
||||
bcreg .dw 0 ; BC register
|
||||
dereg .dw 0 ; DE register
|
||||
hlreg .dw 0 ; HL register
|
||||
;
|
||||
; Add the value in A to HL (HL := HL + A)
|
||||
;
|
||||
addhl:
|
||||
@@ -1911,10 +1943,13 @@ stack .equ $ ; stack top
|
||||
; Messages
|
||||
;
|
||||
indent .db " ",0
|
||||
msgban1 .db "ASSIGN v1.4a for RomWBW CP/M, 6-Dec-2021",0
|
||||
msgban1 .db "ASSIGN v1.5 for RomWBW CP/M ",0
|
||||
msg22 .db "2.2",0
|
||||
msg3 .db "3",0
|
||||
msbban2 .db ", 28-Feb-2022",0
|
||||
msghb .db " (HBIOS Mode)",0
|
||||
msgub .db " (UBIOS Mode)",0
|
||||
msgban2 .db "Copyright 2021, Wayne Warthen, GNU GPL v3",0
|
||||
msgban3 .db "Copyright 2021, Wayne Warthen, GNU GPL v3",0
|
||||
msguse .db "Usage: ASSIGN D:[=[{D:|<device>[<unitnum>]:[<slicenum>]}]][,...]",13,10
|
||||
.db " ex. ASSIGN (display all active assignments)",13,10
|
||||
.db " ASSIGN /? (display version and usage)",13,10
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TOOLS=../../../../Tools
|
||||
set TOOLS=../../../Tools
|
||||
set PATH=%TOOLS%\tasm32;%PATH%
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
|
||||
@@ -3,11 +3,9 @@ setlocal
|
||||
|
||||
pushd ZCPR33 && call Build || exit /b & popd
|
||||
|
||||
set PATH=%PATH%;..\..\Tools\zx;..\..\Tools\cpmtools;
|
||||
set PATH=%PATH%;..\..\Tools\zxcc;..\..\Tools\cpmtools;
|
||||
|
||||
set ZXBINDIR=../../tools/cpm/bin/
|
||||
set ZXLIBDIR=../../tools/cpm/lib/
|
||||
set ZXINCDIR=../../tools/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
call :makebp 33
|
||||
call :makebp 33bnk
|
||||
@@ -45,7 +43,7 @@ echo.
|
||||
|
||||
copy def-ww-z%VER%.lib def-ww.lib || exit /b
|
||||
rem if exist bpbio-ww.rel del bpbio-ww.rel || exit /b
|
||||
zx ZMAC -BPBIO-WW -/P || exit /b
|
||||
zxcc ZMAC -BPBIO-WW -/P || exit /b
|
||||
if exist bp%VER%.prn del bp%VER%.prn || exit /b
|
||||
ren bpbio-ww.prn bp%VER%.prn || exit /b
|
||||
if exist bp%VER%.err del bp%VER%.err || exit /b
|
||||
@@ -56,18 +54,18 @@ rem pause
|
||||
|
||||
rem BPBUILD attempts to rename bpsys.img -> bpsys.bak
|
||||
rem while is is still open. Real CP/M does not care,
|
||||
rem but zx fails due to host OS. Below, a temp file
|
||||
rem but zxcc fails due to host OS. Below, a temp file
|
||||
rem is used to avoid the problematic rename.
|
||||
|
||||
if exist bpsys.img del bpsys.img || exit /b
|
||||
if exist bpsys.tmp del bpsys.tmp || exit /b
|
||||
copy bp%VER%.dat bpsys.tmp || exit /b
|
||||
rem bpsys.tmp -> bpsys.img
|
||||
zx bpbuild -bpsys.tmp <bpbld1.rsp || exit /b
|
||||
zxcc bpbuild -bpsys.tmp <bpbld1.rsp || exit /b
|
||||
if exist bpsys.tmp del bpsys.tmp || exit /b
|
||||
copy bpsys.img bpsys.tmp || exit /b
|
||||
rem bpsys.tmp -> bpsys.img
|
||||
zx bpbuild -bpsys.tmp <bpbld2.rsp || exit /b
|
||||
zxcc bpbuild -bpsys.tmp <bpbld2.rsp || exit /b
|
||||
if exist bp%VER%.img del bp%VER%.img || exit /b
|
||||
if exist bpsys.img ren bpsys.img bp%VER%.img || exit /b
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ clobber::
|
||||
$(eval VER := $(subst .img,,$(subst bp,,$@)))
|
||||
cp def-ww-z$(VER).lib def-ww.lib
|
||||
rm -f bpbio-ww.rel
|
||||
$(ZXCC) $(CPM)/ZMAC -BPBIO-WW -/P
|
||||
$(ZXCC) ZMAC -BPBIO-WW -/P
|
||||
mv bpbio-ww.prn bp$(VER).prn
|
||||
cp bp$(VER).dat bpsys.dat
|
||||
$(ZXCC) ./bpbuild.com -bpsys.dat 0 < bpbld1.rsp
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set PATH=%PATH%;..\..\..\Tools\zx;..\..\..\Tools\cpmtools;
|
||||
set PATH=%PATH%;..\..\..\Tools\zxcc;..\..\..\Tools\cpmtools;
|
||||
|
||||
set ZXBINDIR=../../../tools/cpm/bin/
|
||||
set ZXLIBDIR=../../../tools/cpm/lib/
|
||||
set ZXINCDIR=../../../tools/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
copy ..\z3base.lib . || exit /b
|
||||
zx ZMAC -zcpr33.z80 -/P || exit /b
|
||||
zxcc ZMAC -zcpr33.z80 -/P || exit /b
|
||||
del z3base.lib || exit /b
|
||||
move zcpr33.rel .. || exit /b
|
||||
@@ -9,10 +9,10 @@ DIFFPATH = $(DIFFTO)/Source/BPBIOS
|
||||
|
||||
zcpr33t.rel: ../z3baset.lib
|
||||
cp ../z3baset.lib z3baset.lib
|
||||
$(ZXCC) $(CPM)/ZMAC -zcpr33t.z80 -/P
|
||||
$(ZXCC) ZMAC -zcpr33t.z80 -/P
|
||||
rm z3baset.lib
|
||||
|
||||
zcpr33n.rel: ../z3basen.lib
|
||||
cp ../z3basen.lib z3basen.lib
|
||||
$(ZXCC) $(CPM)/ZMAC -zcpr33n.z80 -/P
|
||||
$(ZXCC) ZMAC -zcpr33n.z80 -/P
|
||||
rm z3basen.lib
|
||||
|
||||
@@ -3,13 +3,11 @@ setlocal
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
echo.
|
||||
echo Building CBIOS for RomWBW...
|
||||
|
||||
@@ -2412,6 +2412,13 @@ MD_INIT:
|
||||
; UDPATE THE RAM/ROM DPB STRUCTURES BASED ON HARDWARE
|
||||
;
|
||||
#IFDEF PLTWBW
|
||||
; TODO: HANDLE DISABLED RAM/ROM DISK BETTER.
|
||||
; IF RAM OR ROM DISK ARE DISABLED, BELOW WILL STILL
|
||||
; TRY TO ADJUST THE DPB BASED ON RAM BANK CALCULATIONS.
|
||||
; IT SHOULD NOT MATTER BECAUSE THE DPB SHOULD NEVER BE
|
||||
; USED. IT WOULD BE BETTER TO GET RAMD0/ROMD0 AND
|
||||
; RAMDN/ROMDN FROM THE HCB AND USE THOSE TO CALC THE
|
||||
; DPB ADJUSTMENT. IF DN-D0=0, BYPASS ADJUSTMENT.
|
||||
LD A,(HCB + HCB_ROMBANKS) ; ROM BANK COUNT
|
||||
SUB 4 ; REDUCE BANK COUNT BY RESERVED PAGES
|
||||
LD IX,DPB_ROM ; ADDRESS OF DPB
|
||||
|
||||
@@ -3,34 +3,32 @@ setlocal
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
call :asm ccpb03 || goto :eof
|
||||
call :asm bdosb01 || goto :eof
|
||||
|
||||
zx MAC -CCP.ASM -$PO || exit /b
|
||||
zx MLOAD25 -CCP.BIN=CCP.HEX || exit /b
|
||||
zxcc MAC -CCP.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -CCP.BIN=CCP.HEX || exit /b
|
||||
|
||||
zx MAC -BDOS.ASM -$PO || exit /b
|
||||
zx MLOAD25 -BDOS.BIN=BDOS.HEX || exit /b
|
||||
zxcc MAC -BDOS.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -BDOS.BIN=BDOS.HEX || exit /b
|
||||
|
||||
zx MAC -CCP22.ASM -$PO || exit /b
|
||||
zx MLOAD25 -CCP22.BIN=CCP22.HEX || exit /b
|
||||
zxcc MAC -CCP22.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -CCP22.BIN=CCP22.HEX || exit /b
|
||||
|
||||
zx MAC -BDOS22.ASM -$PO || exit /b
|
||||
zx MLOAD25 -BDOS22.BIN=BDOS22.HEX || exit /b
|
||||
zxcc MAC -BDOS22.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -BDOS22.BIN=BDOS22.HEX || exit /b
|
||||
|
||||
zx MAC -OS2CCP.ASM -$PO || exit /b
|
||||
zx MLOAD25 -OS2CCP.BIN=OS2CCP.HEX || exit /b
|
||||
zxcc MAC -OS2CCP.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -OS2CCP.BIN=OS2CCP.HEX || exit /b
|
||||
|
||||
zx MAC -OS3BDOS.ASM -$PO || exit /b
|
||||
zx MLOAD25 -OS3BDOS.BIN=OS3BDOS.HEX || exit /b
|
||||
zxcc MAC -OS3BDOS.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -OS3BDOS.BIN=OS3BDOS.HEX || exit /b
|
||||
|
||||
tasm -t80 -g3 -fFF loader.asm loader.bin loader.lst || exit /b
|
||||
|
||||
|
||||
@@ -3,32 +3,30 @@ setlocal
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%TOOLS%\cpmtools;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%TOOLS%\cpmtools;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
rem set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set ZXINCDIR=../
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
set INCDIR80=../
|
||||
|
||||
echo.
|
||||
echo.
|
||||
echo *** CPM Loader ***
|
||||
echo.
|
||||
zx RMAC -CPMLDR || exit /b
|
||||
zx Z80ASM -UTIL/MF || exit /b
|
||||
zxcc RMAC -CPMLDR || exit /b
|
||||
zxcc Z80ASM -UTIL/MF || exit /b
|
||||
copy optdsk.lib ldropts.lib || exit /b
|
||||
zx Z80ASM -BIOSLDR/MF || exit /b
|
||||
zxcc Z80ASM -BIOSLDR/MF || exit /b
|
||||
move /Y biosldr.rel biosldrd.rel || exit /b
|
||||
move /Y biosldr.lst biosldrd.lst || exit /b
|
||||
zx LINK -CPMLDRD[L100]=CPMLDR,BIOSLDRD,UTIL || exit /b
|
||||
zxcc LINK -CPMLDRD[L100]=CPMLDR,BIOSLDRD,UTIL || exit /b
|
||||
move /Y cpmldrd.com cpmldr.bin || exit /b
|
||||
copy optcmd.lib ldropts.lib || exit /b
|
||||
zx Z80ASM -BIOSLDR/MF || exit /b
|
||||
zxcc Z80ASM -BIOSLDR/MF || exit /b
|
||||
move /Y biosldr.rel biosldrc.rel || exit /b
|
||||
move /Y biosldr.lst biosldrd.lst || exit /b
|
||||
zx LINK -CPMLDRC[L100]=CPMLDR,BIOSLDRC,UTIL || exit /b
|
||||
zxcc LINK -CPMLDRC[L100]=CPMLDR,BIOSLDRC,UTIL || exit /b
|
||||
move /Y cpmldrc.com cpmldr.com || exit /b
|
||||
rem pause
|
||||
|
||||
@@ -38,16 +36,16 @@ echo *** Resident CPM3 BIOS ***
|
||||
echo.
|
||||
copy optres.lib options.lib || exit /b
|
||||
copy genres.dat gencpm.dat || exit /b
|
||||
zx RMAC -BIOSKRNL || exit /b
|
||||
zx RMAC -SCB || exit /b
|
||||
zx Z80ASM -BOOT/MF || exit /b
|
||||
zx Z80ASM -CHARIO/MF || exit /b
|
||||
zx Z80ASM -MOVE/MF || exit /b
|
||||
zx Z80ASM -DRVTBL/MF || exit /b
|
||||
zx Z80ASM -DISKIO/MF || exit /b
|
||||
zx Z80ASM -UTIL/MF || exit /b
|
||||
zx LINK -BIOS3[OS]=BIOSKRNL,SCB,BOOT,CHARIO,MOVE,DRVTBL,DISKIO,UTIL || exit /b
|
||||
zx GENCPM -AUTO -DISPLAY || exit /b
|
||||
zxcc RMAC -BIOSKRNL || exit /b
|
||||
zxcc RMAC -SCB || exit /b
|
||||
zxcc Z80ASM -BOOT/MF || exit /b
|
||||
zxcc Z80ASM -CHARIO/MF || exit /b
|
||||
zxcc Z80ASM -MOVE/MF || exit /b
|
||||
zxcc Z80ASM -DRVTBL/MF || exit /b
|
||||
zxcc Z80ASM -DISKIO/MF || exit /b
|
||||
zxcc Z80ASM -UTIL/MF || exit /b
|
||||
zxcc LINK -BIOS3[OS]=BIOSKRNL,SCB,BOOT,CHARIO,MOVE,DRVTBL,DISKIO,UTIL || exit /b
|
||||
zxcc GENCPM -AUTO -DISPLAY || exit /b
|
||||
copy cpm3.sys cpm3res.sys || exit /b
|
||||
rem pause
|
||||
|
||||
@@ -57,16 +55,16 @@ echo *** Banked CPM3 BIOS ***
|
||||
echo.
|
||||
copy optbnk.lib options.lib || exit /b
|
||||
copy genbnk.dat gencpm.dat || exit /b
|
||||
zx RMAC -BIOSKRNL || exit /b
|
||||
zx RMAC -SCB || exit /b
|
||||
zx Z80ASM -BOOT/MF || exit /b
|
||||
zx Z80ASM -CHARIO/MF || exit /b
|
||||
zx Z80ASM -MOVE/MF || exit /b
|
||||
zx Z80ASM -DRVTBL/MF || exit /b
|
||||
zx Z80ASM -DISKIO/MF || exit /b
|
||||
zx Z80ASM -UTIL/MF || exit /b
|
||||
zx LINK -BNKBIOS3[B]=BIOSKRNL,SCB,BOOT,CHARIO,MOVE,DRVTBL,DISKIO,UTIL || exit /b
|
||||
zx GENCPM -AUTO -DISPLAY || exit /b
|
||||
zxcc RMAC -BIOSKRNL || exit /b
|
||||
zxcc RMAC -SCB || exit /b
|
||||
zxcc Z80ASM -BOOT/MF || exit /b
|
||||
zxcc Z80ASM -CHARIO/MF || exit /b
|
||||
zxcc Z80ASM -MOVE/MF || exit /b
|
||||
zxcc Z80ASM -DRVTBL/MF || exit /b
|
||||
zxcc Z80ASM -DISKIO/MF || exit /b
|
||||
zxcc Z80ASM -UTIL/MF || exit /b
|
||||
zxcc LINK -BNKBIOS3[B]=BIOSKRNL,SCB,BOOT,CHARIO,MOVE,DRVTBL,DISKIO,UTIL || exit /b
|
||||
zxcc GENCPM -AUTO -DISPLAY || exit /b
|
||||
copy cpm3.sys cpm3bnk.sys || exit /b
|
||||
rem pause
|
||||
|
||||
@@ -76,16 +74,16 @@ echo *** Banked ZPM3 BIOS ***
|
||||
echo.
|
||||
copy optzpm.lib options.lib || exit /b
|
||||
copy genbnk.dat gencpm.dat || exit /b
|
||||
zx RMAC -BIOSKRNL || exit /b
|
||||
zx RMAC -SCB || exit /b
|
||||
zx Z80ASM -BOOT/MF || exit /b
|
||||
zx Z80ASM -CHARIO/MF || exit /b
|
||||
zx Z80ASM -MOVE/MF || exit /b
|
||||
zx Z80ASM -DRVTBL/MF || exit /b
|
||||
zx Z80ASM -DISKIO/MF || exit /b
|
||||
zx Z80ASM -UTIL/MF || exit /b
|
||||
zx LINK -ZPMBIOS3[B]=BIOSKRNL,SCB,BOOT,CHARIO,MOVE,DRVTBL,DISKIO,UTIL || exit /b
|
||||
rem zx GENCPM -AUTO -DISPLAY || exit /b
|
||||
zxcc RMAC -BIOSKRNL || exit /b
|
||||
zxcc RMAC -SCB || exit /b
|
||||
zxcc Z80ASM -BOOT/MF || exit /b
|
||||
zxcc Z80ASM -CHARIO/MF || exit /b
|
||||
zxcc Z80ASM -MOVE/MF || exit /b
|
||||
zxcc Z80ASM -DRVTBL/MF || exit /b
|
||||
zxcc Z80ASM -DISKIO/MF || exit /b
|
||||
zxcc Z80ASM -UTIL/MF || exit /b
|
||||
zxcc LINK -ZPMBIOS3[B]=BIOSKRNL,SCB,BOOT,CHARIO,MOVE,DRVTBL,DISKIO,UTIL || exit /b
|
||||
rem zxcc GENCPM -AUTO -DISPLAY || exit /b
|
||||
rem copy cpm3.sys zpm3.sys || exit /b
|
||||
rem pause
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ TOOLS = ../../Tools
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
export ZXINCDIR = ../
|
||||
export INCDIR80 = ../
|
||||
|
||||
BIOSOBJS = bioskrnl.rel scb.rel boot.rel chario.rel
|
||||
BIOSOBJS += move.rel drvtbl.rel diskio.rel util.rel
|
||||
@@ -61,31 +61,31 @@ zpmbios3:
|
||||
make OBJECTS=zpmbios3.spr DEST=
|
||||
|
||||
cpmldr.bin: biosldrd.rel cpmldr.rel util.rel
|
||||
$(ZXCC) $(TOOLS)/cpm/bin/LINK -CPMLDRD[L100]=CPMLDR,BIOSLDRD,UTIL
|
||||
$(ZXCC) LINK -CPMLDRD[L100]=CPMLDR,BIOSLDRD,UTIL
|
||||
mv cpmldrd.com cpmldr.bin
|
||||
|
||||
cpmldr.com: biosldrc.rel cpmldr.rel util.rel
|
||||
$(ZXCC) $(TOOLS)/cpm/bin/LINK -CPMLDRC[L100]=CPMLDR,BIOSLDRC,UTIL
|
||||
$(ZXCC) LINK -CPMLDRC[L100]=CPMLDR,BIOSLDRC,UTIL
|
||||
mv cpmldrc.com cpmldr.com
|
||||
|
||||
biosldrc.rel: biosldr.z80 optcmd.lib
|
||||
cp optcmd.lib ldropts.lib
|
||||
$(ZXCC) $(TOOLS)/cpm/bin/Z80ASM -BIOSLDR/MF
|
||||
$(ZXCC) Z80ASM -BIOSLDR/MF
|
||||
mv biosldr.rel biosldrc.rel
|
||||
|
||||
biosldrd.rel: biosldr.z80 optdsk.lib
|
||||
cp optdsk.lib ldropts.lib
|
||||
$(ZXCC) $(TOOLS)/cpm/bin/Z80ASM -BIOSLDR/MF
|
||||
$(ZXCC) Z80ASM -BIOSLDR/MF
|
||||
mv biosldr.rel biosldrd.rel
|
||||
|
||||
bios3.spr: $(BIOSOBJS)
|
||||
$(ZXCC) $(CPM)/LINK -bios3[OS]=$(BIOSNAMES)
|
||||
$(ZXCC) LINK -bios3[OS]=$(BIOSNAMES)
|
||||
|
||||
bnkbios3.spr: $(BIOSOBJS)
|
||||
$(ZXCC) $(CPM)/LINK -bnkbios3[B]=$(BIOSNAMES)
|
||||
$(ZXCC) LINK -bnkbios3[B]=$(BIOSNAMES)
|
||||
|
||||
zpmbios3.spr: $(BIOSOBJS)
|
||||
$(ZXCC) $(TOOLS)/cpm/bin/LINK -zpmbios3[B]=$(BIOSNAMES)
|
||||
$(ZXCC) LINK -zpmbios3[B]=$(BIOSNAMES)
|
||||
|
||||
cpm3.sys: cpm3$(DEFCPM3).sys
|
||||
cp cpm3$(DEFCPM3).sys cpm3.sys
|
||||
|
||||
@@ -355,6 +355,13 @@ dpb$hdnew: ; 8MB Hard Disk Drive (new format)
|
||||
; called for first time initialization.
|
||||
|
||||
dsk$init:
|
||||
; TODO: Handle disabled RAM/ROM disk better.
|
||||
; If RAM or ROM disk are disabled, below will still
|
||||
; try to adjust the DPB based on RAM bank calculations.
|
||||
; It should not matter because the DPB should never be
|
||||
; used. It would be better to get RAMD0/ROMD0 and
|
||||
; RAMDN/ROMDN from the HCB and use those to calc the
|
||||
; DPB adjustment. If DN-D0=0, bypass adjustment.
|
||||
ld b,0FAh ; HBIOS Peek Function
|
||||
ld a,(@hbbio) ; HBIOS bank id
|
||||
ld d,a ; ... goes in D
|
||||
|
||||
@@ -168,6 +168,11 @@ This command is particularly sensitive to being matched to the
|
||||
appropriate version of the RomWBW ROM you are using. Be very careful
|
||||
to keep all copies of `ASSIGN.COM` up to date with your ROM.
|
||||
|
||||
Additionally, the `ASSIGN` command must be able to adjust to CP/M 2.2
|
||||
vs. CP/M 3. If you utilize an RSX that modifies the BDOS version
|
||||
returned, you are likely to have serious problems. In this case, be
|
||||
sure to use `ASSIGN` prior to loading the RSX or after it is unloaded.
|
||||
|
||||
## Etymology
|
||||
|
||||
The `ASSIGN` command is an original product and the source code is
|
||||
|
||||
@@ -51,7 +51,7 @@ gpp -o %1.tmp -U "$" "$" "{" "}{" "}$" "{" "}" "@@@" "" -M "$" "$" "{" "}{" "}$"
|
||||
pandoc %1.tmp -f markdown -t pdf -s -o %1.pdf --default-image-extension=pdf || exit /b
|
||||
pandoc %1.tmp -f markdown -t html -s -o %1.html --default-image-extension=png || exit /b
|
||||
pandoc %1.tmp -f markdown -t dokuwiki -s -o %1.dw --default-image-extension=png || exit /b
|
||||
pandoc %1.tmp -f markdown -t gfm -s -o %1.gfm --default-image-extension=png || exit /b
|
||||
pandoc %1.tmp -f markdown -t gfm -o %1.gfm --default-image-extension=png || exit /b
|
||||
pandoc %1.tmp -f markdown -t plain -s -o %1.txt --default-image-extension=png || exit /b
|
||||
|
||||
goto :eof
|
||||
@@ -3,15 +3,13 @@ setlocal
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zx zsm =camel80.azm -/l || exit /b
|
||||
zx link -CAMEL80.BIN[L200]=CAMEL80 || exit /b
|
||||
zxcc zsm =camel80.azm -/l || exit /b
|
||||
zxcc link -CAMEL80.BIN[L200]=CAMEL80 || exit /b
|
||||
|
||||
|
||||
|
||||
@@ -9,13 +9,11 @@ if "%1" == "dist" goto :dist
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
::
|
||||
:: This PowerShell script validates the build variables passed in. If
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
;
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
CPUOSC .SET 24000000 ; CPU OSC FREQ IN MHZ
|
||||
CPUOSC .SET 12000000 ; CPU OSC FREQ IN MHZ
|
||||
;
|
||||
MEMMGR .SET MM_Z280 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280]
|
||||
;
|
||||
|
||||
@@ -28,16 +28,17 @@
|
||||
;
|
||||
#include "Config/RCZ280_nat.asm"
|
||||
;
|
||||
CPUOSC .SET 29491200 ; CPU OSC FREQ IN MHZ
|
||||
CPUOSC .SET 14745600 ; CPU OSC FREQ IN MHZ
|
||||
;
|
||||
RAMSIZE .SET 384 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .SET 128 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .SET 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
RAMSIZE .SET 256 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE_CHK .SET 256 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
;
|
||||
RAMLOC .SET 23 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMLOC .SET 18 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .SET (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
;
|
||||
MDROM .SET FALSE ; MD: ENABLE ROM DISK
|
||||
MDRAM .SET TRUE ; MD: ENABLE RAM DISK
|
||||
MDROM .SET TRUE ; MD: ENABLE ROM DISK
|
||||
MDRAM .SET FALSE ; MD: ENABLE RAM DISK
|
||||
;
|
||||
Z2U0HFC .SET TRUE ; Z2U 0: ENABLE HARDWARE FLOW CONTROL
|
||||
;
|
||||
Z2UOSC .SET (CPUOSC / 8) ; Z2U: OSC FREQUENCY IN MHZ
|
||||
Z2U0HFC .SET TRUE ; Z2U0: ENABLE HARDWARE FLOW CONTROL
|
||||
|
||||
@@ -30,6 +30,7 @@ CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
|
||||
;
|
||||
RAMSIZE .SET 1536 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
MEMMGR .SET MM_ZRC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
|
||||
;
|
||||
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
|
||||
@@ -29,8 +29,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_NONE ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_MBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
|
||||
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY)
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_N8 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
RAMBIAS .EQU 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
RAMLOC .EQU 0 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
|
||||
@@ -27,13 +27,12 @@ BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMED
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
CPUOSC .EQU 24000000 ; CPU OSC FREQ IN MHZ
|
||||
CPUOSC .EQU 12000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
|
||||
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY)
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
|
||||
@@ -26,8 +26,6 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
;
|
||||
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
|
||||
;
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
|
||||
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY)
|
||||
|
||||
@@ -32,8 +32,7 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
PLT_RAM_R .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
|
||||
PLT_ROM_R .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VEREIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
|
||||
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
|
||||
@@ -87,6 +87,20 @@ MODCNT .SET MODCNT + 1
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#ENDIF
|
||||
;
|
||||
; SOME HARDWARE REQUIRES A SPECIFIC ROMSIZE (NOTABLY ZZRCC) OR THE
|
||||
; RESULTING BUILD IMAGES WILL BE CORRUPT. ROMSIZE_CHK IS SPECIFIED
|
||||
; IN THE CONFIG FILE AND IS VERIFIED AGAINST THE ROMSIZE BEING USED
|
||||
; BY THE BUILD. A ROMSIZE_CHK VALUE OF 0 INDICATES THE VERFICATION
|
||||
; IS DISABLED (WHICH IT USUALLY IS).
|
||||
;
|
||||
#IF (ROMSIZE_CHK != 0) & (ROMSIZE != ROMSIZE_CHK)
|
||||
.ECHO "*** ERROR: ROMSIZE VALUE VERIFICATION FAILURE.\n"
|
||||
.ECHO "THIS CONFIGURATION REQUIRES A ROMSIZE OF " \ .ECHO ROMSIZE_CHK \ .ECHO ".\n"
|
||||
.ECHO "BUILD IS USING A ROMSIZE OF " \ .ECHO ROMSIZE \ .ECHO ".\n"
|
||||
.ECHO "SEE COMMENTS IN HBIOS.ASM.\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#ENDIF
|
||||
;
|
||||
;
|
||||
;
|
||||
#IF (DIAGENABLE)
|
||||
@@ -129,7 +143,7 @@ MODCNT .SET MODCNT + 1
|
||||
#IF (INTMODE == 3)
|
||||
; Z280 MODE 3 INTERRUPT HANDLING (INTA, C/T 0, & UART RCVR ENABLED)
|
||||
#DEFINE HB_DI DI
|
||||
#DEFINE HB_EI .DB $ED,$7F,$0B
|
||||
#DEFINE HB_EI EI $0B
|
||||
#ELSE
|
||||
; Z280 MODE 1/2 INTERRUPT HANDLING
|
||||
#DEFINE HB_DI DI
|
||||
@@ -352,8 +366,7 @@ HBX_INVOKE:
|
||||
LD A,BID_BIOS ; HBIOS BANK
|
||||
LD (HB_CURBNK),A ; SET AS CURRENT BANK
|
||||
;
|
||||
.DB $ED,$71 ; SC
|
||||
.DW HB_DISPATCH ; SC PARAMETER
|
||||
SC HB_DISPATCH
|
||||
;
|
||||
PUSH AF
|
||||
LD A,(HB_INVBNK)
|
||||
@@ -456,11 +469,10 @@ HBX_ROM:
|
||||
JR Z,HBX_ROM ; IF NOT SET, SELECT ROM PAGE
|
||||
;
|
||||
HBX_RAM:
|
||||
RES 7,A ; CLEAR BIT 7 FROM ABOVE
|
||||
AND %00011111 ; AVOID WRAPPING BITS
|
||||
RLCA ; SCALE SELECTOR TO
|
||||
RLCA ; ... GO FROM Z180 4K PAGE SIZE
|
||||
RLCA ; ... TO DESIRED 32K PAGE SIZE
|
||||
AND %11111000
|
||||
OUT0 (Z180_BBR),A ; WRITE TO BANK BASE
|
||||
LD A,N8_DEFACR | 80H ; SELECT RAM BY SETTING BIT 7
|
||||
OUT0 (N8_ACR),A ; ... IN N8 ACR REGISTER
|
||||
@@ -480,9 +492,9 @@ HBX_ROM:
|
||||
JR NC,HBX_BNKSEL1 ; IF NC, WANT ROM PAGE, SKIP AHEAD
|
||||
XOR %00100001 ; SET BIT FOR HI 512K, CLR BIT 0
|
||||
HBX_BNKSEL1:
|
||||
AND %00111111 ; AVOID WRAPPING BITS
|
||||
RLCA ; CONTINUE SHIFTING TO SCALE SELECTOR
|
||||
RLCA ; FOR Z180 4K PAGE -> DESIRED 32K PAGE
|
||||
AND %11111000
|
||||
OUT0 (Z180_BBR),A ; WRITE TO BANK BASE
|
||||
RET ; DONE
|
||||
#ENDIF
|
||||
@@ -491,8 +503,7 @@ HBX_BNKSEL1:
|
||||
PUSH BC ; SAVE BC
|
||||
PUSH HL ; SAVE HL
|
||||
LD B,$00 ; FIRST USER PDR
|
||||
.DB $ED,$71 ; SC
|
||||
.DW Z280_BNKSEL ; SC PARAMETER
|
||||
SC Z280_BNKSEL ; SYSCALL
|
||||
POP HL ; RESTORE HL
|
||||
POP BC ; RESTORE BC
|
||||
RET ; DONE
|
||||
@@ -561,9 +572,11 @@ HBX_MMA .DB 0 ; TEMPORARY STORAGE FOR REG A
|
||||
;
|
||||
HBX_BNKCPY:
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
.DB $ED,$71 ; SC
|
||||
.DW Z280_BNKCPY ; SC PARAMETER
|
||||
SC Z280_BNKCPYX ; SYSCALL TO BNKCPYX
|
||||
RET
|
||||
;
|
||||
IOPRSAV .DW 0 ; TEMP STORAGE FOR IOPR
|
||||
;
|
||||
#ELSE
|
||||
#IF (CPUFAM == CPU_Z280)
|
||||
PUSH HL
|
||||
@@ -652,8 +665,7 @@ HBX_BNKCALL:
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
CP BID_BIOS ; CALLING HBIOS?
|
||||
JR NZ,HBX_BNKCALL3 ; NOPE, DO NORMAL PROCESSING
|
||||
.DB $ED,$71 ; SC
|
||||
.DW HBX_BNKCALL2 ; CALL HERE IN SYSTEM MODE
|
||||
SC HBX_BNKCALL2 ; SYSCALL TO BNKCALL2
|
||||
RET ; THEN RETURN
|
||||
;
|
||||
HBX_BNKCALL2:
|
||||
@@ -1077,13 +1089,18 @@ Z280_BOOTERR .TEXT "\r\n\r\n*** Application mode boot not supported under Z280 n
|
||||
DI ; NO INTERRUPTS
|
||||
IM 1 ; INTERRUPT MODE 1
|
||||
|
||||
;#IF ((PLATFORM=PLT_MBC) | (PLATFORM=PLT_SBC))
|
||||
;#IF ((PLATFORM == PLT_MBC) | (PLATFORM == PLT_SBC))
|
||||
; INITIALIZE RTC LATCH BYTE
|
||||
; FOR SOME PLATFORMS THIS CONTROLS HI/LO SPEED CIRCUIT
|
||||
LD A,(RTCDEFVAL) ; GET DEFAULT VALUE
|
||||
OUT (RTCIO),A ; SET IT
|
||||
;#ENDIF
|
||||
;
|
||||
#IF (PLATFORM == PLT_N8)
|
||||
LD A,N8_DEFACR ; ENSURE N8 ACR
|
||||
OUT0 (N8_ACR),A ; ... REGISTER IS INITIALIZED
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DIAGENABLE)
|
||||
LD A,%00000001
|
||||
OUT (DIAGPORT),A
|
||||
@@ -1123,7 +1140,7 @@ Z280_BOOTERR .TEXT "\r\n\r\n*** Application mode boot not supported under Z280 n
|
||||
LD HL,Z280_BOOTPDRTBL ; START OF PDR VALUES TABLE
|
||||
LD C,Z280_MMUBLKMOV ; PDR BLOCK MOVE PORT
|
||||
LD B,16 ; PROGRAM 16 PDRS
|
||||
.DB $ED,$93 ; OTIRW
|
||||
OTIRW ; OTIRW
|
||||
;
|
||||
; INITIALIZE ALL OF THE USER PAGE DESCRIPTORS WITH BLOCK MOVE
|
||||
LD A,$10 ; FIRST SYSTEM PDR
|
||||
@@ -1131,7 +1148,7 @@ Z280_BOOTERR .TEXT "\r\n\r\n*** Application mode boot not supported under Z280 n
|
||||
LD HL,Z280_BOOTPDRTBL ; START OF PDR VALUES TABLE
|
||||
LD C,Z280_MMUBLKMOV ; PDR BLOCK MOVE PORT
|
||||
LD B,16 ; PROGRAM 16 PDRS
|
||||
.DB $ED,$93 ; OTIRW
|
||||
OTIRW ; OTIRW
|
||||
;
|
||||
; ENABLE MMU (SYSTEM AND USER TRANSLATION)
|
||||
LD C,Z280_MMUMCR ; MMU MASTER CONTROL REGISTER
|
||||
@@ -1375,31 +1392,34 @@ RS_START:
|
||||
PUSH AF ; SAVE IT
|
||||
|
||||
LD C,0 ; RUNNING BANK COUNT
|
||||
LD HL,$7FFF ; BYTE TEST ADDRESS
|
||||
LD IX,RS_ARY ; ORIG BYTE STORAGE ARRAY PTR
|
||||
RS_LOOP1:
|
||||
LD A,C
|
||||
ADD A,$80 ; OFFSET BY START OF RAM BANKS
|
||||
CALL HBX_BNKSEL ; SELECT THE BANK
|
||||
|
||||
LD A,($7FFF) ; GET ORIGINAL VALUE
|
||||
LD A,(HL) ; GET ORIGINAL VALUE
|
||||
LD (IX),A ; SAVE IT TO RESTORE LATER
|
||||
INC IX ; BUMP IX
|
||||
|
||||
LD A,$AA ; TEST LOC WITH $AA
|
||||
LD ($7FFF),A
|
||||
LD A,($7FFF)
|
||||
LD (HL),A ; AVOID PROBLEMS WITH
|
||||
LD (HL),A ; ... DS1210
|
||||
LD (HL),A
|
||||
LD A,(HL)
|
||||
CP $AA
|
||||
JR NZ,RS_DONE
|
||||
|
||||
LD A,$55 ; TEST LOC WITH $55
|
||||
LD ($7FFF),A
|
||||
LD A,($7FFF)
|
||||
LD (HL),A
|
||||
LD A,(HL)
|
||||
CP $55
|
||||
JR NZ,RS_DONE
|
||||
|
||||
; STORE A UNIQUE VALUE
|
||||
LD A,C
|
||||
LD ($7FFF),A
|
||||
LD (HL),A
|
||||
OR A ; ZERO?
|
||||
JR Z,RS_NEXT ; SKIP STORED VALUE CHECK
|
||||
|
||||
@@ -1410,7 +1430,7 @@ RS_LOOP3:
|
||||
LD A,E
|
||||
ADD A,$80
|
||||
CALL HBX_BNKSEL
|
||||
LD A,($7FFF)
|
||||
LD A,(HL)
|
||||
CP E ; VERIFY
|
||||
JR NZ,RS_DONE ; ABORT IF MISCOMPARE
|
||||
INC E ; NEXT BANK
|
||||
@@ -1422,6 +1442,9 @@ RS_NEXT:
|
||||
;
|
||||
RS_DONE:
|
||||
LD E,C ; FINAL BANK COUNT TO E
|
||||
LD A,C
|
||||
OR A
|
||||
JR Z,RS_LOOPZ
|
||||
; RESTORE SAVED VALUES
|
||||
LD IX,RS_ARY
|
||||
LD B,C ; LOOP COUNT
|
||||
@@ -1431,9 +1454,10 @@ RS_LOOP2:
|
||||
CALL HBX_BNKSEL
|
||||
INC C
|
||||
LD A,(IX) ; GET VALUE
|
||||
LD ($7FFF),A ; RESTORE IT
|
||||
LD (HL),A ; RESTORE IT
|
||||
INC IX
|
||||
DJNZ RS_LOOP2 ; ALL BANKS
|
||||
RS_LOOPZ:
|
||||
;
|
||||
; MBC RUNTIME MEMORY SIZE ADJUSTMENT
|
||||
;
|
||||
@@ -1505,6 +1529,17 @@ MBC_SINGLE:
|
||||
#ENDIF
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; IF THIS IS NOT A ROMBOOT, THEN WE NEED TO COPY THE "APP" BANK TO
|
||||
; TPA. IT IS DONE PRIOR TO COPYING HBIOS TO IT'S FINAL BANK BECAUSE
|
||||
; THE SOURCE OF THE APP BANK CODE MAY BE THE BANK THAT HBIOS WANTS TO
|
||||
; USE AS IT'S FINAL LOCATION (PRIMARILY IN CASE OF RAMBOOT WHERE THE
|
||||
; SYSTEM HAS THE MINIMUM 128KB OF RAM).
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
;
|
||||
; IF ALREADY EXECUTING IN RAM, BYPASS RAM BANK INSTALLATION
|
||||
;
|
||||
@@ -1521,7 +1556,11 @@ MBC_SINGLE:
|
||||
LD HL,0
|
||||
LD DE,0
|
||||
LD BC,$8000
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
CALL Z280_BNKCPY
|
||||
#ELSE
|
||||
CALL HBX_BNKCPY
|
||||
#ENDIF
|
||||
;
|
||||
; TRANSITION TO HBIOS IN RAM BANK
|
||||
;
|
||||
@@ -1610,9 +1649,9 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK
|
||||
; ASSUME THAT CB_RAMBANKS IS THE NUMBER OF 32K RAM BANKS THAT HAS BEEN SET EITHER
|
||||
; AT ASSEMBLY TIME OR BY PROBING THE ACTUAL AVAILABLE MEMORY (NOT IMPLEMENTED YET).
|
||||
;
|
||||
LD A,(CB_RAMBANKS) ; CALCULATE START
|
||||
DEC A ; RAMBANK AFTER
|
||||
ADD A,($80 + (PLT_RAM_R / 32)) ; RESERVED BANKS
|
||||
LD A,(CB_RAMBANKS) ; CALCULATE TOP RAMBANK
|
||||
ADD A,BID_RAM0 ; AS FIRST RAMBANK +
|
||||
DEC A ; #RAMBANKS - 1
|
||||
;
|
||||
LD HL,CB_BIDCOM
|
||||
LD B,4
|
||||
@@ -1620,12 +1659,12 @@ CB_IDS: LD (HL),A ; POPULATE CB_BIDCOM
|
||||
INC HL ; POPULATE CB_BIDUSR
|
||||
DEC A ; POPULATE CB_BIDBIOS
|
||||
DJNZ CB_IDS ; POPULATE CB_BIDAUX
|
||||
|
||||
;
|
||||
LD A,(CB_BIDUSR)
|
||||
LD (HB_SRCBNK),A ; POPULATE HB_SRCBNK
|
||||
LD (HB_DSTBNK),A ; POPULATE HB_DSTBNK
|
||||
;
|
||||
LD A,+($80 + (PLT_RAM_R / 32)) ; POPULATE CB_BIDRAMD0 ; START RAMBANK
|
||||
LD A,BID_RAM0 ; POPULATE CB_BIDRAMD0 ; START RAMBANK
|
||||
LD (HL),A
|
||||
INC HL
|
||||
;
|
||||
@@ -2460,7 +2499,13 @@ HB_CKBNK:
|
||||
LD BC,1 ; DECREMENT VALUE
|
||||
XOR A ; ZERO ACCUM
|
||||
HB_CKBNK1:
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
LD D,A ; WORKING VALUE TO D
|
||||
LDUD A,(HL) ; GRAB NEXT BYTE FROM USER SPACE
|
||||
ADD A,D ; ADD NEXT BYTE
|
||||
#ELSE
|
||||
ADD A,(HL) ; ADD NEXT BYTE
|
||||
#ENDIF
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,BC ; DECREMENT
|
||||
JR NC,HB_CKBNK1 ; LOOP TILL DONE
|
||||
@@ -2589,6 +2634,71 @@ HB_WDZ:
|
||||
INITSYS3:
|
||||
CALL PRTSUM ; PRINT UNIT/DEVICE SUMMARY TABLE
|
||||
;
|
||||
#IF 0
|
||||
CALL NEWLINE
|
||||
CALL NEWLINE
|
||||
CALL NEWLINE
|
||||
|
||||
; SRC & DEST BELOW BND
|
||||
CALL NEWLINE
|
||||
LD HL,$4000
|
||||
LD DE,$5000
|
||||
LD BC,$3000
|
||||
CALL NEWLINE
|
||||
CALL REGDMP
|
||||
CALL Z280_BNKCPYX
|
||||
|
||||
; SRC & DEST ABOVE BND
|
||||
CALL NEWLINE
|
||||
LD HL,$8000
|
||||
LD DE,$9000
|
||||
LD BC,$1000
|
||||
CALL NEWLINE
|
||||
CALL REGDMP
|
||||
CALL Z280_BNKCPYX
|
||||
|
||||
; SRC CROSSOVER
|
||||
CALL NEWLINE
|
||||
LD HL,$7000
|
||||
LD DE,$9000
|
||||
LD BC,$2000
|
||||
CALL NEWLINE
|
||||
CALL REGDMP
|
||||
CALL Z280_BNKCPYX
|
||||
|
||||
; DEST CROSSOVER
|
||||
CALL NEWLINE
|
||||
LD HL,$9000
|
||||
LD DE,$7000
|
||||
LD BC,$2000
|
||||
CALL NEWLINE
|
||||
CALL REGDMP
|
||||
CALL Z280_BNKCPYX
|
||||
|
||||
; DOUBLE CROSSOVER
|
||||
CALL NEWLINE
|
||||
LD HL,$7800
|
||||
LD DE,$7000
|
||||
LD BC,$2000
|
||||
CALL NEWLINE
|
||||
CALL REGDMP
|
||||
CALL Z280_BNKCPYX
|
||||
|
||||
; DOUBLE CROSSOVER SINGLE BYTES
|
||||
CALL NEWLINE
|
||||
LD HL,$7FFE
|
||||
LD DE,$7FFF
|
||||
LD BC,$0500
|
||||
CALL NEWLINE
|
||||
CALL REGDMP
|
||||
CALL Z280_BNKCPYX
|
||||
|
||||
CALL NEWLINE
|
||||
CALL NEWLINE
|
||||
CALL NEWLINE
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
INITSYS4:
|
||||
;
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
@@ -4706,7 +4816,7 @@ Z280_BADINT:
|
||||
CALL PRTHEXWORDHL ; DUMP MSR
|
||||
EX (SP),HL ; MSR TO STK, RECOVER HL
|
||||
;
|
||||
.DB $ED,$55 ; RETIL
|
||||
RETIL ; RETURN FROM INT
|
||||
;
|
||||
Z280_SSTEP:
|
||||
; SAVE HL AND MSR FOR POSSIBLE RETURN VIA RETIL
|
||||
@@ -4800,7 +4910,7 @@ Z280_PRIVINST:
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
;
|
||||
.DB $ED,$96 ; LDUP A,(HL)
|
||||
LDUP A,(HL) ; BYTE FROM USER SPACE
|
||||
;
|
||||
; HANDLE DI
|
||||
CP $F3 ; DI?
|
||||
@@ -4828,7 +4938,7 @@ Z280_PRIVINST3:
|
||||
CALL PC_LBKT
|
||||
LD B,$10
|
||||
Z280_PRIVINST4:
|
||||
.DB $ED,$96 ; LDUP A,(HL)
|
||||
LDUP A,(HL) ; BYTE FROM USER SPACE
|
||||
CALL PRTHEXBYTE
|
||||
INC HL
|
||||
DJNZ Z280_PRIVINST4
|
||||
@@ -4849,7 +4959,7 @@ Z280_PRIVINSTX:
|
||||
PUSH HL ; SAVE HL
|
||||
LD HL,(HB_MSRSAV) ; GET SAVED MSR
|
||||
EX (SP),HL ; MSR TO STK, RECOVER HL
|
||||
.DB $ED,$55 ; RETIL
|
||||
RETIL ; RETURN FROM INT
|
||||
;
|
||||
HB_MSRSAV .DW 0 ; SAVED MSR
|
||||
HB_RCSAV .DW 0 ; SAVED REASON CODE
|
||||
@@ -5154,7 +5264,7 @@ Z280_BNKSEL2:
|
||||
;
|
||||
; SET LOW NIBBLE
|
||||
LD A,$0A ; VALUE FOR LOW NIBBLE
|
||||
.DB $ED,$6D ; ADD HL,A ; HL=0000 RBBB B000 1010
|
||||
ADD HL,A ; ADD HL,A ; HL=0000 RBBB B000 1010
|
||||
;
|
||||
; POINT TO FIRST PDR TO PROGRAM
|
||||
LD A,B ; INITIAL PDR TO PROG
|
||||
@@ -5198,8 +5308,115 @@ Z280_BNKSEL_LEN .EQU $ - Z280_BNKSEL
|
||||
;
|
||||
; Z280 BANK COPY (CALLED FROM PROXY)
|
||||
;
|
||||
; USE Z280 PHYSICAL MEMORY DMA COPY TO PERFORM AN INTERBANK COPY.
|
||||
; COPY FROM (HB_SRCBNK):(HL) TO (HB_DSTBNK):(DE) FOR BC BYTES. BOTH
|
||||
; HB_SRCBNK AND HB_DSTBNK MUST BE INITIALIZED PRIOR TO CALLING THIS
|
||||
; ROUTINE.
|
||||
;
|
||||
; ADDRESSES ARE TRANSLATED FROM LOGICAL (Z80) TO PHYSICAL (Z280) TO
|
||||
; SETUP THE DMA COPY PARAMETERS. IF THE SOURCE OR DESTINATION RANGE
|
||||
; CROSSES OVER THE BANKED/COMMON BOUNDARY AT $8000, THEN SPECIAL STEPS
|
||||
; MUST BE TAKEN BECAUSE THE BANKED AND COMMON AEAS ARE PROBABLY NOT
|
||||
; SEQUENTIALLY LOCATED IN PHYSICAL MEMORY. TWO ENTRY POINTS ARE
|
||||
; PROVIDED. Z280_BNKCPY IS MUCH FASTER, BUT DOES NOT ACCOUNT FOR THE
|
||||
; COPY RANGES CROSSING OVER THE BANKED/COMMON BOUNDARY (WORKS GREAT
|
||||
; FOR ANY COPY KNOWN TO STAY WITHIN IT'S OWN AREA). Z280_BNKCPYX
|
||||
; WILL HANDLE COPIES WHERE THE SOURCE AND/OR DESTINATION RANGES
|
||||
; CROSS OVER THE BANKED/COMMON MEMORY BOUNDARY. IT DOES THIS BY
|
||||
; BREAKING UP THE COPY REQUESTS INTO MULTIPLE REQUESTS THAT ALL FIT
|
||||
; WITHIN A SINGLE BANKED/COMMON MEMORY SEGMENT AND CALLING Z280_BNKCPY
|
||||
; ITERATIVELY UNTIL THE COPY IS COMPLETE.
|
||||
;
|
||||
; THERE IS ESSENTIALLY NO PROTECTION FOR CALLING THESE ROUTINES WITH
|
||||
; INVALID PARAMETERS. FOR EXAMPLE, A REQUEST TO COPY $2000 BYTES
|
||||
; STARTING AT $F000 EXCEEDS THE SIZE OF THE Z80 MEMORY SPACES AND
|
||||
; RESULTS IN UNDEFINED BEHAVIOR.
|
||||
;
|
||||
; THE COPY IS ALWAYS DONE FROM START TO END. IF THE SOURCE AND
|
||||
; DESTINATION RANGES OVERLAP, THEN YOU MUST TAKE THIS INTO ACCOUNT.
|
||||
;
|
||||
; THE ROUTINE FUNCTIONS LOGICALLY LIKE THE Z80 LDIR INSTRUCTION. ON
|
||||
; RETURN THE SOURCE (HL) AND DESTINATION (DE) REGISTERS WILL BE LEFT
|
||||
; POINTING TO THE NEXT BYTE THAT WOULD BE COPIED IF THE COPY ROUTINE
|
||||
; CONTINUED. BC WILL BE 0. AF IS UNDEFINED.
|
||||
;
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
;
|
||||
; ADJUST THE LENGTH OF THE COPY SUCH THAT BOTH THE SOURCE AND
|
||||
; DESTINATION RANGES DO NOT CROSS OVER THE BANKED/COMMON MEMORY
|
||||
; BOUNDARY. CALL Z280_BNKCPY TO DO AS MANY ITERATIONS AS NEEDED TO
|
||||
; COMPLETE THE COPY.
|
||||
;
|
||||
;
|
||||
Z280_BNKCPYX:
|
||||
LD (Z280_BNKCPY_LEN),BC ; SAVE LENGTH
|
||||
;
|
||||
CALL Z280_BNKCPY_XOVER ; ADJUST FOR XOVER AS NEEDED
|
||||
EX DE,HL ; SWAP SOURCE/DEST
|
||||
CALL Z280_BNKCPY_XOVER ; ADJUST FOR XOVER AS NEEDED
|
||||
EX DE,HL ; SWAP BACK
|
||||
;
|
||||
; DO THE WORK, SAVE THE LEN OF THIS ITERATION
|
||||
PUSH BC ; SAVE ITER LENGTH
|
||||
CALL Z280_BNKCPY ; DO THE WORK
|
||||
;
|
||||
;;; *DEBUG* SIMULATE CALL TO Z280_BNKCPY
|
||||
;;CALL NEWLINE
|
||||
;;CALL REGDMP ; *DEBUG*
|
||||
;;ADD HL,BC ; INCREMENT SRC ADR BY COUNT
|
||||
;;EX DE,HL ; SWAP
|
||||
;;ADD HL,BC ; INCREMENT DST ADR BY COUNT
|
||||
;;EX DE,HL ; SWAP BACK
|
||||
;;LD BC,0 ; COUNT IS NOW ZERO
|
||||
;;; END *DEBUG*
|
||||
;
|
||||
POP BC ; RECOVER ITER LENGTH
|
||||
;
|
||||
; ACCUNT FOR WORK ACTUALLY PERFORMED
|
||||
PUSH HL ; SAVE SOURCE ADR
|
||||
LD HL,(Z280_BNKCPY_LEN) ; GET PENDING LENGTH
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,BC ; SUBTRACT WHAT WE DID
|
||||
PUSH HL ; MOVE NEW PENDING LEN
|
||||
POP BC ; TO BC
|
||||
POP HL ; RECOVER SOURCE ADR
|
||||
;
|
||||
; SEE IF WE NEED TO ITERATE
|
||||
LD A,B ; IS LENGTH
|
||||
OR C ; ... NOW ZERO?
|
||||
RET Z ; IF SO, ALL DONE
|
||||
JR Z280_BNKCPYX ; ELSE ITERATE UNTIL DONE
|
||||
;
|
||||
Z280_BNKCPY_LEN .DW 0 ; TEMP STORAGE FOR BC
|
||||
;
|
||||
Z280_BNKCPY_XOVER:
|
||||
; DETECT XOVER IN RANGE AND ADJUST COPY LEN IF SO
|
||||
; HL=START, BC=LEN
|
||||
; BC IS REDUCED AS NEEDED TO AVOID XOVER
|
||||
BIT 7,H ; START ABOVE 32K?
|
||||
RET NZ ; YES, NO XOVER
|
||||
PUSH HL ; SAVE START ADR
|
||||
ADD HL,BC ; ADD COPY LEN
|
||||
DEC HL ; CONVERT TO "LAST" BYTE OF RANGE
|
||||
BIT 7,H ; ABOVE 32K?
|
||||
POP HL ; RESTORE HL
|
||||
RET Z ; IF NOT, NO XOVER
|
||||
;
|
||||
; START IS BELOW 32K, END IS OVER 32K, XOVER IN SOURCE!
|
||||
; REDUCE LENGTH TO AVOID IT
|
||||
; COMPUTE (32K - START) FOR NEW LEN
|
||||
PUSH DE ; SAVE DEST (DE)
|
||||
PUSH HL ; SAVE START (HL)
|
||||
LD DE,$8000
|
||||
EX DE,HL ; DE=START, HL=32K
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,DE ; HL = NEW LEN
|
||||
PUSH HL ; MOVE NEW LEN
|
||||
POP BC ; ... TO BC
|
||||
POP HL ; RECOVER START
|
||||
POP DE ; RECOVER DEST
|
||||
RET ; RETURN
|
||||
;
|
||||
Z280_BNKCPY:
|
||||
; Z280 MEMORY TO MEMORY DMA
|
||||
; USE FLOW THROUGH MODE
|
||||
@@ -5222,7 +5439,7 @@ Z280_BNKCPY:
|
||||
; SELECT I/O PAGE $FF
|
||||
LD C,Z280_IOPR ; I/O PAGE REGISTER
|
||||
LDCTL HL,(C) ; GET CURRENT I/O PAGE
|
||||
LD (IOPRVAL),HL ; SAVE IT
|
||||
LD (IOPRSAV),HL ; SAVE IT
|
||||
LD L,$FF ; I/O PAGE $FF
|
||||
LDCTL (C),HL
|
||||
;
|
||||
@@ -5244,13 +5461,13 @@ Z280_BNKCPY:
|
||||
;
|
||||
; WAIT FOR XFER TO COMPLETE
|
||||
Z2DMALOOP:
|
||||
.DB $ED,$B7 ; INW HL,(C)
|
||||
INW HL,(C) ; WORD INPUT
|
||||
BIT 7,H ; CHECK EN BIT OF TDR
|
||||
JR NZ,Z2DMALOOP ; LOOP WHILE ACTIVE
|
||||
;
|
||||
; RESTORE I/O PAGE
|
||||
LD C,Z280_IOPR ; I/O PAGE REGISTER
|
||||
LD HL,(IOPRVAL) ; RESTORE I/O PAGE
|
||||
LD HL,(IOPRSAV) ; RESTORE I/O PAGE
|
||||
LDCTL (C),HL
|
||||
;
|
||||
; SETUP RETURN VALUES
|
||||
@@ -5313,6 +5530,7 @@ Z2DMAADR2:
|
||||
INC C ; BUMP TO NEXT REG
|
||||
;
|
||||
RET
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; Z280 SYSCALL VECTOR ENTRY POINT. TAKES STACK PARAMETER AS A BRANCH
|
||||
@@ -5326,7 +5544,7 @@ Z280_SYSCALL:
|
||||
POP HL
|
||||
Z280_SYSCALL_GO:
|
||||
CALL $FFFF ; PARM SET ABOVE
|
||||
.DB $ED,$55 ; RETIL
|
||||
RETIL ; RETURN FROM INT
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
@@ -6104,7 +6322,7 @@ PS_PRTDC:
|
||||
RET ; DONE
|
||||
;
|
||||
PS_PRTDC1:
|
||||
; PRINT ROM/ROM DISK CAPACITY IN KB
|
||||
; PRINT ROM/RAM DISK CAPACITY IN KB
|
||||
LD B,BF_DIOCAP ; HBIOS FUNC: GET CAPACTIY
|
||||
RST 08 ; DE:HL := BLOCKS
|
||||
JP NZ,PS_PRTNUL ; MEDIA PROBLEM
|
||||
@@ -6749,8 +6967,6 @@ HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER
|
||||
HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG
|
||||
HB_CPUOSC .DW CPUOSC ; ACTUAL CPU HARDWARE OSC FREQ IN KHZ
|
||||
;
|
||||
IOPRVAL .DW 0 ; TEMP STORAGE FOR IOPR
|
||||
;
|
||||
HB_BATCOND .DB 0 ; BATTERY CONDITION (0=LOW, 1=OK)
|
||||
;
|
||||
RTCDEFVAL .DB RTCDEF ; STORAGE FOR RTC DEFAULT VALUE
|
||||
|
||||
@@ -495,17 +495,17 @@ SYSTIM .SET TM_Z280
|
||||
;
|
||||
WBW_ROM_R .EQU 128 ; 128K ; RESERVED ROM REQUIRED FOR ROMWBW
|
||||
WBW_RAM_R .EQU 256 ; 256K ; RESERVED RAM REQUIRED FOR ROMWBW
|
||||
TOT_ROM_RB .EQU (PLT_ROM_R + WBW_ROM_R)/32 ; TOTAL ROM BANKS RESERVED
|
||||
TOT_RAM_RB .EQU (PLT_RAM_R + WBW_RAM_R)/32 ; TOTAL RAM BANKS RESERVED
|
||||
TOT_ROM_RB .EQU (WBW_ROM_R / 32) ; TOTAL ROM BANKS RESERVED
|
||||
TOT_RAM_RB .EQU (WBW_RAM_R / 32) ; TOTAL RAM BANKS RESERVED
|
||||
;
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
BID_ROM0 .EQU $0000 + (PLT_ROM_R / 32)
|
||||
BID_RAM0 .EQU $8000 + (PLT_RAM_R / 32)
|
||||
BID_ROM0 .EQU $0000
|
||||
BID_RAM0 .EQU $8000
|
||||
#ENDIF
|
||||
;
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
BID_ROM0 .EQU $00 + (PLT_ROM_R / 32)
|
||||
BID_RAM0 .EQU $80 + (PLT_RAM_R / 32)
|
||||
BID_ROM0 .EQU $00
|
||||
BID_RAM0 .EQU $80
|
||||
#ENDIF
|
||||
|
||||
BID_ROMN .EQU (BID_ROM0 + ((ROMSIZE / 32) - 1))
|
||||
@@ -513,13 +513,13 @@ BID_RAMN .EQU (BID_RAM0 + ((RAMSIZE / 32) - 1))
|
||||
;
|
||||
BID_RAMD0 .EQU BID_RAM0 ; FIRST RAM DRIVE BANK ^ RAM
|
||||
BID_RAMDN .EQU BID_RAMN - TOT_RAM_RB ; LAST RAM DRIVE BANK | DRIVE
|
||||
; ; OS BUFFERS CP/M3? -+ THESE
|
||||
; ; OS BUFFERS CP/M3? | MAKE
|
||||
; ; OS BUFFERS CP/M3? | UP
|
||||
; ; OS BUFFERS CP/M3? | THE
|
||||
BID_AUX .EQU BID_RAMN - 3 ; AUX BANK (BPBIOS, ETC.) | 256KB
|
||||
; ; OS BUFFERS CP/M3? -+ THESE CPM3 BNK 5 (BUF)
|
||||
; ; OS BUFFERS CP/M3? | MAKE CPM3 BNK 4 (BUF)
|
||||
; ; OS BUFFERS CP/M3? | UP CPM3 BNK 3 (BUF)
|
||||
; ; OS BUFFERS CP/M3? | THE CPM3 BNK 2 (BUF)
|
||||
BID_AUX .EQU BID_RAMN - 3 ; AUX BANK (BPBIOS, ETC.) | 256KB CPM3 BNK 1 (TPA)
|
||||
BID_BIOS .EQU BID_RAMN - 2 ; BIOS BANK | RESERVED
|
||||
BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.) | RAM
|
||||
BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.) | RAM CPM3 BNK 0 (OS)
|
||||
BID_COM .EQU BID_RAMN - 0 ; COMMON BANK, UPPER 32K -+ BANKS
|
||||
BID_BOOT .EQU BID_ROM0 + 0 ; BOOT BANK -+ THESE MAKE
|
||||
BID_IMG0 .EQU BID_ROM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK | UP THE 128KB
|
||||
@@ -528,6 +528,42 @@ BID_IMG2 .EQU BID_ROM0 + 3 ; NETWORK BOOT -+ ROM BANKS
|
||||
BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK | ROM
|
||||
BID_ROMDN .EQU BID_ROMN ; LAST ROM DRIVE BANK V DRIVE
|
||||
;
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
;
|
||||
#IF (!MDRAM)
|
||||
BID_RAMD0 .SET $FF ; RAM DRIVE DISABLED
|
||||
BID_RAMDN .SET $FF ; RAM DRIVE DISABLED
|
||||
#ENDIF
|
||||
;
|
||||
#IF (!MDROM)
|
||||
BID_ROMD0 .SET $FF ; ROM DRIVE DISABLED
|
||||
BID_ROMDN .SET $FF ; ROM DRIVE DISABLED
|
||||
#ENDIF
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IF FALSE
|
||||
.ECHO "BID_AUX: " \ .ECHO BID_AUX \ .ECHO "\n"
|
||||
.ECHO "BID_BIOS: " \ .ECHO BID_BIOS \ .ECHO "\n"
|
||||
.ECHO "BID_USR: " \ .ECHO BID_USR \ .ECHO "\n"
|
||||
.ECHO "BID_COM: " \ .ECHO BID_COM \ .ECHO "\n"
|
||||
|
||||
.ECHO "BID_BOOT: " \ .ECHO BID_BOOT \ .ECHO "\n"
|
||||
.ECHO "BID_IMG0: " \ .ECHO BID_IMG0 \ .ECHO "\n"
|
||||
.ECHO "BID_IMG1: " \ .ECHO BID_IMG1 \ .ECHO "\n"
|
||||
.ECHO "BID_IMG2: " \ .ECHO BID_IMG2 \ .ECHO "\n"
|
||||
|
||||
.ECHO "BID_ROMD0: " \ .ECHO BID_ROMD0 \ .ECHO "\n"
|
||||
.ECHO "BID_ROMDN: " \ .ECHO BID_ROMDN \ .ECHO "\n"
|
||||
.ECHO "BID_RAMD0: " \ .ECHO BID_RAMD0 \ .ECHO "\n"
|
||||
.ECHO "BID_RAMDN: " \ .ECHO BID_RAMDN \ .ECHO "\n"
|
||||
|
||||
.ECHO "BID_ROM0: " \ .ECHO BID_ROM0 \ .ECHO "\n"
|
||||
.ECHO "BID_ROMN: " \ .ECHO BID_ROMN \ .ECHO "\n"
|
||||
.ECHO "BID_RAM0: " \ .ECHO BID_RAM0 \ .ECHO "\n"
|
||||
.ECHO "BID_RAMN: " \ .ECHO BID_RAMN \ .ECHO "\n"
|
||||
#ENDIF
|
||||
;
|
||||
; MEMORY LAYOUT
|
||||
;
|
||||
SYS_SIZ .EQU $3000 ; COMBINED SIZE OF SYSTEM AREA (OS + HBIOS PROXY)
|
||||
|
||||
@@ -8,10 +8,6 @@ set PATH=%TOOLS%\tasm32;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
|
||||
tasm -t180 -g3 -fFF -DAPPBOOT hdiag.asm hdiag.com hdiag_com.lst || exit /b
|
||||
tasm -t180 -g3 -fFF -DROMBOOT hdiag.asm hdiag.rom hdiag_rom.lst || exit /b
|
||||
|
||||
|
||||
@@ -3,13 +3,11 @@ setlocal
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%TOOLS%\srecord;%TOOLS%\cpmtools;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%TOOLS%\srecord;%TOOLS%\cpmtools;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
set RomApps1=assign mode rtc syscopy xm
|
||||
set RomApps2=fdu format survey sysgen talk timer cpuspd
|
||||
|
||||
@@ -3,13 +3,11 @@ setlocal
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zx M80 -=zcpr/l || exit /b
|
||||
zx L80 -zcpr,zcpr.bin/n/e || exit /b
|
||||
zxcc M80 -=zcpr/l || exit /b
|
||||
zxcc L80 -zcpr,zcpr.bin/n/e || exit /b
|
||||
@@ -7,4 +7,4 @@ TOOLS = ../../Tools
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
zcpr.bin: zcpr.rel
|
||||
$(ZXCC) $(TOOLS)/cpm/bin/L80 -zcpr,zcpr.bin/n/e
|
||||
$(ZXCC) L80 -zcpr,zcpr.bin/n/e
|
||||
|
||||
@@ -3,16 +3,14 @@ setlocal
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zx MAC -ZCPR.ASM -$PO || exit /b
|
||||
zx MLOAD25 -ZCPR.BIN=ZCPR.HEX || exit /b
|
||||
zxcc MAC -ZCPR.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -ZCPR.BIN=ZCPR.HEX || exit /b
|
||||
|
||||
zx MAC -BDLOC.ASM -$PO || exit /b
|
||||
zx MLOAD25 -BDLOC.COM=BDLOC.HEX || exit /b
|
||||
zxcc MAC -BDLOC.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -BDLOC.COM=BDLOC.HEX || exit /b
|
||||
|
||||
@@ -7,6 +7,6 @@ TOOLS = ../../Tools
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
zcpr.bin: zcpr.asm
|
||||
$(ZXCC) $(CPM)/MAC -$< -$$PO
|
||||
$(ZXCC) $(CPM)/MLOAD25 -$@=zcpr.hex
|
||||
$(ZXCC) MAC -$< -$$PO
|
||||
$(ZXCC) MLOAD25 -$@=zcpr.hex
|
||||
|
||||
|
||||
@@ -3,13 +3,11 @@ setlocal
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%TOOLS%\cpmtools;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%TOOLS%\cpmtools;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
copy ..\ZCCP\ccp.com zccp.com || exit /b
|
||||
copy ..\ZCCP\zinstal.zpm . || exit /b
|
||||
@@ -28,11 +26,11 @@ echo.
|
||||
echo.
|
||||
echo *** ZPM Loader ***
|
||||
echo.
|
||||
zx LINK -ZPMLDRD[L100]=ZPM3LDR,BIOSLDRD,UTIL || exit /b
|
||||
:: zx SLRNK -ZPM3LDR,BIOSLDRD,UTIL,ZPMLDRD/N/E
|
||||
zxcc LINK -ZPMLDRD[L100]=ZPM3LDR,BIOSLDRD,UTIL || exit /b
|
||||
:: zxcc SLRNK -ZPM3LDR,BIOSLDRD,UTIL,ZPMLDRD/N/E
|
||||
move /Y zpmldrd.com zpmldr.bin || exit /b
|
||||
zx LINK -ZPMLDRC[L100]=ZPM3LDR,BIOSLDRC,UTIL || exit /b
|
||||
:: zx SLRNK -ZPM3LDR,BIOSLDRC,UTIL,ZPMLDRC/N/E
|
||||
zxcc LINK -ZPMLDRC[L100]=ZPM3LDR,BIOSLDRC,UTIL || exit /b
|
||||
:: zxcc SLRNK -ZPM3LDR,BIOSLDRC,UTIL,ZPMLDRC/N/E
|
||||
move /Y zpmldrc.com zpmldr.com || exit /b
|
||||
rem pause
|
||||
|
||||
@@ -42,13 +40,13 @@ echo.
|
||||
echo *** Banked ZPM3 ***
|
||||
echo.
|
||||
copy genbnk.dat gencpm.dat || exit /b
|
||||
zx gencpm -auto -display || exit /b
|
||||
zxcc gencpm -auto -display || exit /b
|
||||
rem pause
|
||||
|
||||
rem ZPM3 Tools
|
||||
zx Z80ASM -clrhist/F || exit /b
|
||||
zx Z80ASM -setz3/F || exit /b
|
||||
zx Z80ASM -autotog/F || exit /b
|
||||
zxcc Z80ASM -clrhist/F || exit /b
|
||||
zxcc Z80ASM -setz3/F || exit /b
|
||||
zxcc Z80ASM -autotog/F || exit /b
|
||||
|
||||
rem Loader
|
||||
|
||||
|
||||
@@ -9,11 +9,11 @@ TOOLS =../../Tools
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
zpmldr.bin: zpm3ldr.rel biosldrd.rel util.rel
|
||||
$(ZXCC) $(CPM)/LINK -ZPMLDRD[L100]=ZPM3LDR,BIOSLDRD,UTIL
|
||||
$(ZXCC) LINK -ZPMLDRD[L100]=ZPM3LDR,BIOSLDRD,UTIL
|
||||
mv zpmldrd.com zpmldr.bin
|
||||
|
||||
zpmldr.com: zpm3ldr.rel biosldrc.rel util.rel
|
||||
$(ZXCC) $(CPM)/LINK -ZPMLDRC[L100]=ZPM3LDR,BIOSLDRC,UTIL
|
||||
$(ZXCC) LINK -ZPMLDRC[L100]=ZPM3LDR,BIOSLDRC,UTIL
|
||||
mv zpmldrc.com zpmldr.com
|
||||
|
||||
zpmldr.sys: zpmldr.bin loader.bin
|
||||
|
||||
@@ -3,16 +3,14 @@ setlocal
|
||||
|
||||
set TOOLS=../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zx ZMAC -ZSDOS -/P || exit /b
|
||||
zx LINK -ZSDOS.BIN=ZSDOS[LD800] || exit /b
|
||||
zxcc ZMAC -ZSDOS -/P || exit /b
|
||||
zxcc LINK -ZSDOS.BIN=ZSDOS[LD800] || exit /b
|
||||
|
||||
tasm -t80 -g3 -fFF loader.asm loader.bin loader.lst || exit /b
|
||||
|
||||
|
||||
@@ -3,12 +3,10 @@ setlocal
|
||||
|
||||
set TOOLS=../../../Tools
|
||||
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
|
||||
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zx ZMAC -WBWCLK -/P || exit /b
|
||||
zxcc ZMAC -WBWCLK -/P || exit /b
|
||||
|
||||
@@ -8,10 +8,10 @@ CCP = ../ZCPR-DJ/zcpr.bin
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
zsdos.rel: zsdos.z80
|
||||
$(ZXCC) $(CPM)/ZMAC -$< -/P
|
||||
$(ZXCC) ZMAC -$< -/P
|
||||
|
||||
zsdos.bin: zsdos.rel
|
||||
$(ZXCC) $(CPM)/LINK -$@=$<[LD800]
|
||||
$(ZXCC) LINK -$@=$<[LD800]
|
||||
|
||||
%.sys: %.bin loader.bin
|
||||
cat loader.bin $*.bin > $@
|
||||
|
||||
@@ -1,19 +1,32 @@
|
||||
ZZRCC has no real ROM. It has a single 512K RAM chip. The first
|
||||
256K of the RAM chip is loaded from the CF card. This 256K is
|
||||
treated like ROM by RomWBW. The remainder of the RAM (256K) is
|
||||
treated like RAM by RomWBW.
|
||||
|
||||
Because of the memory constraints, notice that there is no RAM Disk,
|
||||
only a ROM disk. If you perform a ROM boot to an OS, the A: drive
|
||||
will be the ROM disk and will not be writable. Booting a ROM OS
|
||||
on this system is not typical since the system has a CF card by
|
||||
definition.
|
||||
|
||||
Bank ROM RAM RAM
|
||||
---- --- --- ---
|
||||
0 HBIOS (IMG) RAMDISK RAMDISK
|
||||
1 ROMLDR+MON+CP/M2+ZSYS RAMDISK RAMDISK
|
||||
2 FTH+BAS+TBAS+PLAY+USR RAMDISK RAMDISK
|
||||
3 RESERVED RAMDISK RAMDISK
|
||||
4 ROMDISK RAMDISK RAMDISK
|
||||
5 ROMDISK RAMDISK RAMDISK
|
||||
6 ROMDISK RAMDISK RAMDISK
|
||||
7 ROMDISK RAMDISK RAMDISK
|
||||
0 HBIOS (IMG)
|
||||
1 ROMLDR+MON+CP/M2+ZSYS
|
||||
2 FTH+BAS+TBAS+PLAY+USR
|
||||
3 RESERVED
|
||||
4 ROMDISK
|
||||
5 ROMDISK
|
||||
6 ROMDISK
|
||||
7 ROMDISK
|
||||
|
||||
8 ROMDISK BUF (CPM3) BUF (CPM3)
|
||||
9 ROMDISK BUF (CPM3) BUF (CPM3)
|
||||
A ROMDISK BUF (CPM3) BUF (CPM3)
|
||||
B ROMDISK BUF (CPM3) BUF (CPM3)
|
||||
C ROMDISK AUX (CPM3) TPA (CPM3)
|
||||
D ROMDISK HBIOS (EXEC) HBIOS (EXEC)
|
||||
E ROMDISK TPA-LO OS (CPM3)
|
||||
F ROMDISK COMMON (TPA-HI) COMMON (TPA-HI)
|
||||
8 BUF (CPM3) BUF (CPM3)
|
||||
9 BUF (CPM3) BUF (CPM3)
|
||||
A BUF (CPM3) BUF (CPM3)
|
||||
B BUF (CPM3) BUF (CPM3)
|
||||
C AUX (CPM3) TPA (CPM3)
|
||||
D HBIOS (EXEC) HBIOS (EXEC)
|
||||
E TPA-LO OS (CPM3)
|
||||
F COMMON (TPA-HI) COMMON (TPA-HI)
|
||||
|
||||
--WBW 6:40 PM 2/16/2022
|
||||
@@ -1,7 +1,27 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if not exist ..\..\Binary\RCZ280_nat_zzr.rom goto :eof
|
||||
set ROMFILE=..\..\Binary\RCZ280_nat_zzr.rom
|
||||
set ROMSIZE=262144
|
||||
|
||||
if not exist %ROMFILE% goto :eof
|
||||
|
||||
::
|
||||
:: The ROM image *must* be exactly 256K or the resulting disk
|
||||
:: image produced below will be invalid. Check for the proper size.
|
||||
::
|
||||
|
||||
call :filesize %ROMFILE%
|
||||
|
||||
if "%FILESIZE%" neq "%ROMSIZE%" (
|
||||
echo.
|
||||
echo.
|
||||
echo ERROR: "%ROMFILE%" is not exactly %ROMSIZE% bytes as required!!!
|
||||
echo You must specify a ROMSIZE of "256" when building the ZZRCC ROM image.
|
||||
echo.
|
||||
echo.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
rem ..\..\Tools\srecord\srec_cat.exe ..\..\Binary\RCZ280_nat_zzr.rom -Binary -Exclude 0x5000 0x7000 zzr_romldr.hex -Intel -Output ..\..\Binary\RCZ280_nat_zzr.hex -Intel || exit /b
|
||||
|
||||
@@ -13,4 +33,10 @@ rem copy /b zzr_cfldr.bin + zzr_ptbl.bin + zzr_fill_1.bin + zzr_mon.bin + zzr_fi
|
||||
|
||||
copy /b zzr_cfldr.bin + zzr_ptbl.bin + zzr_fill_1.bin + zzr_mon.bin + zzr_fill_2.bin + ..\..\Binary\RCZ280_nat_zzr.rom + zzr_fill_3.bin ..\..\Binary\hd1024_zzr_prefix.dat || exit /b
|
||||
|
||||
copy /b ..\..\Binary\hd1024_zzr_prefix.dat + ..\..\Binary\hd1024_cpm22.img + ..\..\Binary\hd1024_zsdos.img + ..\..\Binary\hd1024_nzcom.img + ..\..\Binary\hd1024_cpm3.img + ..\..\Binary\hd1024_zpm3.img + ..\..\Binary\hd1024_ws4.img ..\..\Binary\hd1024_zzr_combo.img || exit /b
|
||||
copy /b ..\..\Binary\hd1024_zzr_prefix.dat + ..\..\Binary\hd1024_cpm22.img + ..\..\Binary\hd1024_zsdos.img + ..\..\Binary\hd1024_nzcom.img + ..\..\Binary\hd1024_cpm3.img + ..\..\Binary\hd1024_zpm3.img + ..\..\Binary\hd1024_ws4.img ..\..\Binary\hd1024_zzr_combo.img || exit /b
|
||||
|
||||
goto :eof
|
||||
|
||||
:filesize
|
||||
set FILESIZE=%~z1
|
||||
goto :eof
|
||||
@@ -1,17 +1,15 @@
|
||||
HD1024ZZRPREFIX = hd1024_zzr_prefix.dat
|
||||
HD1024ZZZROMBOIMG = hd1024_zzr_combo.img
|
||||
ZZRROM = ../../Binary/RCZ280_nat_zzr.rom
|
||||
ZZRLDRROM = RCZ280_nat_zzr_ldr.rom
|
||||
ZZRROMHEX = RCZ280_nat_zzr.hex
|
||||
HD1024IMGS = ../../Binary/hd1024_cpm22.img ../../Binary/hd1024_zsdos.img ../../Binary/hd1024_nzcom.img \
|
||||
../../Binary/hd1024_cpm3.img ../../Binary/hd1024_zpm3.img ../../Binary/hd1024_ws4.img
|
||||
|
||||
ZZRROMSIZE = 262144
|
||||
|
||||
OBJECTS :=
|
||||
|
||||
ifneq ($(wildcard $(ZZRROM)),)
|
||||
# OBJECTS += $(ZZRROMHEX) $(ZZRLDRROM) $(HD1024ZZRPREFIX) $(HD1024ZZZROMBOIMG)
|
||||
OBJECTS += $(ZZRROMHEX) $(HD1024ZZRPREFIX) $(HD1024ZZZROMBOIMG)
|
||||
OBJECTS += $(ZZRROMHEX) $(HD1024ZZRPREFIX) $(HD1024ZZZROMBOIMG)
|
||||
endif
|
||||
|
||||
DEST=../../Binary
|
||||
@@ -22,16 +20,14 @@ include $(TOOLS)/Makefile.inc
|
||||
|
||||
DIFFPATH = $(DIFFTO)/Binary
|
||||
|
||||
$(HD1024ZZRPREFIX):
|
||||
# cat zzr_cfldr.bin zzr_ptbl.bin zzr_fill_1.bin zzr_mon.bin zzr_fill_2.bin $(ZZRLDRROM) zzr_fill_3.bin >$@
|
||||
zzrromchk:
|
||||
[ `wc -c $(ZZRROM) | awk '{print $$1}'` = $(ZZRROMSIZE) ]
|
||||
|
||||
$(HD1024ZZRPREFIX): zzrromchk
|
||||
cat zzr_cfldr.bin zzr_ptbl.bin zzr_fill_1.bin zzr_mon.bin zzr_fill_2.bin $(ZZRROM) zzr_fill_3.bin >$@
|
||||
|
||||
$(HD1024ZZZROMBOIMG): $(HD1024ZZRPREFIX) $(HD1024IMGS)
|
||||
cat $^ > $@
|
||||
$(HD1024ZZZROMBOIMG): zzrromchk $(HD1024ZZRPREFIX) $(HD1024IMGS)
|
||||
cat $(HD1024ZZRPREFIX) $(HD1024IMGS) > $@
|
||||
|
||||
$(ZZRROMHEX): $(ZZRROM)
|
||||
# srec_cat $(ZZRROM) -Binary -Exclude 0x5000 0x7000 zzr_romldr.hex -Intel -Output $(ZZRROMHEX) -Intel
|
||||
$(ZZRROMHEX): zzrromchk $(ZZRROM)
|
||||
srec_cat $(ZZRROM) -Binary -Output $(ZZRROMHEX) -Intel -CRLF
|
||||
|
||||
$(ZZRLDRROM): $(ZZRROMHEX)
|
||||
srec_cat $(ZZRROMHEX) -Intel -Output $(ZZRLDRROM) -Binary
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1.1-pre.154"
|
||||
#DEFINE BIOSVER "3.1.1-pre.159"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 1
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1.1-pre.154"
|
||||
db "3.1.1-pre.159"
|
||||
endm
|
||||
|
||||
@@ -37,7 +37,8 @@ CASEFN = $(TOOLS)/unix/casefn.sh
|
||||
#
|
||||
# compiler/assembler locations and flags
|
||||
#
|
||||
ZXCC=$(BINDIR)/zx
|
||||
ZXCC=$(BINDIR)/zxcc
|
||||
export CPMDIR80=$(TOOLS)/cpm/
|
||||
TASM=$(BINDIR)/uz80as -t z80
|
||||
TASMFLAGS=
|
||||
OPENSPIN=$(BINDIR)/openspin
|
||||
@@ -48,7 +49,7 @@ CPMCHATTR=$(BINDIR)/cpmchattr
|
||||
#
|
||||
# directory containing cpm binaries
|
||||
#
|
||||
CPM=$(TOOLS)/cpm/bin
|
||||
CPM=$(TOOLS)/cpm/bin80/
|
||||
|
||||
#
|
||||
# .ONESHELL uses a single shell instance for all shell scripts.
|
||||
@@ -111,6 +112,9 @@ CPM=$(TOOLS)/cpm/bin
|
||||
%.rel: %.mac
|
||||
$(ZXCC) $(CPM)/M80 -=$(basename $<)
|
||||
|
||||
%.com: %.rel
|
||||
$(ZXCC) $(CPM)/L80 -$(basename $<),$(basename $<).com/n/e
|
||||
|
||||
ifeq ($(UNAME), Linux)
|
||||
%.eeprom: %.spin
|
||||
$(BSTC) -e -l $<
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user