-
Notifications
You must be signed in to change notification settings - Fork 6
/
esp-timeout.asm
42 lines (40 loc) · 900 Bytes
/
esp-timeout.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
InitESPTimeout:
MODULE InitESPTimeout
push hl
ld hl, ESPTimeout mod 65536 ; Timeout is a 32-bit value, so save the two LSBs first,
ld (CheckESPTimeout.Value), hl
ld hl, ESPTimeout / 65536 ; then the two MSBs.
ld (CheckESPTimeout.Value2), hl
pop hl
ret
ENDMODULE
; Modifies: nothing
CheckESPTimeout:
MODULE CheckESPTimeout
push hl
push af
Value EQU $+1
ld hl, SMC
dec hl
ld (Value), hl
ld a, h
or l
jr z, Rollover
Success: pop af
pop hl
ret
Failure: ld hl, (Wifi.timeout)
HandleError:
call Error ; Ignore current stack depth, and just jump
Rollover:
Value2 EQU $+1
ld hl, SMC ; Check the two upper values
ld a, h
or l
jr z, Failure ; If we hit here, 32 bit value is $00000000
dec hl
ld (Value2), hl
ld hl, $FFFF ; Reset lower word when upper word rolls down, so always reset to $FFFF
ld (Value), hl
jr Success
ENDMODULE