Browse Source

Merge pull request #41 from wwarthen/master

Resync
pull/60/head
b1ackmai1er 6 years ago
committed by GitHub
parent
commit
9ad14e2392
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      Doc/ChangeLog.txt
  2. 6
      Source/Apps/Timer.asm
  3. 17
      Source/HBIOS/dbgmon.asm
  4. 21
      Source/HBIOS/hbios.asm
  5. 14
      Source/HBIOS/std.asm
  6. 26
      Source/HBIOS/util.asm

2
Doc/ChangeLog.txt

@ -28,7 +28,7 @@ Version 2.9.2
- WBW: Updated FAT to add MD and FORMAT commands
- WBW: Add CP/M 3 (experimental)
- M?T: Support Shift register SPI WIZNET for RC2014
- WBW: Added seconds register in HBIOS
- P?S: Added seconds register in HBIOS
Version 2.9.1
-------------

6
Source/Apps/Timer.asm

@ -139,6 +139,10 @@ process1a:
ld c,bf_sysgetsecs ; SECONDS subfunction
rst 08 ; call HBIOS, DE:HL := seconds value
call prthex32 ; display it
ld a,'.' ; fraction separator
call prtchr ; print it
ld a,c ; get fractional component
call prthex ; print it
ld de,strsec ; tag
call prtstr ; display it
;
@ -476,7 +480,7 @@ stack .equ $ ; stack top
;
; Messages
;
msgban .db "TIMER v1.1, 8-Nov-2019",13,10
msgban .db "TIMER v1.1, 10-Nov-2019",13,10
.db "Copyright (C) 2019, Wayne Warthen, GNU GPL v3",0
msguse .db "Usage: TIMER [/C] [/?]",13,10
.db " ex. TIMER (display current timer value)",13,10

17
Source/HBIOS/dbgmon.asm

@ -42,6 +42,7 @@ BUFLEN .EQU 40 ; INPUT LINE LENGTH
UART_ENTRY:
LD SP,MON_STACK ; SET THE STACK POINTER
EI ; INTS OK NOW
LD HL,UART_ENTRY ; RESTART ADDRESS
CALL INITIALIZE ; INITIALIZE SYSTEM
LD HL,TXT_READY ; POINT AT TEXT
@ -108,9 +109,14 @@ SERIALCMDLOOP:
;__INITIALIZE_________________________________________________________________
;
; INITIALIZE SYSTEM
; AT ENTRY, HL SHOULD HAVE ADDRESS OF DESIRED RESTART ADDRESS
;_____________________________________________________________________________
;
INITIALIZE:
LD A,$C3 ; JP OPCODE
LD (0),A ; STORE AT $0000
LD (1),HL ; STORE AT $0001
#IF (BIOS == BIOS_UNA)
; INSTALL UNA INVOCATION VECTOR FOR RST 08
LD A,$C3 ; JP INSTRUCTION
@ -932,6 +938,7 @@ KY_PW .EQU KY_BK ; USE [BW] FOR [PW] (PORT WRITE)
DSKY_ENTRY:
LD SP,MON_STACK ; SET THE STACK POINTER
EI ; INTS OK NOW
LD HL,DSKY_ENTRY ; RESTART ADDRESS
CALL INITIALIZE
;
;__FRONT_PANEL_STARTUP________________________________________________________
@ -1381,5 +1388,13 @@ MON_STACK .EQU $
.ECHO "DBGMON space remaining: "
.ECHO SLACK
.ECHO " bytes.\n"
;
; DBGMON CURRENTLY OCCUPIES $F000-$FDFF BECAUSE THE
; HBIOS PROXY OCCUPIES $FE00-$FFFF. HOWEVER THE DBGMON
; IMAGE MUST OCCUPY A FULL $1000 BYTES IN THE ROM.
; BELOW WE JUST PAD OUT THE IMAGE BY $200 SO IT
; OCCUPIES THE FULL $1000 BYTES IN ROM.
;
.FILL $200,$00
;
.END

21
Source/HBIOS/hbios.asm

