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 >
Text File  |  1989-02-23  |  1KB  |  44 lines

  1. ;
  2. ;----- call3.mac   Small-C  arithmetic and logical library
  3. ;
  4. ;
  5. ;    part 3        switch routine
  6.  
  7. ;
  8.         ;
  9.         ; EXECUTE "SWITCH" STATEMENT
  10.         ;
  11.         ;  HL  =  SWITCH VALUE
  12.         ; (SP) -> SWITCH TABLE
  13.         ;         DW ADDR1, VALUE1
  14.         ;         DW ADDR2, VALUE2
  15.         ;         ...
  16.         ;         DW 0
  17.         ;        [JMP default]
  18.         ;         continuation
  19.         ;
  20. CCSWITCH::      
  21.         XCHG            ;;DE =  SWITCH VALUE
  22.         POP H           ;;HL -> SWITCH TABLE
  23. SWLOOP: MOV C,M
  24.         INX H
  25.         MOV B,M         ;;BC -> CASE ADDR, ELSE 0
  26.         INX H
  27.         MOV A,B
  28.         ORA C
  29.         JZ  SWEND       ;;DEFAULT OR CONTINUATION CODE
  30.         MOV A,M
  31.         INX H
  32.         CMP E
  33.         MOV A,M
  34.         INX H
  35.         JNZ SWLOOP
  36.         CMP D
  37.         JNZ SWLOOP
  38.         MOV H,B         ;;CASE MATCHED
  39.         MOV L,C
  40. SWEND:  PCHL
  41.  
  42.     END
  43.  
  44.