[go: up one dir, main page]

Menu

[r132]: / psrp / asm / t1c.asm  Maximize  Restore  History

Download this file

76 lines (54 with data), 1.4 kB

 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
;
; Dictionary lookup
;
; Written in TASM 3.0.1
;
#include "vars.asm"
;.org $7d8d ; $7fd8d-7fdbf ($33)
.org $3eca ; fix: avoid paging in slot 0 (see t2a.asm)
; HL = Table offset
; PUSH DE
; PUSH BC
Normal:
PUSH AF
LD A,$77000/$4000 ; Load normal lists
LD ($FFFF),A
JR Search_Init
Substring:
PUSH AF
LD A,$43c00/$4000 ; Load dictionary
LD ($FFFF),A
; ----------------------------------------------------
Search_Init:
POP AF ; Restore index #
LD B,$00 ; 0-255 indices
Search:
LD C,(HL) ; Grab string length
OR A ; Check for zero strings left
JR Z,Copy ; Stop if found
INC HL ; Bypass length byte
ADD HL,BC ; Bypass physical string
DEC A ; One less item to look at
JR Search ; Keep searching
Copy:
LD A,C ; Transfer length
LD (LEN),A ; Save length
INC HL ; Skip length byte
LD DE,TEMP_STR ; Copy to work RAM
LD (STR),DE ; Save pointer location
LDIR
; ---------------------------------------------------
DEC HL ; Check last character
LD A,(HL)
CP LETTER_S ; <name>'s attack
JR NZ,Store_Suffix
XOR A ; Clear flag
Store_Suffix:
LD (SUFFIX),A
; ---------------------------------------------------
LD A,$02 ; Normal page
LD ($FFFF),A
; POP BC ; Restore registers and exit
; POP DE
RET
.end ; TASM-only