mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
22 Commits
v3.1.1-pre
...
v3.1.1-pre
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44b17ccc3a | ||
|
|
b2e1294452 | ||
|
|
5805f13a62 | ||
|
|
d39f0201f4 | ||
|
|
94cf9a209e | ||
|
|
691842c1bc | ||
|
|
eb255e7016 | ||
|
|
fe19472a2c | ||
|
|
526a1a5d33 | ||
|
|
719c993a60 | ||
|
|
70697a762c | ||
|
|
c1412ee755 | ||
|
|
e974a4a960 | ||
|
|
0549cdcb36 | ||
|
|
c046f0365c | ||
|
|
4af5d457eb | ||
|
|
291017f1a9 | ||
|
|
59c523c575 | ||
|
|
4d3640caaa | ||
|
|
d02fe9d8df | ||
|
|
bc04d5ecb9 | ||
|
|
5439a12fe8 |
@@ -244,7 +244,7 @@ initcpm3:
|
||||
; 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
|
||||
; explicitly blocks use of SELMEM, so we are forced to use
|
||||
; HBIOS call. The CP/M 3 system bank is always the HBIOS
|
||||
; user bank.
|
||||
;
|
||||
|
||||
@@ -1399,7 +1399,7 @@ If the driver is able to generate the requested note, a success (0) is
|
||||
returned, otherwise a non-zero error state will be returned.
|
||||
|
||||
The sound chip resolution and its oscillator limit the range and
|
||||
accuracy of the notes played. The typically range of the AY-3-8910
|
||||
accuracy of the notes played. The typical range of the AY-3-8910
|
||||
is six octaves, Bb2/A#2-A7, where each value is a unique tone. Values
|
||||
above and below can still be played but each quarter tone step may not
|
||||
result in a note change.
|
||||
@@ -1409,18 +1409,18 @@ to the corresponding octave and note.
|
||||
|
||||
| Note | Oct 0 | Oct 1 | Oct 2 | Oct 3 | Oct 4 | Oct 5 | Oct 6 | Oct 7 |
|
||||
|:----- | -----:| -----:| -----:| -----:| -----:| -----:| -----:| -----:|
|
||||
| Bb/A# | 0 | 48 | 96 | 144 | 192 | 240 | 288 | 336 |
|
||||
| C | X | 8 | 56 | 104 | 152 | 200 | 248 | 296 |
|
||||
| C#/Db | X | 12 | 60 | 108 | 156 | 204 | 252 | 300 |
|
||||
| D | X | 16 | 64 | 112 | 160 | 208 | 256 | 304 |
|
||||
| D#/Eb | X | 20 | 68 | 116 | 164 | 212 | 260 | 308 |
|
||||
| E | X | 24 | 72 | 120 | 168 | 216 | 264 | 312 |
|
||||
| F | X | 28 | 76 | 124 | 172 | 220 | 268 | 316 |
|
||||
| F#/Gb | X | 32 | 80 | 128 | 176 | 224 | 272 | 320 |
|
||||
| G | X | 36 | 84 | 132 | 180 | 228 | 276 | 324 |
|
||||
| G#/Ab | X | 40 | 88 | 136 | 184 | 232 | 280 | 328 |
|
||||
| A | X | 44 | 92 | 140 | 188 | 236 | 284 | 332 |
|
||||
| A#/Bb | 0 | 48 | 96 | 144 | 192 | 240 | 288 | 336 |
|
||||
| B | 4 | 52 | 100 | 148 | 196 | 244 | 292 | 340 |
|
||||
| C | 8 | 56 | 104 | 152 | 200 | 248 | 296 | 344 |
|
||||
| C#/Db | 12 | 60 | 108 | 156 | 204 | 252 | 300 | 348 |
|
||||
| D | 16 | 64 | 112 | 160 | 208 | 256 | 304 | 352 |
|
||||
| Eb/D# | 20 | 68 | 116 | 164 | 212 | 260 | 308 | 356 |
|
||||
| E | 24 | 72 | 120 | 168 | 216 | 264 | 312 | 360 |
|
||||
| F | 28 | 76 | 124 | 172 | 220 | 268 | 316 | 364 |
|
||||
| F#/Gb | 32 | 80 | 128 | 176 | 224 | 272 | 320 | 368 |
|
||||
| G | 36 | 84 | 132 | 180 | 228 | 276 | 324 | 372 |
|
||||
| Ab/G# | 40 | 88 | 136 | 184 | 232 | 280 | 328 | 376 |
|
||||
| A | 44 | 92 | 140 | 188 | 236 | 284 | 332 | 380 |
|
||||
|
||||
### Function 0x54 -- Sound Play (SNDPLAY)
|
||||
|
||||
|
||||
@@ -327,7 +327,8 @@ AY_NOTE:
|
||||
LD H, (HL) ; SO WE CAN UPDATE IT FOR THE REQUIRED OCTAVE
|
||||
LD L, A
|
||||
;
|
||||
LD A,AY_SCALE-1 ; THE NOTE TABLE PERIOD DATA HAS BEEN
|
||||
;LD A,AY_SCALE - 1 ; THE NOTE TABLE PERIOD DATA HAS BEEN
|
||||
LD A,AY_SCALE ; THE NOTE TABLE PERIOD DATA HAS BEEN
|
||||
ADD A,C ; PRESCALED TO MAINTAIN RANGE SO ALLOW
|
||||
LD B,A ; FOR THIS WHEN CHANGING OCTAVE
|
||||
AY_NOTE1:
|
||||
@@ -534,7 +535,7 @@ AY_EI:
|
||||
AY_WRTPSG:
|
||||
CALL AY_DI
|
||||
#IFDEF SBCV2004
|
||||
LD A,(RTCVAL) ; GET CURRENT RTC LATCH VALUE
|
||||
LD A,(HB_RTCVAL) ; GET CURRENT RTC LATCH VALUE
|
||||
OR %00001000 ; SBC-V2-004 CHANGE
|
||||
OUT (RTCIO),A ; TO HALF CLOCK SPEED
|
||||
#ENDIF
|
||||
@@ -553,7 +554,7 @@ AY_WRTPSG:
|
||||
OUT0 (Z180_DCNTL),A ; AND RESTORE IT
|
||||
#ENDIF
|
||||
#IFDEF SBCV2004
|
||||
LD A,(RTCVAL) ; SBC-V2-004 CHANGE TO
|
||||
LD A,(HB_RTCVAL) ; SBC-V2-004 CHANGE TO
|
||||
OUT (RTCIO),A ; NORMAL CLOCK SPEED
|
||||
#ENDIF
|
||||
JP AY_EI
|
||||
@@ -565,7 +566,7 @@ AY_WRTPSG:
|
||||
AY_RDPSG:
|
||||
CALL AY_DI
|
||||
#IFDEF SBCV2004
|
||||
LD A,(RTCVAL) ; GET CURRENT RTC LATCH VALUE
|
||||
LD A,(HB_RTCVAL) ; GET CURRENT RTC LATCH VALUE
|
||||
OR %00001000 ; SBC-V2-004 CHANGE
|
||||
OUT (RTCIO),A ; TO HALF CLOCK SPEED
|
||||
#ENDIF
|
||||
@@ -584,7 +585,7 @@ AY_RDPSG:
|
||||
OUT0 (Z180_DCNTL),A ; AND RESTORE IT
|
||||
#ENDIF
|
||||
#IFDEF SBCV2004
|
||||
LD A,(RTCVAL) ; SBC-V2-004 CHANGE TO
|
||||
LD A,(HB_RTCVAL) ; SBC-V2-004 CHANGE TO
|
||||
OUT (RTCIO),A ; NORMAL CLOCK SPEED
|
||||
#ENDIF
|
||||
JP AY_EI
|
||||
@@ -617,51 +618,51 @@ AYT_REGWR .DB "\r\nOUT AY-3-8910 $"
|
||||
; ASSUMING A CLOCK OF 1843200 THIS MAPS TO A0#
|
||||
;
|
||||
AY3NOTETBL:
|
||||
.DW AY_RATIO / 2913
|
||||
.DW AY_RATIO / 2956
|
||||
.DW AY_RATIO / 2999
|
||||
.DW AY_RATIO / 3042
|
||||
.DW AY_RATIO / 3086
|
||||
.DW AY_RATIO / 3131
|
||||
.DW AY_RATIO / 3177
|
||||
.DW AY_RATIO / 3223
|
||||
.DW AY_RATIO / 3270
|
||||
.DW AY_RATIO / 3318
|
||||
.DW AY_RATIO / 3366
|
||||
.DW AY_RATIO / 3415
|
||||
.DW AY_RATIO / 3464
|
||||
.DW AY_RATIO / 3515
|
||||
.DW AY_RATIO / 3566
|
||||
.DW AY_RATIO / 3618
|
||||
.DW AY_RATIO / 3670
|
||||
.DW AY_RATIO / 3724
|
||||
.DW AY_RATIO / 3778
|
||||
.DW AY_RATIO / 3833
|
||||
.DW AY_RATIO / 3889
|
||||
.DW AY_RATIO / 3945
|
||||
.DW AY_RATIO / 4003
|
||||
.DW AY_RATIO / 4061
|
||||
.DW AY_RATIO / 4120
|
||||
.DW AY_RATIO / 4180
|
||||
.DW AY_RATIO / 4241
|
||||
.DW AY_RATIO / 4302
|
||||
.DW AY_RATIO / 4365
|
||||
.DW AY_RATIO / 4428
|
||||
.DW AY_RATIO / 4493
|
||||
.DW AY_RATIO / 4558
|
||||
.DW AY_RATIO / 4624
|
||||
.DW AY_RATIO / 4692
|
||||
.DW AY_RATIO / 4760
|
||||
.DW AY_RATIO / 4829
|
||||
.DW AY_RATIO / 4899
|
||||
.DW AY_RATIO / 4971
|
||||
.DW AY_RATIO / 5043
|
||||
.DW AY_RATIO / 5116
|
||||
.DW AY_RATIO / 5191
|
||||
.DW AY_RATIO / 5266
|
||||
.DW AY_RATIO / 5343
|
||||
.DW AY_RATIO / 5421
|
||||
.DW AY_RATIO / 5499
|
||||
.DW AY_RATIO / 5579
|
||||
.DW AY_RATIO / 5661
|
||||
.DW AY_RATIO / 5743
|
||||
.DW AY_RATIO / 2913 ; A0#/B0b 178977250 / 2913 = 61440; PROOF: 61440 >> 3 = 7680, 3579545 / 7680 / 16 = 29.13
|
||||
.DW AY_RATIO / 2956 ;
|
||||
.DW AY_RATIO / 2999 ;
|
||||
.DW AY_RATIO / 3042 ;
|
||||
.DW AY_RATIO / 3086 ; B0
|
||||
.DW AY_RATIO / 3131 ;
|
||||
.DW AY_RATIO / 3177 ;
|
||||
.DW AY_RATIO / 3223 ;
|
||||
.DW AY_RATIO / 3270 ; C1
|
||||
.DW AY_RATIO / 3318 ;
|
||||
.DW AY_RATIO / 3366 ;
|
||||
.DW AY_RATIO / 3415 ;
|
||||
.DW AY_RATIO / 3464 ; C1#/D1b
|
||||
.DW AY_RATIO / 3515 ;
|
||||
.DW AY_RATIO / 3566 ;
|
||||
.DW AY_RATIO / 3618 ;
|
||||
.DW AY_RATIO / 3670 ; D1
|
||||
.DW AY_RATIO / 3724 ;
|
||||
.DW AY_RATIO / 3778 ;
|
||||
.DW AY_RATIO / 3833 ;
|
||||
.DW AY_RATIO / 3889 ; D1#/E1b
|
||||
.DW AY_RATIO / 3945 ;
|
||||
.DW AY_RATIO / 4003 ;
|
||||
.DW AY_RATIO / 4061 ;
|
||||
.DW AY_RATIO / 4120 ; E1
|
||||
.DW AY_RATIO / 4180 ;
|
||||
.DW AY_RATIO / 4241 ;
|
||||
.DW AY_RATIO / 4302 ;
|
||||
.DW AY_RATIO / 4365 ; F1
|
||||
.DW AY_RATIO / 4428 ;
|
||||
.DW AY_RATIO / 4493 ;
|
||||
.DW AY_RATIO / 4558 ;
|
||||
.DW AY_RATIO / 4624 ; F1#/G1b
|
||||
.DW AY_RATIO / 4692 ;
|
||||
.DW AY_RATIO / 4760 ;
|
||||
.DW AY_RATIO / 4829 ;
|
||||
.DW AY_RATIO / 4899 ; G1
|
||||
.DW AY_RATIO / 4971 ;
|
||||
.DW AY_RATIO / 5043 ;
|
||||
.DW AY_RATIO / 5116 ;
|
||||
.DW AY_RATIO / 5191 ; G1#/A1b
|
||||
.DW AY_RATIO / 5266 ;
|
||||
.DW AY_RATIO / 5343 ;
|
||||
.DW AY_RATIO / 5421 ;
|
||||
.DW AY_RATIO / 5499 ; A1
|
||||
.DW AY_RATIO / 5579 ;
|
||||
.DW AY_RATIO / 5661 ;
|
||||
.DW AY_RATIO / 5743 ;
|
||||
|
||||
@@ -183,7 +183,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -224,7 +224,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -300,10 +300,10 @@ PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
CENCNT .EQU 1 ; CEN: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
CEN0BASE .EQU $E8 ; CEN 0: REGISTERS BASE ADR
|
||||
CEN1BASE .EQU $EC ; CEN 1: REGISTERS BASE ADR
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPT0BASE .EQU $E8 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .EQU $EC ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -224,10 +224,10 @@ PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU TRUE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
CENCNT .EQU 1 ; CEN: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
CEN0BASE .EQU $E8 ; CEN 0: REGISTERS BASE ADR
|
||||
CEN1BASE .EQU $EC ; CEN 1: REGISTERS BASE ADR
|
||||
LPTENABLE .EQU TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPT0BASE .EQU $E8 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .EQU $EC ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -226,7 +226,7 @@ PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -224,7 +224,7 @@ PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -240,7 +240,7 @@ PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -255,7 +255,7 @@ PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -244,7 +244,7 @@ PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -224,7 +224,7 @@ PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -224,7 +224,7 @@ PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -230,13 +230,13 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
|
||||
@@ -164,11 +164,8 @@ PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -176,7 +176,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -38,6 +38,8 @@ ENA_XM .EQU FALSE ; NO ROOM FOR BOTH DSKY+XMODEM
|
||||
ENA_XM .EQU TRUE ; INCLUDE XMODEM IF SPACE AVAILABLE
|
||||
#ENDIF
|
||||
;
|
||||
ENA_MBC6502 .EQU FALSE ; ENABLE OR DISABLE MBC6502 OPTION
|
||||
;
|
||||
#INCLUDE "util.asm"
|
||||
;
|
||||
;__UART_ENTRY_________________________________________________________________
|
||||
@@ -69,6 +71,8 @@ UART_ENTRY:
|
||||
; R XXXX - RUN A PROGRAM AT ADDRESS XXXX
|
||||
; S XX - SET ACTIVE BANK TO XX
|
||||
; T XXXX - X-MODEM TRANSFER TO MEMORY LOCATION XXXX
|
||||
; U - SET BANK TO PREVIOUS BANK
|
||||
; 6 XX - TRANSFER CONTROL TO MBC6502 UNIT XX
|
||||
; X - EXIT MONITOR
|
||||
;
|
||||
;__COMMAND_PARSE______________________________________________________________
|
||||
@@ -126,6 +130,12 @@ SERIALCMDLOOP:
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
CP 'S' ; IS IT A "S" (Y/N)
|
||||
JP Z,SETBNK ; SET BANK COMMAND
|
||||
CP 'U' ; IS IT A "U" (Y/N)
|
||||
JP Z,UNSETBNK ; UNSET (REVERT) BANK COMMAND
|
||||
#IF ((PLATFORM = PLT_MBC) & ENA_MBC6502)
|
||||
CP '6' ; IS IT A "6" (Y/N)
|
||||
JP Z,MBC6502 ; TRANSFER TO MBC6502 COMMAND
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
CP 'X' ; IS IT A "X" (Y/N)
|
||||
JP Z,EXIT ; EXIT COMMAND
|
||||
@@ -218,6 +228,8 @@ SETBNK:
|
||||
LD HL,TXT_IMERR
|
||||
CALL PRTSTR
|
||||
#ELSE
|
||||
LD A,($FFE0) ; GET AND SAVE
|
||||
LD (BNKSAV),A ; CURRENT BANK
|
||||
CALL BYTEPARM ; GET BANK NUMBER
|
||||
JP C,ERR ; HANDLE DATA ENTRY ERROR
|
||||
LD C,A ; PUT IN C FOR FOR FUNC CALL
|
||||
@@ -226,6 +238,25 @@ SETBNK:
|
||||
#ENDIF
|
||||
JP SERIALCMDLOOP ; NEXT COMMAND
|
||||
;
|
||||
;__UNSETBNK___________________________________________________________________
|
||||
;
|
||||
; PERFORM UNSET BANK ACTION - REVERT TO BANK BEFORE PREVIOUS SET
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
UNSETBNK:
|
||||
#IF (INTMODE == 1)
|
||||
LD HL,TXT_IMERR
|
||||
CALL PRTSTR
|
||||
#ELSE
|
||||
LD A,(BNKSAV)
|
||||
LD C,A ; PUT IN C FOR FOR FUNC CALL
|
||||
LD B,BF_SYSSETBNK ; SET BANK FUNCTION
|
||||
CALL $FFF0 ; C HAS BANK, DO IT
|
||||
#ENDIF
|
||||
JP SERIALCMDLOOP ; NEXT COMMAND
|
||||
;
|
||||
BNKSAV .DB 00H ; OLD BANK FROM BEFORE SET
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
;__RUN________________________________________________________________________
|
||||
@@ -358,7 +389,8 @@ XMLOAD: CALL WORDPARM ; GET STARTING LOCATION
|
||||
CALL NEWLINE
|
||||
;
|
||||
LD BC,$F8F0 ; GET CPU SPEED
|
||||
RST 08 ; AND MULTIPLY
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
; RST 08 ; AND MULTIPLY
|
||||
LD A,L ; BY 4
|
||||
PUSH AF
|
||||
ADD A,A ; TO CREATE
|
||||
@@ -769,6 +801,30 @@ HELP:
|
||||
CALL PRTSTR ; DISPLAY IT
|
||||
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP
|
||||
;
|
||||
;__MBC6502____________________________________________________________________
|
||||
;
|
||||
; TRANSFER CONTROL TO MBC6502
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
;
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
#IF ((PLATFORM = PLT_MBC) & ENA_MBC6502)
|
||||
MBC6502:
|
||||
CALL BYTEPARM ; GET BYTE VALUE (FILL VALUE) INTO A
|
||||
CPL ; UNIT 0 = FFH, 1 = FEH ETC
|
||||
LD C,A
|
||||
;
|
||||
IN A,(C) ; EXECUTE
|
||||
NOP ; TRANSFER
|
||||
;
|
||||
LD A,($FFE0) ; GET PREVIOUS BANK
|
||||
OUT (MPCL_RAM),A ; SET RAM PAGE SELECTOR
|
||||
OUT (MPCL_ROM),A ; SET ROM PAGE SELECTOR
|
||||
;
|
||||
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
;__ERR________________________________________________________________________
|
||||
;
|
||||
; SYNTAX ERROR
|
||||
@@ -1205,9 +1261,17 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):"
|
||||
.TEXT "\r\nP xxxx - Program RAM at address xxxx"
|
||||
.TEXT "\r\nR xxxx [[yy] [zzzz]] - Run code at address xxxx"
|
||||
.TEXT "\r\n Pass yy and zzzz to register A and BC"
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
.TEXT "\r\nS xx - Set bank to xx"
|
||||
.TEXT "\r\nU - Set bank to previous bank"
|
||||
#ENDIF
|
||||
#IF (ENA_XM)
|
||||
.TEXT "\r\nT xxxx - X-modem transfer to memory location xxxx"
|
||||
#ENDIF
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
#IF ((PLATFORM == PLT_MBC) & ENA_MBC6502)
|
||||
.TEXT "\r\n6 xx - Transfer control to MBC6502 unit xx"
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
.TEXT "\r\nX - Exit monitor"
|
||||
.TEXT "$"
|
||||
|
||||
@@ -2299,6 +2299,18 @@ NXTMIO: LD A,(HL)
|
||||
CALL PRTSTRD
|
||||
.TEXT "HBIOS MUTEX ENABLED$"
|
||||
#ENDIF
|
||||
;
|
||||
; DISPLAY RECOVERY MODE MESSAGE
|
||||
;
|
||||
#IF (BT_REC_TYPE != BT_REC_NONE)
|
||||
LD A,(HB_BOOT_REC) ; IF WE ARE IN RECOVERY MODE
|
||||
OR A ; DISPLAY RECOVERY MODE MESSAGE
|
||||
JR Z,NOT_REC_M2
|
||||
CALL NEWLINE
|
||||
CALL PRTSTRD
|
||||
.TEXT "RECOVERY MODE$"
|
||||
#ENDIF
|
||||
NOT_REC_M2:
|
||||
;
|
||||
DIAG(%11111111)
|
||||
;
|
||||
@@ -2814,6 +2826,45 @@ INITSYS4:
|
||||
LDCTL (C),HL
|
||||
#ENDIF
|
||||
;
|
||||
#IFDEF TESTING
|
||||
;
|
||||
; ROUTINE TO BEEP THE DEAULT SOUND UNIT (NOT FINISHED)
|
||||
; NEED TO CHECK FOR EXISTENCE OF SOUND UNIT 0
|
||||
; NEED TO TEST AGAINST ALL SOUND DRIVERS
|
||||
; CAN SPEAKER DRIVER BE MODIFIED TO PLAY ARBITRARY DURATION?
|
||||
; WHICH CHANNEL SHOULD BE USED? IS THERE A GOOD DEFAULT CHANNEL?
|
||||
;
|
||||
SNDUNIT .EQU 0
|
||||
;
|
||||
HB_BEEP:
|
||||
LD B,$50 ; SOUND RESET FUNCTION
|
||||
LD C,SNDUNIT ; SOUND UNIT NUMBER
|
||||
CALL SND_DISPATCH ; DO IT
|
||||
LD B,$51 ; VOLUME
|
||||
LD C,SNDUNIT ; SOUND UNIT NUMBER
|
||||
LD L,$FF ; MAX
|
||||
CALL SND_DISPATCH ; DO IT
|
||||
LD B,$53 ; SELECT NOTE
|
||||
LD C,SNDUNIT ; SOUND UNIT NUMBER
|
||||
;LD HL,0 ; A0#
|
||||
LD HL,200 ; C4
|
||||
CALL SND_DISPATCH ; DO IT
|
||||
;LD B,$56 ; DURATION
|
||||
;LD C,SNDUNIT ; SOUND UNIT NUMBER
|
||||
;LD HL,500 ; 1/2 SECOND
|
||||
;CALL SND_DISPATCH ; DO IT
|
||||
LD B,$54 ; PLAY SOUND
|
||||
LD C,SNDUNIT ; SOUND UNIT NUMBER
|
||||
LD D,1 ; CHANNEL 0
|
||||
CALL SND_DISPATCH ; DO IT
|
||||
LD DE,15625 ; PLAY FOR 1/4 SECOND
|
||||
CALL VDELAY
|
||||
LD B,$50 ; SOUND RESET FUNCTION
|
||||
LD C,SNDUNIT ; SOUND UNIT NUMBER
|
||||
CALL SND_DISPATCH ; DO IT
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IFNDEF ROMBOOT
|
||||
;
|
||||
; COPY OS IMAGE: BID_USR:<IMG START> --> BID_USR:0
|
||||
@@ -2919,8 +2970,8 @@ HB_PCINITTBL:
|
||||
#IF (PIOENABLE)
|
||||
.DW PIO_PREINIT
|
||||
#ENDIF
|
||||
#IF CENENABLE)
|
||||
.DW CEN_PREINIT
|
||||
#IF LPTENABLE)
|
||||
.DW LPT_PREINIT
|
||||
#ENDIF
|
||||
#IF (PIO_4P | PIO_ZP)
|
||||
.DW PIO_PREINIT
|
||||
@@ -2974,6 +3025,18 @@ HB_INITTBL:
|
||||
#IF (ACIAENABLE)
|
||||
.DW ACIA_INIT
|
||||
#ENDIF
|
||||
#IF (PIOENABLE)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
#IF (LPTENABLE)
|
||||
.DW LPT_INIT
|
||||
#ENDIF
|
||||
#IF (PIO_4P | PIO_ZP)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
#IF (UFENABLE)
|
||||
.DW UF_INIT
|
||||
#ENDIF
|
||||
#IF (DSRTCENABLE)
|
||||
.DW DSRTC_INIT
|
||||
#ENDIF
|
||||
@@ -3041,18 +3104,6 @@ HB_INITTBL:
|
||||
#IF (PPPENABLE)
|
||||
.DW PPP_INIT
|
||||
#ENDIF
|
||||
#IF (PIOENABLE)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
#IF (CENENABLE)
|
||||
.DW CEN_INIT
|
||||
#ENDIF
|
||||
#IF (PIO_4P | PIO_ZP)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
#IF (UFENABLE)
|
||||
.DW UF_INIT
|
||||
#ENDIF
|
||||
|
||||
;
|
||||
HB_INITTBLLEN .EQU (($ - HB_INITTBL) / 2)
|
||||
@@ -3698,7 +3749,7 @@ SND_ADDENT:
|
||||
; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS)
|
||||
;
|
||||
SND_FNCNT .EQU 8 ; NUMBER OF SND FUNCS (FOR RANGE CHECK)
|
||||
SND_MAX .EQU 3 ; UP TO 2 UNITS
|
||||
SND_MAX .EQU 4 ; UP TO 3 UNITS
|
||||
SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES
|
||||
;
|
||||
.DB SND_FNCNT ; SND FUNCTION COUNT (FOR RANGE CHECK)
|
||||
@@ -4102,10 +4153,10 @@ SYS_GETCPUSPD:
|
||||
;
|
||||
#IF (((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC)) & (CPUSPDCAP==SPD_HILO))
|
||||
LD A,(HB_RTCVAL)
|
||||
BIT 3,A
|
||||
#IF (PLATFORM == PLT_SBC)
|
||||
XOR %00001000 ; SBC SPEED BIT IS INVERTED
|
||||
#ENDIF
|
||||
BIT 3,A
|
||||
LD L,0 ; ASSUME HALF SPEED
|
||||
JR Z,SYS_GETCPUSPD1
|
||||
LD L,1
|
||||
@@ -5233,7 +5284,7 @@ HB_ADDENT:
|
||||
; ALL OTHER REGISTERS PRESERVED
|
||||
;
|
||||
; A 4 BYTE HEADER IS PLACED IN FRONT OF THE ALLOCATED MEMORY
|
||||
; - DWORD: SIZE OF MEMROY ALLOCATED (DOES NOT INCLUDE 4 BYTE HEADER)
|
||||
; - DWORD: SIZE OF MEMORY ALLOCATED (DOES NOT INCLUDE 4 BYTE HEADER)
|
||||
; - DWORD: ADDRESS WHERE ALLOC WAS CALLED (VALUE ON TOP OF STACK AT CALL)
|
||||
;
|
||||
HB_ALLOC:
|
||||
@@ -5773,6 +5824,15 @@ SIZ_ASCI .EQU $ - ORG_ASCI
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (Z2UENABLE)
|
||||
ORG_Z2U .EQU $
|
||||
#INCLUDE "z2u.asm"
|
||||
SIZ_Z2U .EQU $ - ORG_Z2U
|
||||
.ECHO "Z2U occupies "
|
||||
.ECHO SIZ_Z2U
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (UARTENABLE)
|
||||
ORG_UART .EQU $
|
||||
#INCLUDE "uart.asm"
|
||||
@@ -5809,12 +5869,39 @@ SIZ_ACIA .EQU $ - ORG_ACIA
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (Z2UENABLE)
|
||||
ORG_Z2U .EQU $
|
||||
#INCLUDE "z2u.asm"
|
||||
SIZ_Z2U .EQU $ - ORG_Z2U
|
||||
.ECHO "Z2U occupies "
|
||||
.ECHO SIZ_Z2U
|
||||
#IF (PIOENABLE)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
SIZ_PIO .EQU $ - ORG_PIO
|
||||
.ECHO "PIO occupies "
|
||||
.ECHO SIZ_PIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (LPTENABLE)
|
||||
ORG_LPT .EQU $
|
||||
#INCLUDE "lpt.asm"
|
||||
SIZ_LPT .EQU $ - ORG_LPT
|
||||
.ECHO "LPT occupies "
|
||||
.ECHO SIZ_LPT
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PIO_4P | PIO_ZP | PIO_SBC)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
SIZ_PIO .EQU $ - ORG_PIO
|
||||
.ECHO "PIO occupies "
|
||||
.ECHO SIZ_PIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (UFENABLE)
|
||||
ORG_UF .EQU $
|
||||
#INCLUDE "uf.asm"
|
||||
SIZ_UF .EQU $ - ORG_UF
|
||||
.ECHO "UF occupies "
|
||||
.ECHO SIZ_UF
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
@@ -6049,42 +6136,6 @@ SIZ_SPK .EQU $ - ORG_SPK
|
||||
.ECHO SIZ_SPK
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PIOENABLE)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
SIZ_PIO .EQU $ - ORG_PIO
|
||||
.ECHO "PIO occupies "
|
||||
.ECHO SIZ_PIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (CENENABLE)
|
||||
ORG_CEN .EQU $
|
||||
#INCLUDE "cen.asm"
|
||||
SIZ_CEN .EQU $ - ORG_CEN
|
||||
.ECHO "CEN occupies "
|
||||
.ECHO SIZ_CEN
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PIO_4P | PIO_ZP | PIO_SBC)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
SIZ_PIO .EQU $ - ORG_PIO
|
||||
.ECHO "PIO occupies "
|
||||
.ECHO SIZ_PIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (UFENABLE)
|
||||
ORG_UF .EQU $
|
||||
#INCLUDE "uf.asm"
|
||||
SIZ_UF .EQU $ - ORG_UF
|
||||
.ECHO "UF occupies "
|
||||
.ECHO SIZ_UF
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
#IF (KIOENABLE)
|
||||
ORG_KIO .EQU $
|
||||
#INCLUDE "kio.asm"
|
||||
@@ -6909,7 +6960,7 @@ PS_FLP_DSTR: .TEXT "SD$" ; PS_FLPSD
|
||||
;
|
||||
PS_SDSTRREF:
|
||||
.DW PS_SDUART, PS_SDASCI, PS_SDTERM, PS_SDPRPCON, PS_SDPPPCON
|
||||
.DW PS_SDSIO, PS_SDACIA, PS_SDPIO, PS_SDUF, PS_SDDUART, PS_SDZ2U, PS_SDCEN
|
||||
.DW PS_SDSIO, PS_SDACIA, PS_SDPIO, PS_SDUF, PS_SDDUART, PS_SDZ2U, PS_SDLPT
|
||||
;
|
||||
PS_SDUART .TEXT "UART$"
|
||||
PS_SDASCI .TEXT "ASCI$"
|
||||
@@ -6922,7 +6973,7 @@ PS_SDPIO .TEXT "PIO$"
|
||||
PS_SDUF .TEXT "UF$"
|
||||
PS_SDDUART .TEXT "DUART$"
|
||||
PS_SDZ2U .TEXT "Z2U$"
|
||||
PS_SDCEN .TEXT "CEN$"
|
||||
PS_SDLPT .TEXT "LPT$"
|
||||
;
|
||||
; CHARACTER SUB TYPE STRINGS
|
||||
;
|
||||
|
||||
@@ -183,7 +183,7 @@ CIODEV_PIO .EQU $70
|
||||
CIODEV_UF .EQU $80
|
||||
CIODEV_DUART .EQU $90
|
||||
CIODEV_Z2U .EQU $A0
|
||||
CIODEV_CEN .EQU $B0
|
||||
CIODEV_LPT .EQU $B0
|
||||
;
|
||||
; SUB TYPES OF CHAR DEVICES
|
||||
;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; CENTRONICS INTERFACE DRIVER
|
||||
; CENTRONICS (LPT) INTERFACE DRIVER
|
||||
;==================================================================================================
|
||||
;
|
||||
; CENTRONICS-STYLE PARALLEL PRINTER DRIVER. ASSUMES MBC PRINT BOARD
|
||||
; AS HARDWARE.
|
||||
; CENTRONICS-STYLE PARALLEL PRINTER DRIVER. ASSUMES IBM STYLE
|
||||
; HARDWARE INTERFACE AS DESCRIBED BELOW.
|
||||
;
|
||||
; IMPLEMENTED AS A ROMWBW CHARACTER DEVICE. CURRENTLY HANDLES OUPUT
|
||||
; ONLY.
|
||||
@@ -30,56 +30,56 @@
|
||||
; | STAT1 | STAT0 | ENBL | PINT | SEL | RES | LF | STB |
|
||||
; +-------+-------+-------+-------+-------+-------+-------+-------+
|
||||
;
|
||||
CEN_NONE .EQU 0
|
||||
CEN_MBC .EQU 1
|
||||
LPT_NONE .EQU 0 ; NOT PRESENT
|
||||
LPT_IBM .EQU 1 ; IBM PC STYLE INTERFACE
|
||||
;
|
||||
; PRE-CONSOLE INITIALIZATION - DETECT AND INIT HARDWARE
|
||||
;
|
||||
CEN_PREINIT:
|
||||
LPT_PREINIT:
|
||||
;
|
||||
; SETUP THE DISPATCH TABLE ENTRIES
|
||||
; NOTE: INTS WILL BE DISABLED WHEN PREINIT IS CALLED AND THEY MUST REMIAIN
|
||||
; DISABLED.
|
||||
;
|
||||
LD B,CEN_CFGCNT ; LOOP CONTROL
|
||||
LD B,LPT_CFGCNT ; LOOP CONTROL
|
||||
XOR A ; ZERO TO ACCUM
|
||||
LD (CEN_DEV),A ; CURRENT DEVICE NUMBER
|
||||
LD IY,CEN_CFG ; POINT TO START OF CFG TABLE
|
||||
CEN_PREINIT0:
|
||||
LD (LPT_DEV),A ; CURRENT DEVICE NUMBER
|
||||
LD IY,LPT_CFG ; POINT TO START OF CFG TABLE
|
||||
LPT_PREINIT0:
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
CALL CEN_INITUNIT ; HAND OFF TO UNIT INIT CODE
|
||||
CALL LPT_INITUNIT ; HAND OFF TO UNIT INIT CODE
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
;
|
||||
LD A,(IY+1) ; GET THE CEN TYPE DETECTED
|
||||
LD A,(IY+1) ; GET THE LPT TYPE DETECTED
|
||||
OR A ; SET FLAGS
|
||||
JR Z,CEN_PREINIT2 ; SKIP IT IF NOTHING FOUND
|
||||
JR Z,LPT_PREINIT2 ; SKIP IT IF NOTHING FOUND
|
||||
;
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
PUSH IY ; CFG ENTRY ADDRESS
|
||||
POP DE ; ... TO DE
|
||||
LD BC,CEN_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
CALL NZ,CIO_ADDENT ; ADD ENTRY IF CEN FOUND, BC:DE
|
||||
LD BC,LPT_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
CALL NZ,CIO_ADDENT ; ADD ENTRY IF LPT FOUND, BC:DE
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
;
|
||||
CEN_PREINIT2:
|
||||
LD DE,CEN_CFGSIZ ; SIZE OF CFG ENTRY
|
||||
LPT_PREINIT2:
|
||||
LD DE,LPT_CFGSIZ ; SIZE OF CFG ENTRY
|
||||
ADD IY,DE ; BUMP IY TO NEXT ENTRY
|
||||
DJNZ CEN_PREINIT0 ; LOOP UNTIL DONE
|
||||
DJNZ LPT_PREINIT0 ; LOOP UNTIL DONE
|
||||
;
|
||||
CEN_PREINIT3:
|
||||
LPT_PREINIT3:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; AND RETURN
|
||||
;
|
||||
; CEN INITIALIZATION ROUTINE
|
||||
; LPT INITIALIZATION ROUTINE
|
||||
;
|
||||
CEN_INITUNIT:
|
||||
CALL CEN_DETECT ; DETERMINE CEN TYPE
|
||||
LPT_INITUNIT:
|
||||
CALL LPT_DETECT ; DETERMINE LPT TYPE
|
||||
LD (IY+1),A ; SAVE IN CONFIG TABLE
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; ABORT IF NOTHING THERE
|
||||
;
|
||||
; UPDATE WORKING CEN DEVICE NUM
|
||||
LD HL,CEN_DEV ; POINT TO CURRENT DEVICE NUM
|
||||
; UPDATE WORKING LPT DEVICE NUM
|
||||
LD HL,LPT_DEV ; POINT TO CURRENT DEVICE NUM
|
||||
LD A,(HL) ; PUT IN ACCUM
|
||||
INC (HL) ; INCREMENT IT (FOR NEXT LOOP)
|
||||
LD (IY),A ; UPDATE UNIT NUM
|
||||
@@ -88,44 +88,44 @@ CEN_INITUNIT:
|
||||
LD DE,-1 ; LEAVE CONFIG ALONE
|
||||
; CALL INITDEV TO IMPLEMENT CONFIG, BUT NOTE THAT WE CALL
|
||||
; THE INITDEV ENTRY POINT THAT DOES NOT ENABLE/DISABLE INTS!
|
||||
JP CEN_INITDEVX ; IMPLEMENT IT AND RETURN
|
||||
JP LPT_INITDEVX ; IMPLEMENT IT AND RETURN
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_INIT:
|
||||
LD B,CEN_CFGCNT ; COUNT OF POSSIBLE CEN UNITS
|
||||
LD IY,CEN_CFG ; POINT TO START OF CFG TABLE
|
||||
CEN_INIT1:
|
||||
LPT_INIT:
|
||||
LD B,LPT_CFGCNT ; COUNT OF POSSIBLE LPT UNITS
|
||||
LD IY,LPT_CFG ; POINT TO START OF CFG TABLE
|
||||
LPT_INIT1:
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
LD A,(IY+1) ; GET CEN TYPE
|
||||
LD A,(IY+1) ; GET LPT TYPE
|
||||
OR A ; SET FLAGS
|
||||
CALL NZ,CEN_PRTCFG ; PRINT IF NOT ZERO
|
||||
CALL NZ,LPT_PRTCFG ; PRINT IF NOT ZERO
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
LD DE,CEN_CFGSIZ ; SIZE OF CFG ENTRY
|
||||
LD DE,LPT_CFGSIZ ; SIZE OF CFG ENTRY
|
||||
ADD IY,DE ; BUMP IY TO NEXT ENTRY
|
||||
DJNZ CEN_INIT1 ; LOOP TILL DONE
|
||||
DJNZ LPT_INIT1 ; LOOP TILL DONE
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
;
|
||||
; DRIVER FUNCTION TABLE
|
||||
;
|
||||
CEN_FNTBL:
|
||||
.DW CEN_IN
|
||||
.DW CEN_OUT
|
||||
.DW CEN_IST
|
||||
.DW CEN_OST
|
||||
.DW CEN_INITDEV
|
||||
.DW CEN_QUERY
|
||||
.DW CEN_DEVICE
|
||||
#IF (($ - CEN_FNTBL) != (CIO_FNCNT * 2))
|
||||
.ECHO "*** INVALID CEN FUNCTION TABLE ***\n"
|
||||
LPT_FNTBL:
|
||||
.DW LPT_IN
|
||||
.DW LPT_OUT
|
||||
.DW LPT_IST
|
||||
.DW LPT_OST
|
||||
.DW LPT_INITDEV
|
||||
.DW LPT_QUERY
|
||||
.DW LPT_DEVICE
|
||||
#IF (($ - LPT_FNTBL) != (CIO_FNCNT * 2))
|
||||
.ECHO "*** INVALID LPT FUNCTION TABLE ***\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#ENDIF
|
||||
;
|
||||
; BYTE INTPUT
|
||||
;
|
||||
CEN_IN:
|
||||
LPT_IN:
|
||||
; INPUT NOT SUPPORTED - RETURN NULL BYTE
|
||||
LD E,0 ; NULL BYTE
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -133,20 +133,19 @@ CEN_IN:
|
||||
;
|
||||
; BYTE OUTPUT
|
||||
;
|
||||
CEN_OUT:
|
||||
CALL CEN_OST ; READY TO SEND?
|
||||
JR Z,CEN_OUT ; LOOP IF NOT
|
||||
; *** ADD CODE TO OUTPUT BYTE ***
|
||||
LPT_OUT:
|
||||
CALL LPT_OST ; READY TO SEND?
|
||||
JR Z,LPT_OUT ; LOOP IF NOT
|
||||
LD A,(IY+3)
|
||||
LD C,A ; PORT 0 (DATA)
|
||||
OUT (C),E ; OUTPUT DATA TO PORT
|
||||
call DELAY ; ignore anything back after a reset
|
||||
ld A,%00001101 ; select & strobe, LEDS OFF
|
||||
CALL DELAY ; IGNORE ANYTHING BACK AFTER A RESET
|
||||
LD A,%00001101 ; SELECT & STROBE, LEDS OFF
|
||||
INC C ; PUT CONTROL PORT IN C
|
||||
INC C
|
||||
OUT (C),A ; OUTPUT DATA TO PORT
|
||||
call DELAY ; ignore anything back after a reset
|
||||
ld A,%00001100 ; select, LEDS OFF
|
||||
CALL DELAY ; IGNORE ANYTHING BACK AFTER A RESET
|
||||
LD A,%00001100 ; SELECT, LEDS OFF
|
||||
OUT (C),A ; OUTPUT DATA TO PORT
|
||||
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -154,14 +153,14 @@ CEN_OUT:
|
||||
;
|
||||
; INPUT STATUS
|
||||
;
|
||||
CEN_IST:
|
||||
LPT_IST:
|
||||
; INPUT NOT SUPPORTED - RETURN NOT READY
|
||||
XOR A ; ZERO BYTES AVAILABLE
|
||||
RET ; DONE
|
||||
;
|
||||
; OUTPUT STATUS
|
||||
;
|
||||
CEN_OST:
|
||||
LPT_OST:
|
||||
LD A,(IY+3)
|
||||
LD C,A ; PORT 0 (DATA)
|
||||
INC C ; SELECT STATUS PORT
|
||||
@@ -171,16 +170,16 @@ CEN_OST:
|
||||
;
|
||||
; INITIALIZE DEVICE
|
||||
;
|
||||
CEN_INITDEV:
|
||||
LPT_INITDEV:
|
||||
HB_DI ; AVOID CONFLICTS
|
||||
CALL CEN_INITDEVX ; DO THE REAL WORK
|
||||
CALL LPT_INITDEVX ; DO THE REAL WORK
|
||||
HB_EI ; INTS BACK ON
|
||||
RET ; DONE
|
||||
;
|
||||
; THIS ENTRY POINT BYPASSES DISABLING/ENABLING INTS WHICH IS REQUIRED BY
|
||||
; PREINIT ABOVE. PREINIT IS NOT ALLOWED TO ENABLE INTS!
|
||||
;
|
||||
CEN_INITDEVX:
|
||||
LPT_INITDEVX:
|
||||
LD A,(IY+3)
|
||||
LD C,A ; PORT 0 (DATA)
|
||||
XOR A ; CLEAR ACCUM
|
||||
@@ -197,7 +196,7 @@ CEN_INITDEVX:
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_QUERY:
|
||||
LPT_QUERY:
|
||||
LD E,(IY+4) ; FIRST CONFIG BYTE TO E
|
||||
LD D,(IY+5) ; SECOND CONFIG BYTE TO D
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -205,8 +204,8 @@ CEN_QUERY:
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_DEVICE:
|
||||
LD D,CIODEV_CEN ; D := DEVICE TYPE
|
||||
LPT_DEVICE:
|
||||
LD D,CIODEV_LPT ; D := DEVICE TYPE
|
||||
LD E,(IY) ; E := PHYSICAL UNIT
|
||||
LD C,$40 ; C := DEVICE TYPE, 0x40 IS PIO
|
||||
LD H,(IY+1) ; H := MODE
|
||||
@@ -214,62 +213,71 @@ CEN_DEVICE:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
; CEN DETECTION ROUTINE
|
||||
; LPT DETECTION ROUTINE
|
||||
;
|
||||
CEN_DETECT:
|
||||
LPT_DETECT:
|
||||
LD A,(IY+3) ; BASE PORT ADDRESS
|
||||
ADD A,2 ; USE PORT 2 FOR DETECT
|
||||
LD C,A ; PUT IN C FOR I/O
|
||||
CALL CEN_DETECT2 ; CHECK IT
|
||||
JR Z,CEN_DETECT1 ; FOUND IT, RECORD IT
|
||||
LD A,CEN_NONE ; NOTHING FOUND
|
||||
CALL LPT_DETECT2 ; CHECK IT
|
||||
JR Z,LPT_DETECT1 ; FOUND IT, RECORD IT
|
||||
LD A,LPT_NONE ; NOTHING FOUND
|
||||
RET ; DONE
|
||||
;
|
||||
CEN_DETECT1:
|
||||
; CEN FOUND, RECORD IT
|
||||
LD A,CEN_MBC ; RETURN CHIP TYPE
|
||||
LPT_DETECT1:
|
||||
; LPT FOUND, RECORD IT
|
||||
LD A,LPT_IBM ; RETURN CHIP TYPE
|
||||
RET ; DONE
|
||||
;
|
||||
CEN_DETECT2:
|
||||
; LOOK FOR CEN AT PORT ADDRESS IN C
|
||||
XOR A ; DEFAULT VALUE
|
||||
LPT_DETECT2:
|
||||
; LOOK FOR LPT AT BASE PORT ADDRESS IN C
|
||||
INC C ; PORT C FOR I/O
|
||||
INC C ; ...
|
||||
XOR A ; DEFAULT VALUE (TRI-STATE OFF)
|
||||
OUT (C),A ; SEND IT
|
||||
IN A,(C) ; READ IT
|
||||
AND %11000000 ; ISOLATE STATUS BITS
|
||||
CP %00000000 ; CORRECT VALUE?
|
||||
RET NZ ; IF NOT, RETURN
|
||||
LD A,%11000000 ; STATUS BITS ON (LEDS OFF)
|
||||
;
|
||||
;IN A,(C) ; READ IT
|
||||
;AND %11000000 ; ISOLATE STATUS BITS
|
||||
;CP %00000000 ; CORRECT VALUE?
|
||||
;RET NZ ; IF NOT, RETURN
|
||||
;LD A,%11000000 ; STATUS BITS ON (LEDS OFF)
|
||||
;OUT (C),A ; SEND IT
|
||||
;IN A,(C) ; READ IT
|
||||
;AND %11000000 ; ISOLATE STATUS BITS
|
||||
;CP %11000000 ; CORRECT VALUE?
|
||||
;
|
||||
DEC C ; BACK TO BASE PORT
|
||||
DEC C ; ...
|
||||
LD A,$A5 ; TEST VALUE
|
||||
OUT (C),A ; SEND IT
|
||||
IN A,(C) ; READ IT
|
||||
AND %11000000 ; ISOLATE STATUS BITS
|
||||
CP %11000000 ; CORRECT VALUE?
|
||||
IN A,(C) ; READ IT BACK
|
||||
CP $A5 ; CORRECT?
|
||||
RET ; RETURN (ZF SET CORRECTLY)
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_PRTCFG:
|
||||
LPT_PRTCFG:
|
||||
; ANNOUNCE PORT
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("CEN$") ; FORMATTING
|
||||
PRTS("LPT$") ; FORMATTING
|
||||
LD A,(IY) ; DEVICE NUM
|
||||
CALL PRTDECB ; PRINT DEVICE NUM
|
||||
PRTS(": IO=0x$") ; FORMATTING
|
||||
LD A,(IY+3) ; GET BASE PORT
|
||||
CALL PRTHEXBYTE ; PRINT BASE PORT
|
||||
|
||||
; PRINT THE CEN TYPE
|
||||
; PRINT THE LPT TYPE
|
||||
CALL PC_SPACE ; FORMATTING
|
||||
LD A,(IY+1) ; GET CEN TYPE BYTE
|
||||
LD A,(IY+1) ; GET LPT TYPE BYTE
|
||||
RLCA ; MAKE IT A WORD OFFSET
|
||||
LD HL,CEN_TYPE_MAP ; POINT HL TO TYPE MAP TABLE
|
||||
LD HL,LPT_TYPE_MAP ; POINT HL TO TYPE MAP TABLE
|
||||
CALL ADDHLA ; HL := ENTRY
|
||||
LD E,(HL) ; DEREFERENCE
|
||||
INC HL ; ...
|
||||
LD D,(HL) ; ... TO GET STRING POINTER
|
||||
CALL WRITESTR ; PRINT IT
|
||||
;
|
||||
; ALL DONE IF NO CEN WAS DETECTED
|
||||
LD A,(IY+1) ; GET CEN TYPE BYTE
|
||||
; ALL DONE IF NO LPT WAS DETECTED
|
||||
LD A,(IY+1) ; GET LPT TYPE BYTE
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; IF ZERO, NOT PRESENT
|
||||
;
|
||||
@@ -280,41 +288,41 @@ CEN_PRTCFG:
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_TYPE_MAP:
|
||||
.DW CEN_STR_NONE
|
||||
.DW CEN_STR_MBC
|
||||
LPT_TYPE_MAP:
|
||||
.DW LPT_STR_NONE
|
||||
.DW LPT_STR_IBM
|
||||
;
|
||||
CEN_STR_NONE .DB "<NOT PRESENT>$"
|
||||
CEN_STR_MBC .DB "MBC$"
|
||||
LPT_STR_NONE .DB "<NOT PRESENT>$"
|
||||
LPT_STR_IBM .DB "IBM$"
|
||||
;
|
||||
; WORKING VARIABLES
|
||||
;
|
||||
CEN_DEV .DB 0 ; DEVICE NUM USED DURING INIT
|
||||
LPT_DEV .DB 0 ; DEVICE NUM USED DURING INIT
|
||||
;
|
||||
; CEN DEVICE CONFIGURATION TABLE
|
||||
; LPT DEVICE CONFIGURATION TABLE
|
||||
;
|
||||
CEN_CFG:
|
||||
LPT_CFG:
|
||||
;
|
||||
CEN0_CFG:
|
||||
; CEN MODULE A CONFIG
|
||||
LPT0_CFG:
|
||||
; LPT MODULE A CONFIG
|
||||
.DB 0 ; DEVICE NUMBER (SET DURING INIT)
|
||||
.DB 0 ; CEN TYPE (SET DURING INIT)
|
||||
.DB 0 ; LPT TYPE (SET DURING INIT)
|
||||
.DB 0 ; MODULE ID
|
||||
.DB CEN0BASE ; BASE PORT
|
||||
.DB LPT0BASE ; BASE PORT
|
||||
.DW 0 ; LINE CONFIGURATION
|
||||
;
|
||||
CEN_CFGSIZ .EQU $ - CEN_CFG ; SIZE OF ONE CFG TABLE ENTRY
|
||||
LPT_CFGSIZ .EQU $ - LPT_CFG ; SIZE OF ONE CFG TABLE ENTRY
|
||||
;
|
||||
#IF (CENCNT >= 2)
|
||||
#IF (LPTCNT >= 2)
|
||||
;
|
||||
CEN1_CFG:
|
||||
; CEN MODULE B CONFIG
|
||||
LPT1_CFG:
|
||||
; LPT MODULE B CONFIG
|
||||
.DB 0 ; DEVICE NUMBER (SET DURING INIT)
|
||||
.DB 0 ; CEN TYPE (SET DURING INIT)
|
||||
.DB 0 ; LPT TYPE (SET DURING INIT)
|
||||
.DB 1 ; MODULE ID
|
||||
.DB CEN1BASE ; BASE PORT
|
||||
.DB LPT1BASE ; BASE PORT
|
||||
.DW 0 ; LINE CONFIGURATION
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
CEN_CFGCNT .EQU ($ - CEN_CFG) / CEN_CFGSIZ
|
||||
LPT_CFGCNT .EQU ($ - LPT_CFG) / LPT_CFGSIZ
|
||||
@@ -43,6 +43,9 @@ SN7RATIO .EQU SN7CLK * 100 / 32
|
||||
|
||||
SN76489_INIT:
|
||||
LD IY, SN7_IDAT ; POINTER TO INSTANCE DATA
|
||||
LD BC, SN7_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
LD DE, SN7_IDAT ; DE := SN7 INSTANCE DATA PTR
|
||||
CALL SND_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
|
||||
LD DE,STR_MESSAGELT
|
||||
CALL WRITESTR
|
||||
@@ -53,11 +56,6 @@ SN76489_INIT:
|
||||
CALL WRITESTR
|
||||
LD A, SN76489_PORT_RIGHT
|
||||
CALL PRTHEXBYTE
|
||||
;
|
||||
SN7_INIT1:
|
||||
LD BC, SN7_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
LD DE, SN7_IDAT ; DE := SN7 INSTANCE DATA PTR
|
||||
CALL SND_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
|
||||
CALL SN7_VOLUME_OFF
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -67,7 +65,6 @@ SN7_INIT1:
|
||||
; SN76489 DRIVER - SOUND ADAPTER (SND) FUNCTIONS
|
||||
;======================================================================
|
||||
;
|
||||
|
||||
SN7_RESET:
|
||||
AUDTRACE(SNT_INIT)
|
||||
CALL SN7_VOLUME_OFF
|
||||
|
||||
@@ -13,7 +13,7 @@ call BuildDisk.cmd nzcom fd wbw_fd144 ..\zsdos\zsys_wbw.sys || exit /b
|
||||
call BuildDisk.cmd cpm3 fd wbw_fd144 ..\cpm3\cpmldr.sys || exit /b
|
||||
call BuildDisk.cmd zpm3 fd wbw_fd144 ..\zpm3\zpmldr.sys || exit /b
|
||||
call BuildDisk.cmd ws4 fd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd qpm fd wbw_fd144 ..\cpm22\cpm_wbw.sys || exit /b
|
||||
call BuildDisk.cmd qpm fd wbw_fd144 d_qpm\u0\qpm.sys || exit /b
|
||||
|
||||
echo.
|
||||
echo Building Hard Disk Images (512 directory entry format)...
|
||||
@@ -25,7 +25,7 @@ call BuildDisk.cmd cpm3 hd wbw_hd512 ..\cpm3\cpmldr.sys || exit /b
|
||||
call BuildDisk.cmd zpm3 hd wbw_hd512 ..\zpm3\zpmldr.sys || exit /b
|
||||
call BuildDisk.cmd ws4 hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd dos65 hd wbw_hd512 ..\zsdos\zsys_wbw.sys || exit /b
|
||||
call BuildDisk.cmd qpm hd wbw_hd512 ..\cpm22\cpm_wbw.sys || exit /b
|
||||
call BuildDisk.cmd qpm hd wbw_hd512 d_qpm\u0\qpm.sys || exit /b
|
||||
|
||||
if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd512 || exit /b
|
||||
|
||||
@@ -42,7 +42,7 @@ call BuildDisk.cmd nzcom hd wbw_hd1024 ..\zsdos\zsys_wbw.sys || exit /b
|
||||
call BuildDisk.cmd cpm3 hd wbw_hd1024 ..\cpm3\cpmldr.sys || exit /b
|
||||
call BuildDisk.cmd zpm3 hd wbw_hd1024 ..\zpm3\zpmldr.sys || exit /b
|
||||
call BuildDisk.cmd ws4 hd wbw_hd1024 || exit /b
|
||||
call BuildDisk.cmd qpm hd wbw_hd1024 ..\cpm22\cpm_wbw.sys || exit /b
|
||||
call BuildDisk.cmd qpm hd wbw_hd1024 d_qpm\u0\qpm.sys || exit /b
|
||||
|
||||
if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd1024 || exit /b
|
||||
|
||||
|
||||
@@ -70,7 +70,8 @@ blankhd1024:
|
||||
%.img: $(SYSTEMS) blank144 blankhd512 blankhd1024 Makefile
|
||||
@sys= ; \
|
||||
case $@ in \
|
||||
(*cpm22* | *qpm*) sys=../CPM22/cpm_wbw.sys;; \
|
||||
(*cpm22*) sys=../CPM22/cpm_wbw.sys;; \
|
||||
(*qpm*) sys=d_qpm/u0/qpm.sys;; \
|
||||
(*zsdos* | *nzcom* | *dos65*) sys=../ZSDOS/zsys_wbw.sys;; \
|
||||
(*cpm3*) sys=../CPM3/cpmldr.sys;; \
|
||||
(*zpm3*) sys=../ZPM3/zpmldr.sys;; \
|
||||
|
||||
BIN
Source/Images/d_dos65/u0/hi.com
Normal file
BIN
Source/Images/d_dos65/u0/hi.com
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/monitor.com
Normal file
BIN
Source/Images/d_dos65/u0/monitor.com
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/scream.com
Normal file
BIN
Source/Images/d_dos65/u0/scream.com
Normal file
Binary file not shown.
@@ -1,9 +1,21 @@
|
||||
===== QP/M Disk for RomWBW =====
|
||||
|
||||
This disk contains the distribution files for the QP/M Operating
|
||||
System. The disk is initially set up to boot CP/M 2.2. You
|
||||
must use the QINSTALL program to install QP/M on the boot
|
||||
tracks and subsequently boot QP/M.
|
||||
System. The disk is bootable with QP/M already installed on the
|
||||
system tracks. The qpm.sys file and the QP/M image on the system
|
||||
tracks was created using QINSTALL with default settings EXCEPT
|
||||
for the two settings described under Notes (current drive/user
|
||||
storage address and TIMDAT vector).
|
||||
|
||||
QINSTALL can be run again as desired to further customize your
|
||||
installation. However, note that QINSTALL does NOT remember prior
|
||||
settings, so you must reapply all settings you made previously
|
||||
especially the two setting changes described below.
|
||||
|
||||
This disk includes the standard DRI CP/M 2.2 files in addition to the
|
||||
QP/M files. QP/M generally assumes you already had DRI CP/M 2.2
|
||||
prior to adding QP/M features. Since QP/M does not replace all
|
||||
features of CP/M 2.2, the CP/M 2.2 files are also included.
|
||||
|
||||
== Notes ==
|
||||
|
||||
@@ -15,6 +27,169 @@ to something else. I have been using 0x000E without issue.
|
||||
RomWBW CBIOS has been modified to put the QP/M TIMDAT vector at 0x0010. The
|
||||
vector points into CBIOS where the actual TIMDAT routine is located. The
|
||||
TIMDAT routine reads the current date/time from HBIOS, changes the values from
|
||||
BCD to binary, and rearranges some bytes for QP/M compatibilty.
|
||||
BCD to binary, and rearranges some bytes for QP/M compatibilty. When
|
||||
running QINSTALL, you should set the TIMDAT vector to 0x0010 to
|
||||
enabled QP/M to use your RomWBW real time clock.
|
||||
|
||||
--WBW 5:29 PM 6/4/2022
|
||||
By default, DEBUGZ utilizes the RST 38 restart vector for setting
|
||||
code brakpoints. This conflicts the use of that vector for any
|
||||
system that is using interrupt mode 1. DEBUGZ can be configured
|
||||
(using DBGINST) to use a different vector.
|
||||
|
||||
The QSTAMP program, which is used to initialize a disk for date/time
|
||||
stamping, misbehavews when run on the (new) RomWBW 1024 directory
|
||||
format disks. It creates an invalid directory entry for the
|
||||
date/time stamp data file. This is definitely a QP/M issue. The
|
||||
directory entry can be manually corrected.
|
||||
|
||||
== ZSDOS 1.1 Files ==
|
||||
|
||||
The following files came from the official QP/M distribution. Actually,
|
||||
they came from 3 Microcode Consulting files (qpm27.zip, debugz.zip,
|
||||
and linkz.zip). The original distribution files can be found on the
|
||||
Microcode Consulting website at https://www.microcodeconsulting.com/.
|
||||
Documentation (pdf) files are incuded in these original distribution
|
||||
.zip files. These documentation files have not been included in the
|
||||
RomWBW distribution. Please retrieve them yourself from the website
|
||||
if desired.
|
||||
|
||||
D.COM - Directory lister
|
||||
DBGINST.COM - Configures DEBUGZ debugger
|
||||
DEBUGZ.COM - QP/M debugger
|
||||
DEBUGZ.HLP - QP/M debugger help file
|
||||
DHORIZ.COM - Version of directory lister for horizontal file sorting
|
||||
HELLO.QPM - Text file with QP/M version information
|
||||
LZ.COM - QP/M linker
|
||||
QBACKUP.COM - Data backup application
|
||||
QINSTALL.COM - QP/M installer / configurator
|
||||
QPATCH.COM - Patches (customizes) a few QP/M applications
|
||||
QPIP.COM - QP/M enhanced version of CP/M 2.2 PIP application
|
||||
QPM.SYS - RomWBW configured QP/M system image (for use with SYSCOPY)
|
||||
QPMCLK.MAC - Example of QP/M clock assembler routine
|
||||
QPMCMDS.TXT - Brief summary of QP/M commands
|
||||
QPMUTILS.TXT - Brief summary of QP/M utilities
|
||||
QSTAMP.COM - Initializes disk for date/time stamping
|
||||
QSTAMPV.COM - Initializes disk for date/time stamping (vertical sort)
|
||||
QSTAMPX.COM - Initializes disk for date/time stamping (horizontal sort)
|
||||
QSTAT.COM - QP/M enhanced version of CP/M 2.2 STAT application
|
||||
QSUB.COM - QP/M batch file submission program
|
||||
QSWEEP.COM - QP/M directory sweep utility
|
||||
QTERM.DAT - Terminal control codes used by DEBUGZ
|
||||
QTERMS.LIB - Library of available terminal definitions
|
||||
SETQTERM.COM - Configures QTERM.DAT
|
||||
TDCNFG.COM - Configures date/time directory display preferences
|
||||
|
||||
== CP/M 2.2 Files ==
|
||||
|
||||
The following files have been included from CP/M 2.2. These files
|
||||
provide various functionality that is not really available from the
|
||||
ZSDOS applications themselves. For example, the CP/M 2.2 application
|
||||
called STAT is useful for modifying the IOBYTE. Most of these
|
||||
applications are documented in the "CPM Manual.pdf" document in the Doc
|
||||
directory of the RomWBW distribution.
|
||||
|
||||
ASM.COM - DRI 8080 assembler producing Intel hex files
|
||||
LIB.COM - DRI relocatable object file librarian
|
||||
LINK.COM - DRI relocatable object file linker
|
||||
LOAD.COM - DRI loader for Intel hex files
|
||||
MAC.COM - DRI 8080 macro assembler producing Intel hex files
|
||||
RMAC.COM - DRI 8080 macro assembler producing relocatable object files
|
||||
STAT.COM - DRI multi-purpose file/disk/device info & configuration tool
|
||||
SUBMIT.COM - DRI batch file submission tool
|
||||
XSUB.COM - DRI batch file enhancer resident system extension
|
||||
|
||||
== RomWBW Supplemental Applications ==
|
||||
|
||||
The following files provide specific functionality enabled by
|
||||
RomWBW enhancements. These applications are documented in the
|
||||
"RomWBW Applications.pdf" document in the Doc directory of the
|
||||
RomWBW Distribution.
|
||||
|
||||
ASSIGN.COM - Assign,remove,swap drive letters of RomWBW disk slices
|
||||
FAT.COM - MS-DOS FAT filesystem tool (list, copy, delete, format, etc.)
|
||||
FDU.COM - Test floppy hardware and format floppy disks
|
||||
FORMAT.COM - Placeholder application with formatting instructions
|
||||
INTTEST.COM - Test RomWBW interrupt processing on your hardware
|
||||
MODE.COM - Change serial line characteristics (baud rate, etc.)
|
||||
RTC.COM - Test real time clock hardware on your system
|
||||
SURVEY.COM - Display system resources summary
|
||||
SYSCOPY.COM - Copy system tracks to disks (make bootable)
|
||||
SYSGEN.COM - Copy system tracks to disks (DRI version)
|
||||
TALK.COM - Route console I/O to & from specified serial port
|
||||
TIMER.COM - Test and display system timer ticks
|
||||
TUNE.COM - Play .PT2, .PT3, and .MYM audio files on supported hardware
|
||||
XM.COM - XModem file transfer application
|
||||
ZMP.COM - ZModem communications program (requires dedicated comm port)
|
||||
ZMP.DOC - Documentation for ZMP
|
||||
ZMP.HLP - Help file for ZMP
|
||||
ZMXFER.OVR - Overlay file for ZMP
|
||||
ZMTERM.OVR - Overlay file for ZMP
|
||||
ZMINIT.OVR - Overlay file for ZMP
|
||||
ZMCONFIG.OVR - Overlay file for ZMP
|
||||
|
||||
== General Purpose Applications ==
|
||||
|
||||
The following files are commonly used CP/M applications that
|
||||
are generally useful in any CP/M-like system. In general, there is
|
||||
no documentation for these applications included with the RomWBW
|
||||
distribution. Some provide command line help themselves. Some
|
||||
are fairly obvious.
|
||||
|
||||
CLRDIR.COM - Initializes the directory area of a disk
|
||||
COMPARE.COM - Compare content of two files (binary)
|
||||
CRUNCH.COM - Compress file(s) using Crunch algorithm
|
||||
CRUNCH28.CFG - ZCNFG configuration file for CRUNCH & UNCR
|
||||
DDTZ.COM - Z80 debug tool (modified to use RST 6)
|
||||
DDTZ.DOC - Documentation for DDTZ
|
||||
EX.COM - Batch file processor (alternative to DRI SUBMIT)
|
||||
FDISK80.COM - Hard disk partitioning tool (from John Coffman)
|
||||
FIND.COM - Search all drives for a file (from Jay Cotton)
|
||||
FLASH.COM - Program FLASH chips in-situ (from Will Sowerbutts)
|
||||
FLASH.DOC - Documentation for FLASH
|
||||
MBASIC.COM - Microsoft BASIC language interpreter
|
||||
NULU.COM - Library (.LBR) management tool
|
||||
PMARC.COM - Create or add file(s) to .PMA archive
|
||||
PMEXT.COM - Extract file(s) from .PMA/.LZH/.LHA archive
|
||||
RMXSUB1.COM - Remove XSUB1 RSX from memory (from Lars Nelson)
|
||||
SUPERSUB.COM - Enhanced replacement for DRI SUBMIT
|
||||
SUPERSUB.DOC - Documentation for SUPERSUB
|
||||
TDLBASIC.COM - TDL Zapple 12K BASIC language interpreter
|
||||
UNARC.COM - Extract file(s) from .ARC or .ARK archive
|
||||
UNARC.DOC - Documentation for UNARC
|
||||
UNCR.COM - Decompress Crunched file(s)
|
||||
UNZIP.COM - UNZIPZ extracts from all MS-DOS ZIP files (from Lars Nelson)
|
||||
UNZIP.DOC - Documentation for UNZIPZ
|
||||
XSUB1.COM - Replacement for DRI SUB (from Lars Nelson)
|
||||
ZAP.COM - Interactive disk & file utility
|
||||
ZDE.COM - Compact WordStar-like editor
|
||||
ZDENST.COM - Installation/configuration tool for ZDE
|
||||
KERCPM22.COM - Kermit file transfer application
|
||||
LBREXT.COM - Extract file from .LBR libraries
|
||||
LBREXT36.CFG - ZCNFG configuration file for LBREXT
|
||||
ZXD.COM - Enhanced directory lister w/ date/time stamp support
|
||||
ZXD.CFG - ZCNFG configuration file for ZXD
|
||||
|
||||
== Testing Applications (User Area 2) ==
|
||||
|
||||
User area 2 contains a variety of hardware testing applications.
|
||||
These are generally user contributed and have no documentation.
|
||||
Additionally, they are frequently not compatible with all RomWBW
|
||||
hardware. They are included here as a convenience. If applicable,
|
||||
your hardware documentation should refer to them and provide usage
|
||||
instructions.
|
||||
|
||||
== Sample Tune Files (User Area 3) ==
|
||||
|
||||
User area 3 contains sample audio files that can be played using
|
||||
the TUNE application.
|
||||
|
||||
== CP/NET 1.2 (User Area 4) ==
|
||||
|
||||
User area 4 contains a full implementation of the CP/NET 1.2
|
||||
client provided by Doug Miller. Please read the README.TXT file
|
||||
in this user area for more information.
|
||||
|
||||
N.B., at a minimum, some of the files in this user area must be copied
|
||||
to user area 0 for CP/NET to work properly.
|
||||
|
||||
--WBW 4:41 PM 6/10/2022
|
||||
|
||||
BIN
Source/Images/d_qpm/u0/qpm.sys
Normal file
BIN
Source/Images/d_qpm/u0/qpm.sys
Normal file
Binary file not shown.
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1.1-pre.172"
|
||||
#DEFINE BIOSVER "3.1.1-pre.175"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 1
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1.1-pre.172"
|
||||
db "3.1.1-pre.175"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user