Merge pull request #126 from wwarthen/dev

Dev
This commit is contained in:
b1ackmai1er
2020-05-13 18:00:19 +08:00
committed by GitHub
19 changed files with 269 additions and 101 deletions

View File

@@ -26,6 +26,7 @@
; 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
;_______________________________________________________________________________
;
; ToDo:
@@ -778,10 +779,10 @@ instc2:
inc hl ; bump to slice field of DPH field
ld a,(de) ; get slice from mapwrk
ld (hl),a ; put slice into DPH field
ld a,11 ; media byte is 11 bytes ahead
call addhl ; bump HL to media byte adr
or $FF ; use $FF to signify media change
ld (hl),a ; set media flag byte
; ld a,11 ; media byte is 11 bytes ahead
; call addhl ; bump HL to media byte adr
; or $FF ; use $FF to signify media change
; ld (hl),a ; set media flag byte
inc de ; bump to next mapwrk entry
inc de ; ...
inc de ; ...
@@ -1892,7 +1893,7 @@ stack .equ $ ; stack top
; Messages
;
indent .db " ",0
msgban1 .db "ASSIGN v1.3 for RomWBW CP/M, 10-May-2020",0
msgban1 .db "ASSIGN v1.4 for RomWBW CP/M, 12-May-2020",0
msghb .db " (HBIOS Mode)",0
msgub .db " (UBIOS Mode)",0
msgban2 .db "Copyright 2020, Wayne Warthen, GNU GPL v3",0

View File

@@ -95,6 +95,7 @@ Id .EQU 1 ; 5) Insert official identificator
CALL CLI_ABRT_IF_OPT_FIRST
CALL CLI_HAVE_HBIOS_SWITCH
CALL CLI_OCTAVE_ADJST
JP CONTINUE
CONTINUE:
@@ -581,14 +582,14 @@ FILTYP .DB 0 ; Sound file type (TYPPT2, TYPPT3, TYPMYM)
;
TMP .DB 0 ; work around use of undocumented Z80
HBIOSOPT: .DB "--HBIOS", 0
HBIOSMD .DB 0 ; NON-ZERO IF USING HBIOS SOUND DRIVER, ZERO OTHERWISE
OCTAVEADJ .DB 0 ; AMOUNT TO ADJUST OCTAVE UP OR DOWN
MSGBAN .DB "Tune Player for RomWBW v3.1, 25-Apr-2020",0
MSGUSE .DB "Copyright (C) 2020, Wayne Warthen, GNU GPL v3",13,10
.DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10
.DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [--hbios]",0
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [--hbios] [+tn|-tn]",0
MSGBIO .DB "Incompatible BIOS or version, "
.DB "HBIOS v", '0' + RMJ, ".", '0' + RMN, " required",0
MSGPLT .DB "Hardware error, system not supported!",0
@@ -2003,74 +2004,74 @@ LOUT2 CALL NORMIO
RET ; AND DONE
PLAYVIAHBIOS:
; CHANNEL 0
LD HL, AYREGS + AmplA
LD DE, AYREGS + TonA
LD B, 0
CALL PLAYNOTE
;
; CHANNEL 0 (LEFT)
;
LD BC, (BF_SNDVOL*256)+0 ; SET VOLUME
LD A, (AYREGS + AmplA) ; DEVICE 0
ADD A,A ; GET 4-BIT
; CHANNEL 1
LD HL, AYREGS + AmplB
LD DE, AYREGS + TonB
LD B, 1
CALL PLAYNOTE
; CHANNEL 2
LD HL, AYREGS + AmplC
LD DE, AYREGS + TonC
LD B, 2
JP PLAYNOTE
PLAYNOTE:
PUSH BC ; CHANNEL IN B
PUSH DE ; PERIOD ADDR IN DE
LD A, (HL)
ADD A,A ; GET 4-BIT
ADD A,A ; VOLUME 0-15
ADD A,A ; AND CONVERT
ADD A,A ; TO HBIOS
ADD A,A ; TO HBIOS
LD L, A ; RANGE 0-255
LD BC, (BF_SNDVOL*256)+0 ; SET VOLUME
RST 08
;
LD BC, (BF_SNDPRD*256)+0 ; SET PERIOD
LD HL, (AYREGS+TonA) ; DEVICE 0
POP HL ; RESTORE PERIOD ADDR
LD A, (HL) ; DEVICE 0
INC HL
LD H, (HL)
LD L, A
LD A, H ; GET 12-BIT ONE PERIOD
AND $0F ; MASK OFF HIGH
LD H, A ; NIBBLE
RST 08
;
LD BC, (BF_SNDPLAY*256)+0 ; PLAY
LD D, 0 ; DEVICE 0
RST 08 ; CHANNEL 0
;
; CHANNEL 1 (MIDDLE)
;
LD BC, (BF_SNDVOL*256)+0 ; SET VOLUME
LD A, (AYREGS + AmplB) ; DEVICE 0
ADD A,A ; GET 4-BIT
ADD A,A ; VOLUME 0-15
ADD A,A ; AND CONVERT
ADD A,A ; TO HBIOS
LD L, A ; RANGE 0-255
RST 08
;
LD H, A ; NIBBLE
LD A, (OCTAVEADJ)
OR A
JR Z, PLAYNOTE3 ; NO OCTAVE ADJUSTMENT
BIT 7, A
JR Z, PLAYNOTE2 ; OCTAVE DOWN ADJUSTMENT
PLAYNOTE1:
ADD HL, HL ; MULTIPLE BY 2 FOR EACH OCTAVE
INC A
JR NZ, PLAYNOTE1
JR PLAYNOTE3
PLAYNOTE2:
SRL H ; DIVIDE BY 2 FOR EACH OCTAVE
RR L
DEC A
JR NZ, PLAYNOTE2
PLAYNOTE3
LD BC, (BF_SNDPRD*256)+0 ; SET PERIOD
LD HL, (AYREGS+TonB) ; DEVICE 0
ld A, H ; GET 12-BIT ONE PERIOD
AND $0F ; MASK OFF HIGH
LD H, A ; NIBBLE
RST 08
;
POP DE ; RESTORE CHANNEL IN D (FROM B)
LD BC, (BF_SNDPLAY*256)+0 ; PLAY
LD D, 1 ; DEVICE 0
RST 08 ; CHANNEL 0
;
; CHANNEL 2 (RIGHT)
;
LD BC, (BF_SNDVOL*256)+0 ; SET VOLUME
LD A, (AYREGS + AmplC) ; DEVICE 0
ADD A,A ; GET 4-BIT
ADD A,A ; VOLUME 0-15
ADD A,A ; AND CONVERT
ADD A,A ; TO HBIOS
LD L, A ; RANGE 0-255
RST 08
;
LD BC, (BF_SNDPRD*256)+0 ; SET PERIOD
LD HL, (AYREGS+TonC) ; DEVICE 0
LD A, H ; GET 12-BIT ONE PERIOD
AND $0F ; MASK OFF HIGH
LD H, A ; NIBBLE
RST 08
;
LD BC, (BF_SNDPLAY*256)+0 ; PLAY
LD D, 2 ; DEVICE 0
RST 08 ; CHANNEL 0
RET
#ENDIF
#IF ACBBAC

