diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index 969992e0..481d951c 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -432,6 +432,8 @@ WBOOT: #ENDIF ; #IFDEF PLTUNA + LD SP,STACK ; STACK FOR INITIALIZATION + ; RESTORE COMMAND PROCESSOR FROM UNA BIOS CACHE LD BC,$01FB ; UNA FUNC = SET BANK LD DE,(BNKBIOS) ; UBIOS_PAGE (SEE PAGES.INC) @@ -1626,6 +1628,7 @@ LBA_IO: ; DSK_IO2: PUSH BC ; SAVE INCOMING FUNCTION, UNIT + RES 7,D ; CLEAR LBA BIT FOR UNA LD B,C ; UNIT TO B LD C,$41 ; UNA SET LBA RST 08 ; CALL UNA diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index ed9a33e5..25988625 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -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) diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 1d596dbd..c591e3b8 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -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: @@ -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 ; diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index a9a43b45..a5400782 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -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) diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 978c4274..74fd73a2 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.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) diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 51b76c4e..fb57e607 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.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 diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index 6cc18977..8f0669d7 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -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 diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 9c407215..46b10312 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -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 diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 78f37bcb..f303b55f 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.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 diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 4d485b0c..66536de4 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -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) diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 9e593f4b..58fe389d 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.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) diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 301da337..3fc50fb4 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.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) diff --git a/Source/HBIOS/cfg_rph.asm b/Source/HBIOS/cfg_rph.asm index 237f7fee..ebba0a25 100644 --- a/Source/HBIOS/cfg_rph.asm +++ b/Source/HBIOS/cfg_rph.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 diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 747b99df..cc64fff7 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.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 diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 06855ad9..a8947263 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -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 diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 746f9b31..3ac56328 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -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) diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index c4027774..8c40e759 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.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) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index c3dc3a0c..47cfe5bf 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2826,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: --> BID_USR:0 @@ -2931,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 @@ -2986,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 @@ -3053,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) @@ -4114,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 @@ -5785,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" @@ -5821,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 ; @@ -6061,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" @@ -6921,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$" @@ -6934,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 ; diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 93a9ef4a..d5e69636 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -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 ; diff --git a/Source/HBIOS/cen.asm b/Source/HBIOS/lpt.asm similarity index 56% rename from Source/HBIOS/cen.asm rename to Source/HBIOS/lpt.asm index 8c4a5c9a..2c007389 100644 --- a/Source/HBIOS/cen.asm +++ b/Source/HBIOS/lpt.asm @@ -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 "$" -CEN_STR_MBC .DB "MBC$" +LPT_STR_NONE .DB "$" +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 diff --git a/Source/ver.inc b/Source/ver.inc index db0222ef..9124b396 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.173" +#DEFINE BIOSVER "3.1.1-pre.176" diff --git a/Source/ver.lib b/Source/ver.lib index ef0cffc3..817ec6ea 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.173" + db "3.1.1-pre.176" endm