-
Notifications
You must be signed in to change notification settings - Fork 0
/
STATL.MAC
executable file
·76 lines (68 loc) · 2.02 KB
/
STATL.MAC
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
;-----------------------------------------------------------------
;
; Status linie modul til Rc700 bios.
;
; Rutiner: - kaldes med HL= Adressen p} funktion der returnerer
; HL=^Statuslinie streng.
;
; S$STATL(hl) - sætter nuværende statuslinie til den angivne
; U$STATL(hL) - Hvis hl=nuv statline, så opdateres den.
; N$STATL(hl) - Sætter statuslinien til '', eller CLOCK modulets ur.
;
; Th 910420
;------------------------------------------------------------------
subttl File: STATL.MAC
scstat equ 0f800h + (25*80)
sclen equ 39 ; MAX 255 tegn
statrut::
db 0c3h ; (* JP (STATRUT) *)
stataddr:: dw 0
IFNDEF UseClock
cl$stat: ; Hvis ikke inkluderet i et system med
ld hl, emptymsg ; CLOCK statuslinie så benyt en tom linie.
ret ; Denne SKAL være defineret inden STATL
; inkluderes.
emptymsg:
db 0
ENDIF
; ********************************************************
;
; N$STATL -- Ingen statuslinie. Viser systemets standard statuslinie
;
; S$STATL -- Sæt statusliniedriver til HL. U$STATL kaldes omgående.
;
; U$STATL -- Update statuslinie(HL) HVIS det er den der vises netop nu.
; Hvis denne driver ikke er aktiv vil der ikke ske noget.
; Overhead ved inaktivt call er ca 4 instruktioner.
N$STATL::
ld hl, cl$stat ; (* KLOKKE!!!! *)
S$STATL::
ld (stataddr), hl
U$STATL::
ld de, (stataddr) ; IF stataddr<>Updatestatuslinie THEN
ld a, e ;
cp l ;
ret nz ;
ld a, d ; EXIT;
cp h ;
ret nz ;
;
call statrut ; hl:= statrutine; (* FUNCTION xxx: PTR *)
ld de, scstat ; de:= addr(Screen[Statusline]);
ld b, sclen ; b:= MaxLen(Statuslinie);
u$st1:: ld a, (hl) ; WHILE (hl^<>0) AND (b>0) DO
or a ; BEGIN
jr z, u$st2 ; de^:= hl^; INC(de); INC(hl);
ld (de), a ; DEC(b);
inc hl ; END;
inc de ; WHILE b>0 DO
djnz u$st1 ; de^:= ' '; DEC(b); INC(de);
jr u$st3 ; END;
;
u$st2:: ld a, ' ' ; (* fyld op med ' ' *)
u$st2a:: ;
ld (de), a ;
inc de ;
djnz u$st2a ;
u$st3:: ret ; Common exit from statusline routines.
; END OF STATL.MAC