View File

@@ -1,5 +1,4 @@
CLI_ABRT_IF_OPT_FIRST:
LD A, (FCB+1)
CP '-' ; OPTION FIRST OR - MISSING FILENAME?
@@ -11,7 +10,7 @@ CLI_HAVE_HBIOS_SWITCH:
LD DE, HBIOSOPT
CALL STRINDEX
JR NZ, CLI_HAVE_HBIOS_SWITCH1
OR $FF ; MATCHED --HBIOS
OR $FF ; MATCHED --HBIOS
LD (HBIOSMD), A
LD BC,(BF_SYSGET*256)+BF_SND
RST 08 ; CHECK WE HAVE
@@ -35,4 +34,53 @@ CLI_ABRT_UNSUPPFILTYP:
CLI_ABRT_UNSUPPFILTYP1:
POP AF
RET
RET
CLI_OCTAVE_ADJST: ; SEARCH FOR OCTAVE ADJUSTMENT SWITCH (-n or +n)
LD HL, CLIARGS ; TEST FOR --HBIOS ON COMMAND LINE
LD DE, DOWN1
CALL STRINDEX
JR NZ, CLI_OCTAVE_ADJST1
LD A, -1
JR CLI_OCTAVE_ADJST5
CLI_OCTAVE_ADJST1:
LD HL, CLIARGS ; TEST FOR --HBIOS ON COMMAND LINE
LD DE, DOWN2
CALL STRINDEX
JR NZ, CLI_OCTAVE_ADJST2
LD A, -2
JR CLI_OCTAVE_ADJST5
CLI_OCTAVE_ADJST2:
LD HL, CLIARGS ; TEST FOR --HBIOS ON COMMAND LINE
LD DE, UP1
CALL STRINDEX
JR NZ, CLI_OCTAVE_ADJST3
LD A, 1
JR CLI_OCTAVE_ADJST5
CLI_OCTAVE_ADJST3:
LD HL, CLIARGS ; TEST FOR --HBIOS ON COMMAND LINE
LD DE, UP2
CALL STRINDEX
JR NZ, CLI_OCTAVE_ADJST4
LD A, 2
JR CLI_OCTAVE_ADJST5
CLI_OCTAVE_ADJST4:
LD A, 0
CLI_OCTAVE_ADJST5:
LD (OCTAVEADJ), A
RET
HBIOSOPT: .DB "--HBIOS", 0
DOWN1 .DB "-t1", 0 ; DOWN AN OCTAVE
DOWN2 .DB "-t2", 0 ; DOWN TWO OCTAVE
UP1 .DB "+t1", 0 ; UP AN OCTAVE
UP2 .DB "+t2", 0 ; UP TWO OCTAVE

