home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_100 / 148_01 / a99tbls.asm < prev    next >
Assembly Source File  |  1987-09-28  |  8KB  |  581 lines

  1.  
  2. TPALOC        EQU    0100H
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. base:    equ 0000h
  10. fcb:    equ base+5ch
  11. tbuff:    equ base+80h
  12. bdos:    equ base+5
  13. tpa:    equ base+100h
  14. nfcbs:    equ 9
  15. errorv:    equ 255
  16. cccorg:    equ tpa
  17.  
  18.  
  19. ram:    equ cccorg+52Bh
  20. args:    equ ram+37
  21.  
  22. cr:    equ 0dh
  23. lf:    equ 0ah
  24. newlin:    equ lf
  25. tab:    equ 9
  26. bs:    equ 08h
  27. cntrlc:    equ 3
  28.  
  29. ma1toh:    equ cccorg+20ah
  30. ma2toh:    equ cccorg+213h
  31. ma3toh:    equ ma2toh+6
  32. ma4toh:    equ ma2toh+12
  33. ma5toh:    equ ma2toh+18
  34. ma6toh:    equ ma2toh+24
  35. ma7toh:    equ ma2toh+30
  36.  
  37. arghak:    equ ma2toh+36
  38.  
  39. arg1:    equ args
  40. arg2:    equ args+2
  41. arg3:    equ args+4
  42. arg4:    equ args+6
  43. arg5:    equ args+8
  44. arg6:    equ args+10
  45. arg7:    equ args+12
  46.  
  47.  
  48.         ORG    TPALOC+200H
  49.         DB    0,0,0,0,0
  50. GETOPC$BEG    EQU    $-TPALOC
  51.  
  52. NUM    EQU    ARG1
  53. OPCODE    EQU    ARG2
  54. VALUE    EQU    ARG3
  55. ATTRIB1    EQU    ARG4
  56.  
  57.         DB    0
  58.         DW    GETOPC$END-$-2
  59. GETOPC$STRT    EQU    $
  60. GETOPC$EF$GETOPC    EQU    GETOPC$STRT
  61.  
  62. GETOPC$STRTC    EQU    $
  63.     CALL    ARGHAK
  64.     LDA    NUM
  65.     CPI    OPTBLL
  66.     LXI    H, 0
  67.     RNC
  68.  
  69.     PUSH    B
  70.     PUSH    D
  71.     MOV    L,A
  72.     DAD    H
  73.     MOV    C,L
  74.     MOV    B,H
  75.     DAD    H
  76.     DAD    B
  77.     MOV    C,A
  78.     MVI    B,0    
  79.     DAD    B
  80. GETOPC$R000    EQU    $+1-GETOPC$STRT
  81.     LXI     B,GETOPC$L$OPCTBL
  82.     DAD    B
  83.     MOV    C,L
  84.     MOV    B,H
  85.     INX    H
  86.     INX    H
  87.     INX    H
  88.     INX    H
  89.     PUSH    H
  90.  
  91.     MVI    E, 4
  92.     LHLD    OPCODE
  93. GETOPC$L$MOVOPC        EQU    $-GETOPC$STRT
  94.            LDAX    B
  95.     CPI    ' '
  96. GETOPC$R001    EQU    $+1-GETOPC$STRT
  97.     JZ    GETOPC$L$ENDOPC
  98.     INX    B
  99.     MOV    M,A
  100.     INX    H
  101.     DCR    E
  102. GETOPC$R002    EQU    $+1-GETOPC$STRT
  103.     JNZ    GETOPC$L$MOVOPC
  104.  
  105. GETOPC$L$ENDOPC        EQU    $-GETOPC$STRT
  106.            MVI    M, 0
  107.     LHLD    ATTRIB1
  108.     POP    B
  109.     LDAX    B
  110.     INX    B
  111.     MOV    M,A
  112.  
  113.     LHLD    VALUE
  114.     LDAX    B
  115.     INX    B
  116.     MOV    M,A
  117.     INX    H
  118.     LDAX    B
  119.     MOV    M,A
  120.  
  121.     LXI    H, 1
  122.     POP    D
  123.     POP    B
  124.     RET
  125.  
  126. OPCTBL0    EQU    $
  127.  
  128. GETOPC$L$OPCTBL        EQU    $-GETOPC$STRT
  129.           DB    'A   ',09H        ;MNEMONIC FOLLOWED BY ATTRRIBUTE BYTE
  130.     DW    0A000H
  131.     DB    'AB  ',09H
  132.     DW    0B000H
  133.     DB    'ABS ',01H
  134.     DW    0740H    
  135.     DB    'AI  ', 35H
  136.     DW    0220H
  137.     DB    'ANDI', 35H
  138.     DW    0240H
  139.     DB    'B   ',01H
  140.     DW    0440H
  141.     DB    'BIND',01H        ;TMS99000 INSTRUCTION
  142.     DW    0140H
  143.     DB    'BL  ',01H
  144.     DW    0680H
  145.     DB    'BLSK',35H        ;TMS99000 INSTRUCTION
  146.     DW    00B0H
  147.     DB    'BLWP',01H
  148.     DW    0400H
  149.     DB    'BSS ', 80H
  150.     DW    0005H
  151.     DB    'BYTE', 80H
  152.     DW    0002H
  153.     DB    'C   ', 09H
  154.     DW    8000H
  155.     DB    'CB  ', 09H
  156.     DW    9000H
  157.     DB    'CI  ',35H
  158.     DW    0280H
  159.     DB    'CKOF',00H
  160.     DW    03C0H
  161.     DB    'CKON',00H
  162.     DW    03A0H
  163.     DB    'CLR ',01H
  164.     DW    04C0H
  165.     DB    'COC ',19H
  166.     DW    2000H
  167.     DB    'CZC ',19H
  168.     DW    2400H
  169.     DB    'DEC ',01H
  170.     DW    0600H
  171.     DB    'DECT',01H
  172.     DW    0640H
  173.     DB    'DIV ',19H
  174.     DW    3C00H
  175.     DB    'DIVS',01H        ;TMS99000 INSTRUCTION
  176.     DW    0180H
  177.     DB    'DXOP',0C0H        ; Define Extended Operation 
  178.     DW    000CH
  179.     DB    'ELSE', 0C0H
  180.     DW    0007H
  181.     DB    'END ', 80H
  182.     DW    0006H
  183.     DB    'ENDI', 0C0H
  184.     DW    0008H
  185.     DB    'EQU ', 80H
  186.     DW    0001H
  187.     DB    'EVEN',80H
  188.     DW    000BH
  189.     DB    'IDLE',00H
  190.     DW    0340H
  191.     DB    'IF  ',0C0H
  192.     DW    0009H
  193.     DB    'INC ',01H
  194.     DW    0580H
  195.     DB    'INCT',01H
  196.     DW    05C0H
  197.     DB    'INV ',01H
  198.     DW    0540H
  199.     DB    'JEQ ',02H
  200.     DW    1300H
  201.     DB    'JGT ',02H
  202.     DW    1500H
  203.     DB    'JH  ',02H
  204.     DW    1B00H
  205.     DB    'JHE ',02H
  206.     DW    1400H
  207.     DB    'JL  ',02H
  208.     DW    1A00H
  209.     DB    'JLE ',02H
  210.     DW    1200H
  211.     DB    'JLT ',02H
  212.     DW    1100H
  213.     DB    'JMP ',02H
  214.     DW    1000H
  215.     DB    'JNC ',02H
  216.     DW    1700H
  217.     DB    'JNE ',02H
  218.     DW    1600H
  219.     DB    'JNO ',02H
  220.     DW    1900H
  221.     DB    'JOC ',02H
  222.     DW    1800H
  223.     DB    'JOP ',02H
  224.     DW    1C00H
  225.     DB    'LDCR',19H
  226.     DW    3000H
  227.     DB    'LI  ',35H
  228.     DW    0200H
  229.     DB    'LIMI',06H
  230.     DW    0300H
  231.     DB    'LREX',00H
  232.     DW    03E0H
  233.     DB    'LST ',05H        ;TMS99000 INSTRUCTION
  234.     DW    0080H
  235.     DB    'LWP ',05H        ;TMS99000 INSTRUCTION
  236.     DW    0090H
  237.     DB    'LWPI',06H
  238.     DW    02E0H
  239.     DB    'MOV ',09H
  240.     DW    0C000H
  241.     DB    'MOVB',09H
  242.     DW    0D000H
  243.     DB    'MPY ',19H
  244.     DW    3800H
  245.     DB    'MPYS',01H        ;TMS99000 INSTRUCTION
  246.     DW    01C0H
  247.     DB    'NEG ',01H
  248.     DW    0500H
  249.     DB    'NOP ',00H
  250.     DW    1000H
  251.     DB    'ORG ',80H
  252.     DW    0000H
  253.     DB    'ORI ',35H
  254.     DW    0260H
  255.     DB    'RSET',00H
  256.     DW    0360H
  257.     DB    'RT  ',00H
  258.     DW    045BH
  259.     DB    'RTWP',00H
  260.     DW    0380H
  261.     DB    'S   ',09H
  262.     DW    6000H
  263.     DB    'SB  ',09H
  264.     DW    7000H
  265.     DB    'SBO ',04H
  266.     DW    1D00H
  267.     DB    'SBZ ',04H
  268.     DW    1E00H
  269.     DB    'SET ',80H
  270.     DW    000AH
  271.     DB    'SETO',01H
  272.     DW    0700H
  273.     DB    'SLA ',2DH
  274.     DW    0A00H
  275.     DB    'SOC ',09H
  276.     DW    0E000H
  277.     DB    'SOCB',09H
  278.     DW    0F000H
  279.     DB    'SRA ',2DH
  280.     DW    0800H
  281.     DB    'SRC ',2DH
  282.     DW    0B00H
  283.     DB    'SRL ',2DH
  284.     DW    0900H
  285.     DB    'STCR',09H
  286.     DW    3400H
  287.     DB    'STST',05H
  288.     DW    02C0H
  289.     DB    'STWP',05H
  290.     DW    02A0H
  291.     DB    'SWPB',01H
  292.     DW    06C0H
  293.     DB    'SZC ',09H
  294.     DW    4000H
  295.     DB    'SZCB',09H
  296.     DW    5000H
  297.     DB    'TB  ',04H
  298.     DW    1F00H
  299.     DB    'TCMB',07H        ;TMS99105 INSTRUCTION
  300.     DW    0C0AH            
  301.     DB    'TEXT', 80H
  302.     DW    0004H
  303.     DB    'TMB ',07H        ;TMS99105 INSTRUCTION
  304.     DW    0C09H
  305.     DB    'TROF',00H
  306.     DW    03C0H
  307.     DB    'TRON',00H
  308.     DW    03E0H
  309.     DB    'TSMB',07H        ;TMS99105 INSTRUCTION
  310.     DW    0C0BH
  311.     DB    'WORD',80H
  312.     DW    0003H
  313.     DB    'WREN',00H
  314.     DW    03A0H
  315.     DB    'X   ',01H
  316.     DW    0480H
  317.     DB    'XOP ',19H
  318.     DW    2C00H
  319.     DB    'XOR ',19H
  320.     DW    2800H
  321.  
  322. OPTBLL    EQU    ($-OPCTBL0)/7
  323.  
  324. GETOPC$END    EQU    $
  325.         DW    3
  326.         DW    GETOPC$R000
  327.         DW    GETOPC$R001
  328.         DW    GETOPC$R002
  329.  
  330.  
  331.     
  332. NUMOPCS$BEG    EQU    $-TPALOC
  333.  
  334.         DB    0
  335.         DW    NUMOPCS$END-$-2
  336. NUMOPCS$STRT    EQU    $
  337. NUMOPCS$EF$NUMOPCS    EQU    NUMOPCS$STRT
  338.  
  339. NUMOPCS$STRTC    EQU    $
  340.     LXI    H,OPTBLL
  341.     RET
  342.     
  343. NUMOPCS$END    EQU    $
  344.         DW    0
  345.  
  346.  
  347. ALPHA    EQU    0
  348. NUMERC    EQU    1
  349. ENDLIN    EQU    2
  350. COMMA    EQU    3
  351. OPERAT    EQU    4
  352. BASDES    EQU    5
  353. QUOTE    EQU    6
  354. BLANK    EQU    10
  355. TRASH    EQU    11
  356. BLOCK    MACRO    VALU,SIZE
  357.     REPT SIZE
  358.     DB    VALU
  359.     ENDM
  360.     ENDM
  361.  
  362. GETATTR$BEG    EQU    $-TPALOC
  363.  
  364.         DB    0
  365.         DW    GETATTR$END-$-2
  366. GETATTR$STRT    EQU    $
  367. GETATTR$EF$GETATTR    EQU    GETATTR$STRT
  368.  
  369. GETATTR$STRTC    EQU    $
  370.     CALL    MA1TOH
  371.     ANI    7FH
  372. GETATTR$R000    EQU    $+1-GETATTR$STRT
  373.     LXI     H,GETATTR$L$ATTTBL
  374.     ADD    L
  375.     MOV    L,A
  376.     MVI    A, 0
  377.     ADC    H
  378.     MOV    H,A
  379.  
  380.     MOV    L,M
  381.     MVI    H, 0
  382.     RET
  383.  
  384. GETATTR$L$ATTTBL        EQU    $-GETATTR$STRT
  385.            BLOCK    TRASH,9
  386.     DB    BLANK
  387.     DB    ENDLIN
  388.     DB    TRASH
  389.     DB    TRASH
  390.     DB    TRASH
  391.     BLOCK    TRASH,18
  392.     DB    BLANK
  393.     DB    ALPHA
  394.     DB    QUOTE
  395.     DB    BASDES
  396.     DB    OPERAT
  397.     DB    BASDES
  398.     DB    ALPHA
  399.     DB    QUOTE
  400.     DB    OPERAT
  401.     DB    OPERAT
  402.     DB    OPERAT
  403.     DB    OPERAT
  404.     DB    COMMA
  405.     DB    OPERAT
  406.     DB    ALPHA
  407.     DB    OPERAT
  408.     BLOCK    NUMERC,10
  409.     DB    ALPHA
  410.     DB    ENDLIN
  411.     DB    OPERAT
  412.     DB    OPERAT
  413.     DB    OPERAT
  414.     DB    ALPHA
  415.     DB    OPERAT
  416.     BLOCK    ALPHA,26
  417.     DB    ALPHA
  418.     DB    ALPHA
  419.     DB    ALPHA
  420.     DB    ALPHA
  421.     DB    ALPHA
  422.     DB    ALPHA
  423.     BLOCK    ALPHA,26
  424.     DB    ALPHA
  425.     DB    ALPHA
  426.     DB    ALPHA
  427.     DB    ALPHA
  428.     DB    TRASH
  429. GETATTR$END    EQU    $
  430.         DW    1
  431.         DW    GETATTR$R000
  432.  
  433.  
  434. OPRATR    EQU    ARG2
  435. TOKEN    EQU    ARG4
  436.  
  437.  
  438. GETOPR$BEG    EQU    $-TPALOC
  439.  
  440.         DB    0
  441.         DW    GETOPR$END-$-2
  442. GETOPR$STRT    EQU    $
  443. GETOPR$EF$GETOPR    EQU    GETOPR$STRT
  444.  
  445. GETOPR$STRTC    EQU    $
  446.     CALL    ARGHAK
  447.     LDA    NUM
  448.     CPI    OPRTLL
  449.     LXI    H, 0
  450.     RNC
  451.  
  452.     PUSH    B
  453.     PUSH    D
  454.     MOV    L,A
  455.     ADD    A
  456.     ADD    A
  457.     ADD    L
  458.     MOV    L,A
  459. GETOPR$R000    EQU    $+1-GETOPR$STRT
  460.     LXI     b,GETOPR$L$OPRTBL
  461.     DAD    B
  462.     MOV    C,L
  463.     MOV    B,H
  464.     INX    H
  465.     INX    H
  466.     INX    H
  467.     INX    H
  468.     PUSH    H
  469.  
  470.     MVI    E, 4
  471.     LHLD    OPRATR
  472. GETOPR$L$MOVOPR        EQU    $-GETOPR$STRT
  473.            LDAX    B
  474.     CPI    ' '
  475. GETOPR$R001    EQU    $+1-GETOPR$STRT
  476.     JZ    GETOPR$L$ENDOPR
  477.     INX    B
  478.     MOV    M,A
  479.     INX    H
  480.     DCR    E
  481. GETOPR$R002    EQU    $+1-GETOPR$STRT
  482.     JNZ    GETOPR$L$MOVOPR
  483.  
  484. GETOPR$L$ENDOPR        EQU    $-GETOPR$STRT
  485.            MVI    M, 0
  486.     LHLD    TOKEN
  487.     POP    B
  488.     LDAX    B
  489.     MOV    M,A
  490.  
  491.     LXI    H, 1
  492.     POP    D
  493.     POP    B
  494.     RET
  495.  
  496. GETKN    EQU    1
  497. NETKN    EQU    2
  498. LETKN    EQU    3
  499. ANDTKN    EQU    4
  500. ORTKN    EQU    5
  501. XORTKN    EQU    6
  502. NOTTKN    EQU    7
  503. MODTKN    EQU    8
  504. SHLTKN    EQU    9
  505. SHRTKN    EQU    10
  506. HITKN    EQU    11
  507. LOWTKN    EQU    12
  508. GTTKN    EQU    '>'
  509. EQTKN    EQU    '='
  510. LTTKN    EQU    '<'
  511.  
  512. OPRTBL0    equ    $
  513. GETOPR$L$OPRTBL        EQU    $-GETOPR$STRT
  514.            DB    'AND ', ANDTKN
  515.     DB    'EQ  ', EQTKN
  516.     DB    'GE  ', GETKN
  517.     DB    'GT  ', GTTKN
  518.     DB    'HIGH', HITKN
  519.     DB    'LE  ', LETKN
  520.     DB    'LOW ', LOWTKN
  521.     DB    'LT  ', LTTKN
  522.     DB    'MOD ', MODTKN
  523.     DB    'NE  ', NETKN
  524.     DB    'NOT ', NOTTKN
  525.     DB    'OR  ', ORTKN
  526.     DB    'SHL ', SHLTKN
  527.     DB    'SHR ', SHRTKN
  528.     DB    'XOR ', XORTKN
  529.  
  530. OPRTLL    EQU    ($-OPRTBL0)/5
  531. GETOPR$END    EQU    $
  532.         DW    3
  533.         DW    GETOPR$R000
  534.         DW    GETOPR$R001
  535.         DW    GETOPR$R002
  536.  
  537.  
  538.     
  539. NUMOPRS$BEG    EQU    $-TPALOC
  540.  
  541.         DB    0
  542.         DW    NUMOPRS$END-$-2
  543. NUMOPRS$STRT    EQU    $
  544. NUMOPRS$EF$NUMOPRS    EQU    NUMOPRS$STRT
  545.  
  546. NUMOPRS$STRTC    EQU    $
  547. NUMOPRS$L$STBOD5        EQU    $-NUMOPRS$STRT
  548.            LXI    H, OPRTLL
  549.     RET
  550.  
  551.  
  552. NUMOPRS$END    EQU    $
  553.         DW    0
  554.  
  555.  
  556.  
  557. END$CRL        EQU    $-TPALOC
  558.  
  559.         ORG    TPALOC
  560.  
  561. ; Directory:
  562.         DB    'GETOP','C'+80H
  563.         DW    GETOPC$BEG
  564.         DB    'NUMOPC','S'+80H
  565.         DW    NUMOPCS$BEG
  566.         DB    'GETATT','R'+80H
  567.         DW    GETATTR$BEG
  568.         DB    'GETOP','R'+80H
  569.         DW    GETOPR$BEG
  570.         DB    'NUMOPR','S'+80H
  571.         DW    NUMOPRS$BEG
  572.         DB    80H
  573.         DW    END$CRL
  574.         END
  575. KN    EQU    '='
  576. LTTKN    EQU    '<'
  577.  
  578. OPRTBL0    equ    $
  579. GETOPR$L$OPRTBL        EQU    $-GETOPR$STRT
  580.            DB    'AND ', ANDTKN
  581.     DB    'EQ  ',