@ -1245,13 +1245,15 @@ HB_CPU1:
LD (IVT(INT_TIM0)),HL ; Z180 TIMER 0
; SETUP PERIODIC TIMER INTERRUPT ON TIMER 0
LD HL,(CB_CPUKHZ) ; 50HZ = 18432000 / 20 / 50 / X, SO X = CPU KHZ
LD B,0
LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER
; LD HL,CPUOSC/TICKSPERSEC/20-1 ; 50HZ = 18432000 / 50 / 20
LD HL,(CPUKHZ) ; 50HZ = 18432000 / 20 / 50 / X, SO X = CPU KHZ
LD B,0 ; 16-BIT I/O ADDRESS
LD C,Z180_TMDR0L ; INITIALIZE TIMER 0 DATA REGISTER
OUT (C),L
INC C
OUT (C),H
LD C,Z180_TMDR0L ; INITIALIZE TIMER 0 DATA REGISTER
DEC HL ; RELOAD OCCURS *AFTER* ZERO
LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER
OUT (C),L
INC C
OUT (C),H
@ -2396,12 +2398,17 @@ SYS_GETTIMER:
; GET SECONDS
; RETURNS:
; DE:HL: SECONDS VALUE (32 BIT)
; C: NUM TICKS WITHIN CURRENT SECOND
;
SYS_GETSECS:
LD HL,HB_SECS
HB_DI
CALL LD32
LD A,(HB_SECTCK)
HB_EI
NEG ; CONVERT DOWNCOUNTER TO UPCOUNTER
ADD A,TICKSPERSEC
LD C,A
XOR A
RET
;
@ -2520,7 +2527,7 @@ SYS_SETTIMER:
;
; SET SECS
; ON ENTRY:
; DE:HL: TIMER VALUE (32 BIT)
; DE:HL: SECONDS VALUE (32 BIT)
;
SYS_SETSECS:
LD BC,HB_SECS
@ -2739,7 +2746,7 @@ HB_TIMINT2:
DEC (HL) ; COUNTDOWN 50 TICKS
JR NZ,HB_TIMINT3 ; NOT ZERO YET, DONE FOR THIS CYCLE
; 50 TICKS HAVE ELAPSED
LD A,50 ; 50 TICKS PER SECOND
LD A,TICKSPERSEC ; 50 TICKS PER SECOND
LD (HL),A ; RESET COUNTDOWN REGISTER
; INCREMENT SECONDS COUNTER
LD HL,HB_SECS ; POINT TO SECONDS COUNTER
@ -4049,7 +4056,7 @@ IDLECOUNT .DB 0
HEAPCURB .DW 0 ; MARK HEAP ADDRESS AFTER INITIALIZATION
;
HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER
HB_SECTCK .DB 50 ; TICK COUNTER FOR SECONDS
HB_SECTCK .DB TICKSPERSEC ; TICK COUNTER FOR FRACTIONAL SECONDS
HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER
;
HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG

14
Source/HBIOS/std.asm

@ -297,20 +297,22 @@ FORCECON .EQU 0 ; DEFAULT IS TO FOLLOW NORMAL SEQUENCE
;
; SETUP DEFAULT CPU SPEED VALUES
;
CPUKHZ .EQU CPUOSC / 1000 ; CPU FREQ IN KHZ
CPUKHZ .EQU CPUOSC / 1000 ; CPU FREQ IN KHZ
;
#IF (BIOS == BIOS_WBW)
#IF (CPUFAM == CPU_Z180)
#IF (Z180_CLKDIV == 0)
CPUKHZ .SET CPUKHZ / 2 ; ADJUST FOR HALF SPEED OPERATION
CPUKHZ .SET CPUKHZ / 2 ; ADJUST FOR HALF SPEED OPERATION
#ENDIF
#IF (Z180_CLKDIV == 2)
CPUKHZ .SET CPUKHZ * 2 ; ADJUST FOR DOUBLE SPEED OPERATION
CPUKHZ .SET CPUKHZ * 2 ; ADJUST FOR DOUBLE SPEED OPERATION
#ENDIF
#ENDIF
#ENDIF
;
CPUMHZ .EQU CPUKHZ / 1000 ; CPU FREQ IN MHZ
CPUMHZ .EQU CPUKHZ / 1000 ; CPU FREQ IN MHZ
;
TICKSPERSEC .EQU 50
;
; MEMORY BANK CONFIGURATION
;
@ -371,8 +373,8 @@ CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS)
LDR_SIZ .EQU $0E00
MON_LOC .EQU $C000 ; LOCATION OF MONITOR FOR RUNNING SYSTEM
MON_SIZ .EQU $1000 ; SIZE OF MONITOR BINARY IMAGE
MON_LOC .EQU $F000 ; LOCATION OF MONITOR FOR RUNNING SYSTEM
MON_SIZ .EQU $0E00 ; SIZE OF MONITOR BINARY IMAGE
MON_END .EQU MON_LOC + MON_SIZ ; END OF MONITOR
BAS_LOC .EQU $0200 ; NASCOM BASIC

26
Source/HBIOS/util.asm

@ -258,7 +258,7 @@ DB_BLKRD:
LD C,16 ; SET FOR 16 LOCS
PUSH HL ; SAVE STARTING HL
DB_NXTONE:
LD A,(HL) ; GET BYTE
LD A,(HL) ; GET BYTE
CALL PRTHEXBYTE ; PRINT IT
CALL PC_SPACE ;
DB_UPDH:
@ -789,7 +789,7 @@ DIV32X8:
XOR A
LD B,32
DIV32X8A:
ADD HL,HL
ADD HL,HL
RL E
RL D
RLA
@ -798,7 +798,7 @@ DIV32X8A:
SUB C
INC L
DIV32X8B:
DJNZ DIV32X8A
DJNZ DIV32X8A
RET
;
; FILL MEMORY AT HL WITH VALUE A, LENGTH IN BC, ALL REGS USED
@ -984,19 +984,15 @@ SUB32:
; INCREMENT 32 BIT BINARY AT ADDRESS
;
INC32HL:
PUSH HL
PUSH BC
LD B,4
INC32HL1:
INC (HL)
RET NZ
INC HL
JR NZ,INC32HL2
DJNZ INC32HL1
INC32HL2:
POP BC
POP HL
INC (HL)
RET NZ
INC HL
INC (HL)
RET NZ
INC HL
INC (HL)
RET

Loading…
Cancel
Save