View File

@@ -1358,6 +1358,8 @@ DSK_MBR0:
;
#IFDEF PLTWBW
; SWITCH TO BIOS BANK TO ACCESS DISK BUFFER
LD (STKSAV),SP ; SAVE CUR STACK
LD SP,XSTACK ; NEW STACK IN HI MEM
LD A,(HB_CURBNK) ; GET CUR BANK
PUSH AF ; SAVE CUR BANK
LD A,(BNKBIOS) ; BIOS BANK
@@ -1370,7 +1372,12 @@ DSK_MBR0:
LD A,H ; PREV BANK TO A
CALL HB_BNKSEL ; SELECT IT
POP AF ; ORIGINAL RESULT BACK
LD SP,(STKSAV) ; RESTORE ORIGINAL STACK
RET
.FILL 32,0
XSTACK .EQU $
#ENDIF
;
DSK_MBR1:
@@ -1700,6 +1707,7 @@ CCPBUF .DW 0 ; ADDRESS OF CCP BUF IN BIOS BANK
MEDID .DB 0 ; TEMP STORAGE FOR MEDIA ID
SLICE .DB 0 ; CURRENT SLICE
SPS .DW 0 ; SECTORS PER SLICE
STKSAV .DW 0 ; TEMP SAVED STACK POINTER
;
#IFDEF PLTWBW
BNKBIOS .DB 0 ; BIOS BANK ID

View File

