home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_200
/
223_02
/
call3.mac
< prev
next >
Wrap
Text File
|
1989-02-23
|
1KB
|
44 lines
;
;----- call3.mac Small-C arithmetic and logical library
;
;
; part 3 switch routine
;
;
; EXECUTE "SWITCH" STATEMENT
;
; HL = SWITCH VALUE
; (SP) -> SWITCH TABLE
; DW ADDR1, VALUE1
; DW ADDR2, VALUE2
; ...
; DW 0
; [JMP default]
; continuation
;
CCSWITCH::
XCHG ;;DE = SWITCH VALUE
POP H ;;HL -> SWITCH TABLE
SWLOOP: MOV C,M
INX H
MOV B,M ;;BC -> CASE ADDR, ELSE 0
INX H
MOV A,B
ORA C
JZ SWEND ;;DEFAULT OR CONTINUATION CODE
MOV A,M
INX H
CMP E
MOV A,M
INX H
JNZ SWLOOP
CMP D
JNZ SWLOOP
MOV H,B ;;CASE MATCHED
MOV L,C
SWEND: PCHL
END