mirror of
https://github.com/ksherlock/host-modemworks.git
synced 2024-06-14 06:29:28 +00:00
add Time module.
This commit is contained in:
parent
dd8757d460
commit
00d0ba07ea
2
Makefile
2
Makefile
|
@ -7,7 +7,7 @@ MAKEBIN = mpw MakeBinIIgs
|
||||||
ASM = mpw AsmIIgs
|
ASM = mpw AsmIIgs
|
||||||
LINK = mpw LinkIIgs
|
LINK = mpw LinkIIgs
|
||||||
|
|
||||||
TARGETS = ModemKEGS SerialKEGS
|
TARGETS = ModemKEGS SerialKEGS TimeKEGS
|
||||||
|
|
||||||
all: $(TARGETS)
|
all: $(TARGETS)
|
||||||
|
|
||||||
|
|
377
TimeKEGS.aii
Normal file
377
TimeKEGS.aii
Normal file
|
@ -0,0 +1,377 @@
|
||||||
|
;
|
||||||
|
; TimeTool. needed because serial tool use of poll sleeping screws up timing.
|
||||||
|
;
|
||||||
|
|
||||||
|
machine m65816
|
||||||
|
case on
|
||||||
|
string asis
|
||||||
|
|
||||||
|
longa off
|
||||||
|
longi off
|
||||||
|
|
||||||
|
include 'OMM.equ'
|
||||||
|
include 'TimeTool.equ'
|
||||||
|
|
||||||
|
macro
|
||||||
|
&l cstr &x
|
||||||
|
&l dc.b &x, 0
|
||||||
|
endm
|
||||||
|
|
||||||
|
|
||||||
|
macro
|
||||||
|
native
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
rep #$30
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
endm
|
||||||
|
|
||||||
|
|
||||||
|
macro
|
||||||
|
nativep
|
||||||
|
php
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
plp
|
||||||
|
rep #$30
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
endm
|
||||||
|
|
||||||
|
macro
|
||||||
|
emulated
|
||||||
|
sec
|
||||||
|
xce
|
||||||
|
longa off
|
||||||
|
longi off
|
||||||
|
endm
|
||||||
|
|
||||||
|
|
||||||
|
macro
|
||||||
|
&l bsr &x
|
||||||
|
&l per @ok-1
|
||||||
|
brl &x
|
||||||
|
@ok
|
||||||
|
mend
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
a1 equ $3c
|
||||||
|
prmtbl equ $e0
|
||||||
|
lowtr equ $9b
|
||||||
|
|
||||||
|
FRMNUM equ $dd67
|
||||||
|
GETADR equ $e752
|
||||||
|
CHKCLS equ $deb8
|
||||||
|
CYAREG equ $c036
|
||||||
|
|
||||||
|
WDM_ID equ $fe
|
||||||
|
|
||||||
|
proc proc
|
||||||
|
hVERS dc.w $0000
|
||||||
|
hID dc.w 'tt'
|
||||||
|
hSIZE dc.w end-start
|
||||||
|
hORG dc.w start
|
||||||
|
hAMPC dc.w amperc
|
||||||
|
hKIND dc.w $0000
|
||||||
|
hRSRV1 dc.w $0000
|
||||||
|
hRSRV2 dc.w $0000
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
cmp #MSG_INIT
|
||||||
|
beq do_life
|
||||||
|
cmp #MSG_QUIT
|
||||||
|
beq do_life
|
||||||
|
cmp #MSG_AMPR ;ampersand call?
|
||||||
|
beq do_ampr ;yes
|
||||||
|
cmp #MSG_INFO ;get info string?
|
||||||
|
beq do_info
|
||||||
|
cmp #MSG_USER
|
||||||
|
beq do_user
|
||||||
|
rts
|
||||||
|
|
||||||
|
do_info
|
||||||
|
lda a_info
|
||||||
|
sta a1
|
||||||
|
lda a_info+1
|
||||||
|
sta a1+1
|
||||||
|
rts
|
||||||
|
|
||||||
|
do_ampr
|
||||||
|
tya
|
||||||
|
asl a
|
||||||
|
tax
|
||||||
|
jmp (ampr_dispatch,x)
|
||||||
|
;
|
||||||
|
|
||||||
|
ampr_time
|
||||||
|
jsr get_time_str
|
||||||
|
|
||||||
|
ldy #OMM_PUTSTR
|
||||||
|
ldx #OMM_ID
|
||||||
|
jsr OMMVEC
|
||||||
|
jmp CHKCLS
|
||||||
|
|
||||||
|
ampr_fast
|
||||||
|
lda #$80
|
||||||
|
tsb CYAREG
|
||||||
|
rts
|
||||||
|
|
||||||
|
ampr_slow
|
||||||
|
lda #$80
|
||||||
|
trb CYAREG
|
||||||
|
rts
|
||||||
|
|
||||||
|
do_user
|
||||||
|
tya
|
||||||
|
asl a
|
||||||
|
tax
|
||||||
|
jmp (dispatch,x)
|
||||||
|
|
||||||
|
do_life
|
||||||
|
bra do_life_native
|
||||||
|
|
||||||
|
dc.b 0
|
||||||
|
*
|
||||||
|
* immediate table
|
||||||
|
*
|
||||||
|
a_info dc.w info
|
||||||
|
a_buffer
|
||||||
|
dc.w buffer
|
||||||
|
|
||||||
|
ampr_dispatch
|
||||||
|
dc.w ampr_time
|
||||||
|
dc.w ampr_fast
|
||||||
|
dc.w ampr_slow
|
||||||
|
|
||||||
|
dispatch
|
||||||
|
dc.w native_dispatch ; Ticker
|
||||||
|
dc.w native_dispatch ; GetTicks
|
||||||
|
dc.w native_dispatch ; CountDown
|
||||||
|
dc.w wait_ticks ; WaitTicks
|
||||||
|
dc.w wait_seconds ; WaitSeconds
|
||||||
|
dc.w native_dispatch ; SetCounter
|
||||||
|
dc.w get_time_str ; GetTimeStr
|
||||||
|
dc.w ampr_fast
|
||||||
|
dc.w ampr_slow
|
||||||
|
;
|
||||||
|
|
||||||
|
dc.w 0
|
||||||
|
|
||||||
|
my_id dc.w 'mt'
|
||||||
|
ff dc.w $00ff
|
||||||
|
|
||||||
|
msb on
|
||||||
|
info cstr '&SYSDATE Time (KEGS) 1.0'
|
||||||
|
msb off
|
||||||
|
|
||||||
|
amperc
|
||||||
|
cstr 'TIME('
|
||||||
|
cstr 'FAST'
|
||||||
|
cstr 'SLOW'
|
||||||
|
dc.b -1
|
||||||
|
|
||||||
|
|
||||||
|
buffer dc.b 24 ; 23 + 1 to c-string it.
|
||||||
|
|
||||||
|
do_life_native
|
||||||
|
native
|
||||||
|
and #$00ff
|
||||||
|
ldx #'tt'
|
||||||
|
dc.b $42, WDM_ID
|
||||||
|
emulated
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
; 16-bite code. NOT relocated. position independent code ONLY.
|
||||||
|
native_dispatch
|
||||||
|
; a = omm id
|
||||||
|
; y = request (if msg_user)
|
||||||
|
|
||||||
|
native
|
||||||
|
|
||||||
|
ldx #'tt'
|
||||||
|
lda #MSG_USER
|
||||||
|
; y still valid
|
||||||
|
|
||||||
|
;
|
||||||
|
; wdm inputs:
|
||||||
|
; a = OMM call number
|
||||||
|
; x = tool id
|
||||||
|
; y = user call number
|
||||||
|
;
|
||||||
|
; wdm $85
|
||||||
|
dc.b $42, WDM_ID
|
||||||
|
|
||||||
|
php
|
||||||
|
emulated
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
get_time_str
|
||||||
|
|
||||||
|
lda #23
|
||||||
|
sta <lowtr
|
||||||
|
|
||||||
|
native
|
||||||
|
|
||||||
|
per buffer
|
||||||
|
pla
|
||||||
|
;lda a_buffer <<< won't work...
|
||||||
|
lda #$0280 ; same buffer as TimeGS
|
||||||
|
sta lowtr+1
|
||||||
|
|
||||||
|
ldx #'tt'
|
||||||
|
lda #MSG_USER
|
||||||
|
ldy #GetTimeStr
|
||||||
|
dc.b $42, WDM_ID
|
||||||
|
|
||||||
|
emulated
|
||||||
|
rts
|
||||||
|
|
||||||
|
wait_ticks
|
||||||
|
|
||||||
|
native
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda prmtbl
|
||||||
|
beq @exit
|
||||||
|
|
||||||
|
lda prmtbl+2 ; check for callback
|
||||||
|
beq @fast
|
||||||
|
|
||||||
|
;brk $ea
|
||||||
|
; callback ... need to handle one tick at a time.
|
||||||
|
|
||||||
|
bsr begin_wait
|
||||||
|
|
||||||
|
@loop
|
||||||
|
lda #MSG_USER
|
||||||
|
ldy #WaitTicks
|
||||||
|
ldx #'tt'
|
||||||
|
dc.b $42, WDM_ID
|
||||||
|
|
||||||
|
emulated
|
||||||
|
|
||||||
|
per @rts-1
|
||||||
|
jmp (|prmtbl+2) ; always reads bank 0.
|
||||||
|
|
||||||
|
@rts
|
||||||
|
nativep
|
||||||
|
bcs @exit
|
||||||
|
|
||||||
|
dec prmtbl
|
||||||
|
bne @loop
|
||||||
|
;clc
|
||||||
|
|
||||||
|
@exit
|
||||||
|
php
|
||||||
|
bsr end_wait
|
||||||
|
emulated
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
@fast
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
|
||||||
|
; no callback, so handle it natively.
|
||||||
|
lda #MSG_USER
|
||||||
|
ldy #WaitTicks
|
||||||
|
ldx #'tt'
|
||||||
|
dc.b $42, WDM_ID
|
||||||
|
|
||||||
|
emulated
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
wait_seconds
|
||||||
|
|
||||||
|
native
|
||||||
|
|
||||||
|
lda prmtbl
|
||||||
|
beq @exit
|
||||||
|
sta prmtbl+4
|
||||||
|
|
||||||
|
lda prmtbl+2
|
||||||
|
beq @fast
|
||||||
|
|
||||||
|
;brk $ea
|
||||||
|
bsr begin_wait
|
||||||
|
|
||||||
|
@loop60
|
||||||
|
lda #60
|
||||||
|
sta prmtbl
|
||||||
|
|
||||||
|
@loop
|
||||||
|
lda #MSG_USER
|
||||||
|
ldy #WaitTicks
|
||||||
|
ldx #'tt'
|
||||||
|
dc.b $42, WDM_ID
|
||||||
|
|
||||||
|
emulated
|
||||||
|
|
||||||
|
per @rts-1
|
||||||
|
jmp (|prmtbl+2) ; always reads bank 0.
|
||||||
|
|
||||||
|
@rts
|
||||||
|
nativep
|
||||||
|
bcs @exit
|
||||||
|
|
||||||
|
dec prmtbl
|
||||||
|
bne @loop
|
||||||
|
|
||||||
|
dec prmtbl+4
|
||||||
|
bne @loop60
|
||||||
|
;clc
|
||||||
|
|
||||||
|
@exit
|
||||||
|
php
|
||||||
|
bsr end_wait
|
||||||
|
emulated
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
|
||||||
|
@fast
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
|
||||||
|
; no callback, handle natively.
|
||||||
|
lda #MSG_USER
|
||||||
|
ldy #WaitSeconds
|
||||||
|
ldx #'tt'
|
||||||
|
dc.b $42, WDM_ID
|
||||||
|
|
||||||
|
emulated
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
BeginWaitLoop equ $0100
|
||||||
|
EndWaitLoop equ $0101
|
||||||
|
|
||||||
|
longa on
|
||||||
|
longi on
|
||||||
|
begin_wait
|
||||||
|
lda #MSG_USER
|
||||||
|
ldy #BeginWaitLoop
|
||||||
|
ldx #'tt'
|
||||||
|
dc.b $42, WDM_ID
|
||||||
|
rts
|
||||||
|
|
||||||
|
end_wait
|
||||||
|
lda #MSG_USER
|
||||||
|
ldy #EndWaitLoop
|
||||||
|
ldx #'tt'
|
||||||
|
dc.b $42, WDM_ID
|
||||||
|
rts
|
||||||
|
|
||||||
|
end
|
||||||
|
endp
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user