@@ -191,7 +191,7 @@ dpb$max:
db 5 ; bsh: block shift factor
db 31 ; blm: block mask
db 1 ; exm: extent mask
dw 2047 ; dsm: total storage in blocks - 1 = (8mb / 4k bls) - 1 = 2047
dw 2048 - 1 ; dsm: total storage in blocks - 1 = (8mb / 4k bls) - 1 = 2047
dw 1024 - 1 ; drm: dir entries - 1
db 11111111b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
@@ -211,7 +211,7 @@ dpb$rom: ; 384K ROM Drive
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
db 11110000b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
dw 8000h ; cks: directory check vector size - permanent storage = 8000H
dw 8040h ; cks: directory check vector size - permanent storage = 8000H
dw 0 ; off: reserved tracks = 16 trks * (16 trks * 16 heads * 16 secs * 512 bytes) = 128k
db 2 ; psh: 2 for 512 byte sectors
db 3 ; phm: (512 / 128) - 1
@@ -226,7 +226,7 @@ dpb$ram: ; 256K RAM Drive
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
db 11110000b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
dw 8000h ; cks: directory check vector size - permanent storage = 8000H
dw 8040h ; cks: directory check vector size - permanent storage = 8000H
dw 0 ; off: reserved tracks = 16 trks * (16 trks * 16 heads * 16 secs * 512 bytes) = 128k
db 2 ; psh: 2 for 512 byte sectors
db 3 ; phm: (512 / 128) - 1
@@ -236,11 +236,11 @@ dpb$rf: ; 4MB RAM Floppy Drive
db 4 ; bsh: block shift factor
db 15 ; blm: block mask
db 0 ; exm: extent mask
dw 2047 ; dsm: total storage in blocks - 1 = (4mb / 2k bls) - 1 = 2047
dw 255 ; drm: dir entries - 1 = 256 - 1 = 255
dw 2048 - 1 ; dsm: total storage in blocks - 1 = (4mb / 2k bls) - 1 = 2047
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
db 11110000b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
dw 8000h ; cks: directory check vector size - permanent storage = 8000H
dw 8040h ; cks: directory check vector size - permanent storage = 8000H
dw 0 ; off: reserved tracks = 0 trks
db 2 ; psh: 2 for 512 byte sectors
db 3 ; phm: (512 / 128) - 1
@@ -250,7 +250,7 @@ dpb$hd: ; 8MB Hard Disk Drive w/ 512 dir entries
db 5 ; bsh: block shift factor
db 31 ; blm: block mask
db 1 ; exm: extent mask
dw 2047 ; dsm: total storage in blocks - 1 = (8mb / 4k bls) - 1 = 2047
dw 2048 - 1 ; dsm: total storage in blocks - 1 = (8mb / 4k bls) - 1 = 2047
dw 512 - 1 ; drm: dir entries - 1 = 512 - 1 = 511
db 11110000b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
@@ -264,8 +264,8 @@ dpb$fd720: ; 3.5" DS/DD Floppy Drive (720K)
db 4 ; bsh: block shift factor
db 15 ; blm: block mask
db 0 ; exm: extent mask
dw 350 ; dsm: total storage in blocks - 1 blk = ((720k - 18k off) / 2k bls) - 1 = 350
dw 127 ; drm: dir entries - 1 = 128 - 1 = 127
dw 351 - 1 ; dsm: total storage in blocks - 1 blk = ((720k - 18k off) / 2k bls) - 1 = 350
dw 128 - 1 ; drm: dir entries - 1 = 128 - 1 = 127
db 11000000b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
dw 32 ; cks: directory check vector size = 128 / 4
@@ -278,8 +278,8 @@ dpb_fd144: ; 3.5" DS/HD Floppy Drive (1.44M)
db 4 ; bsh: block shift factor
db 15 ; blm: block mask
db 0 ; exm: extent mask
dw 710 ; dsm: total storage in blocks - 1 blk = ((1,440k - 18k off) / 2k bls) - 1 = 710
dw 255 ; drm: dir entries - 1 = 256 - 1 = 255
dw 711 - 1 ; dsm: total storage in blocks - 1 blk = ((1,440k - 18k off) / 2k bls) - 1 = 710
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
db 11110000b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
dw 64 ; cks: directory check vector size = 256 / 4
@@ -292,8 +292,8 @@ dpb_fd360: ; 5.25" DS/DD Floppy Drive (360K)
db 4 ; bsh: block shift factor
db 15 ; blm: block mask
db 1 ; exm: extent mask
dw 170 ; dsm: total storage in blocks - 1 blk = ((360k - 18k off) / 2k bls) - 1 = 170
dw 127 ; drm: dir entries - 1 = 128 - 1 = 127
dw 171 - 1 ; dsm: total storage in blocks - 1 blk = ((360k - 18k off) / 2k bls) - 1 = 170
dw 128 - 1 ; drm: dir entries - 1 = 128 - 1 = 127
db 11110000b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
dw 32 ; cks: directory check vector size = 128 / 4
@@ -306,8 +306,8 @@ dpb_fd120: ; 5.25" DS/HD Floppy Drive (1.2M)
db 4 ; bsh: block shift factor
db 15 ; blm: block mask
db 0 ; exm: extent mask
dw 591 ; dsm: total storage in blocks - 1 blk = ((1,200k - 15k off) / 2k bls) - 1 = 591
dw 255 ; drm: dir entries - 1 = 256 - 1 = 255
dw 592 - 1 ; dsm: total storage in blocks - 1 blk = ((1,200k - 15k off) / 2k bls) - 1 = 591
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
db 11110000b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
dw 64 ; cks: directory check vector size = 256 / 4
@@ -320,8 +320,8 @@ dpb_fd111: ; 8" DS/DD Floppy Drive (1.11M)
db 4 ; bsh: block shift factor
db 15 ; blm: block mask
db 0 ; exm: extent mask
dw 569 ; dsm: total storage in blocks - 1 blk = ((1,155k - 15k off) / 2k bls) - 1 = 569
dw 255 ; drm: dir entries - 1 = 256 - 1 = 255
dw 570 - 1 ; dsm: total storage in blocks - 1 blk = ((1,155k - 15k off) / 2k bls) - 1 = 569
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
db 11110000b ; al0: dir blk bit map, first byte
db 00000000b ; al1: dir blk bit map, second byte
dw 64 ; cks: directory check vector size = 256 / 4
@@ -650,6 +650,7 @@ dsk$rw$retry:
jr dsk$rw9 ; do the disk I/O
dsk$rw2:
; LBA I/O
push de ; save hiword of LBA
push hl ; save loword of LBA

