Skip to content

Commit

Permalink
Merge pull request #54 from feilipu/master
Browse files Browse the repository at this point in the history
hbios - system ticks
  • Loading branch information
wwarthen committed Nov 10, 2019
2 parents dc9dd8e + 976ef85 commit 9895c4d
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 20 deletions.
1 change: 1 addition & 0 deletions Source/HBIOS/cfg_master.asm
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
;
CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ
TICKSPERSEC .EQU 50 ; TICKS PER SECOND
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
Expand Down
23 changes: 18 additions & 5 deletions Source/HBIOS/hbios.asm
Original file line number Diff line number Diff line change
Expand Up @@ -1245,7 +1245,7 @@ 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 HL,CPUOSC/TICKSPERSEC/20-1 ; 50HZ = 18432000 / 50 / 20
LD B,0
LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER
OUT (C),L
Expand Down Expand Up @@ -2396,12 +2396,25 @@ SYS_GETTIMER:
; GET SECONDS
; RETURNS:
; DE:HL: SECONDS VALUE (32 BIT)
; C TICKS OF TICKSPERSEC (8 BIT)
;
SYS_GETSECS:
LD HL,HB_SECS
LD HL,HB_SECTCK
LD A,TICKSPERSEC
HB_DI
CALL LD32
SUB (HL)
INC HL ; NOW POINTING TO HB_SECS
LD C,(HL)
INC HL
LD B,(HL)
INC HL
LD E,(HL)
INC HL
LD D,(HL)
HB_EI
LD L,C
LD H,B
LD C,A
XOR A
RET
;
Expand Down Expand Up @@ -2739,7 +2752,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
Expand Down Expand Up @@ -4049,7 +4062,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
Expand Down
26 changes: 11 additions & 15 deletions Source/HBIOS/util.asm
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -789,7 +789,7 @@ DIV32X8:
XOR A
LD B,32
DIV32X8A:
ADD HL,HL
ADD HL,HL
RL E
RL D
RLA
Expand All @@ -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
Expand Down Expand Up @@ -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


0 comments on commit 9895c4d

Please sign in to comment.