View File

@@ -57,7 +57,7 @@ ALTBNKSM = Y
ALTBNKSN = Y
ALTBNKSO = Y
ALTBNKSP = Y
NDIRRECA = 02
NDIRRECA = 08
NDIRRECB = 00
NDIRRECC = 00
NDIRRECD = 00
@@ -73,7 +73,7 @@ NDIRRECM = 00
NDIRRECN = 00
NDIRRECO = 00
NDIRRECP = 00
NDTARECA = 02
NDTARECA = 10
NDTARECB = 00
NDTARECC = 00
NDTARECD = 00

View File

@@ -27,9 +27,12 @@
;
#INCLUDE "../ver.inc"
;
; BELOW, SYS_END MUST BE SET TO THE SIZE OF CPMLDR.BIN + SYS_LOC. IF
; THE SIZE OF CPMLDR.BIN CHANGES, SYS_END MUST BE UPDATED!!!
;
SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE
SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE
SYS_END .EQU $1580 + SYS_LOC ; ENDING ADDRESS OF SYSTEM IMAGE
;
SEC_SIZE .EQU 512 ; DISK SECTOR SIZE
BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE

View File

@@ -949,6 +949,24 @@ accurately pace the sound file output. If no system timer is
available, a delay loop is calculated instead. The delay loop will not
be as accurate as the system timer.
There are two modes of operations. A direct hardware interface for the
AY-3-8910 or YM2149 chips, or a compatibility layer thru HBIOS supporting
the SN76489 chip.
By default the application will attempt to interface directly to the sound
chip. The optional argument `--hbios` supplied after the filename, will
enable the application to use the HBIOS sound driver.
The HBIOS mode also support other switch as desribed below.
| Switch | Description |
| ----------- | ------------------------------------------------------ |
| `--hbios` | Utilise HBIOS' sound driver |
| `+t1` | Play tune an octave higher |
| `+t2` | Play tune two octaves higher |
| `-t1` | Play tune an octave lower |
| `-t2` | Play tune two octaves lower |
All RomWBW operating system boot disks include a selection of sound
files in user area 3.
@@ -960,4 +978,4 @@ software was adapted and embedded from pre-existing sources. The YM
player code is from MYMPLAY 0.4 by Lieves!Tuore and the PT player code
is (c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>.
The source code is provided in the RomWBW distribution.
The source code is provided in the RomWBW distribution.

View File

@@ -1392,20 +1392,38 @@ supplied is beyond driver capabilities, register A will be set to $FF.
| _Entry Parameters_
| B: 0x53
| C: Audio Device Unit ID
| L: Note (0 to 255 quarter notes)
| HL: Value of note to play
| _Returned Values_
| A: Status (0=OK, else error)
This function sets the sound chip period parameter according to
standardized notes.
This function sets the sound chip period parameter with steps of quarter
of a semitone. The value of 0 (lowest) corresponds to Bb/A# in octave 0.
The value corresponds to standard musical notes. The value allows
for selection of a quarter of a semitone by giving a value between 0
and up to the drivers maximum supported value. The lowest note is (0).
Increase by steps of 4 to select the next corresponding note.
For the SN76489 chip, 0 corresponds to note A1# and the value 249 is
the maximum supported value, and it corresponds to note C7.
Increase by steps of 48 to select the same note in next octave.
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 following table shows the mapping of the input value in HL
to the corresponding octave and note.
| Note | Octave 0 | Octave 1 | Octave 2 | Octave 3 | Octave 4 | Octave 5 | Octave 6 |
|-------|----------|----------|----------|----------|----------|----------|----------|
| Bb/A# | 0 | 48 | 96 | 144 | 192 | 240 | 288 |
| B | 4 | 52 | 100 | 148 | 196 | 244 | 292 |
| C | 8 | 56 | 104 | 152 | 200 | 248 | 296 |
| C#/Db | 12 | 60 | 108 | 156 | 204 | 252 | 300 |
| D | 16 | 64 | 112 | 160 | 208 | 256 | 304 |
| Eb/D# | 20 | 68 | 116 | 164 | 212 | 260 | 308 |
| E | 24 | 72 | 120 | 168 | 216 | 264 | 312 |
| F | 28 | 76 | 124 | 172 | 220 | 268 | 316 |
| F#/Gb | 32 | 80 | 128 | 176 | 224 | 272 | 320 |
| G | 36 | 84 | 132 | 180 | 228 | 276 | 324 |
| Ab/G# | 40 | 88 | 136 | 184 | 232 | 280 | 328 |
| A | 44 | 92 | 140 | 188 | 236 | 284 | 332 |
### Function 0x54 -- Sound Play (SNDPLAY)

View File

@@ -72,4 +72,4 @@ AUD_NOTE2:
LD H, $FF ; OTHERWISE RETURN -1 PERIOD (ERROR)
LD L, $FF
RET
#ENDIF
#ENDIF

View File

@@ -4,6 +4,10 @@
;
;======================================================================
;
#include "cfg_state.inc"
AY_RCSND .EQU 0 ; 0 = EB MODULE, 1=MF MODULE
;
#IF (AYMODE == AYMODE_SCG)
@@ -123,13 +127,46 @@ AY_FND: LD IY, AY_IDAT ; SETUP FUNCTION TABLE
LD DE,(AY_R3CHBP*256)+$00
CALL AY_WRTPSG ; R03 = $00 = XXXX0000
;
CALL LDELAY ; HALF SECOND DELAY
;
LD E,$00 ; SET VOLUME OFF
CALL AY_SETV ; ON ALL CHANNELS
#IF SYSTIMEN
LD A, TICKFREQ / 3 ; SCHEDULE IN 1/3 SECOND TO TURN OFF SOUND
LD (AY_TIMTIK), A
LD HL, (VEC_TICK + 1) ; GET CUR SECONDS VECTOR
LD (AY_TIMHOOK), HL ; SAVE IT INTERNALLY
LD HL, AY_TIMER ; INSTALL TIMER HOOK HANDLER
LD (VEC_TICK + 1), HL
#ELSE
CALL LDELAY ; HALF SECOND DELAY
LD E,$00 ; SET VOLUME OFF
CALL AY_SETV ; ON ALL CHANNELS
#ENDIF
;
XOR A ; SUCCESSFULL INIT
RET
#IF SYSTIMEN
AY_TIMER:
LD A, (AY_TIMTIK)
DEC A
LD (AY_TIMTIK), A
JR NZ, AY_TIMER1
LD HL, (AY_TIMHOOK) ; REMOVE US FROM THE TIMER HOOKS LIST
LD (VEC_TICK + 1), HL
LD E,$00 ; SET VOLUME OFF
CALL AY_SETV ; ON ALL CHANNELS
AY_TIMER1:
JP 0 ; OVERWRITTEN WITH NEXT HANDLER
AY_TIMHOOK: .EQU $ - 2
AY_TIMTIK .DB 0 ; COUNT DOWN TO FINISH BOOT BEEP
#ENDIF
;
;======================================================================
; INITIALIZE DEVICE

View File

@@ -0,0 +1,30 @@
#IFNDEF CFG_STATE
#DEFINE CFG_STATE
SYSTIMEN .EQU FALSE
#IF (CTCENABLE & INTMODE == 2 & CTCTIMER)
SYSTIMEN .SET TRUE
#ENDIF
#IF (TMSENABLE & INTMODE == 1 & TMSTIMENABLE)
SYSTIMEN .SET TRUE
#ENDIF
#IF (INTMODE == 1 & PLATFORM == PLT_SBC & HTIMENABLE)
SYSTIMEN .SET TRUE
#ENDIF
#IF (INTMODE == 2 & CPUFAM == CPU_Z180)
SYSTIMEN .SET TRUE
#ENDIF
.ECHO "TIMER INTERRUPT "
#IF SYSTIMEN
.ECHO "ACTIVE\n"
#ELSE
.ECHO "NOT ACTIVE\n"
#ENDIF
#ENDIF

View File

@@ -27,9 +27,12 @@
;
#INCLUDE "../ver.inc"
;
; BELOW, SYS_END MUST BE SET TO THE SIZE OF CPMLDR.BIN + SYS_LOC. IF
; THE SIZE OF CPMLDR.BIN CHANGES, SYS_END MUST BE UPDATED!!!
;
SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE
SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE
SYS_END .EQU $1580 + SYS_LOC ; ENDING ADDRESS OF SYSTEM IMAGE
;
SEC_SIZE .EQU 512 ; DISK SECTOR SIZE
BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE

View File

@@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.7"
#DEFINE BIOSVER "3.1.1-pre.8"

View File

@@ -3,5 +3,5 @@ rmn equ 1
rup equ 1
rtp equ 0
biosver macro
db "3.1.1-pre.7"
db "3.1.1-pre.8"
endm