home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a035 / 2.ddi / L14.ASM next >
Encoding:
Assembly Source File  |  1991-01-02  |  5.5 KB  |  327 lines

  1. CODE SEGMENT   'CODE'
  2. ASSUME CS:CODE,DS:CODE
  3. START:JMP INIT
  4. INTR61:PUSH AX
  5.        PUSH BX
  6.        PUSH DX
  7.        PUSH DS
  8.        PUSH CX
  9.        PUSH BP
  10.       PUSH AX
  11. cmp al,0dah
  12. jnz l123
  13. int 3
  14. l123: nop
  15.       MOV BP,SP
  16.       ADD BP,0EH
  17.       MOV AX,[BP]
  18.       MOV CX,17H
  19.       PUSH CS
  20.       POP DS
  21.       MOV BX,OFFSET DATAINDEX
  22. C1:   CMP AX,[BX]
  23.       JZ LOOPOUT
  24.       INC BX
  25.       INC BX
  26.       LOOP C1
  27. LOOPOUT:  MOV BX,17H
  28.           SUB BX,CX
  29.           SHL BX,1
  30.           ADD BX,OFFSET JMPINDEX
  31.       POP AX
  32.       JMP [BX]
  33. INTPOT:POP BP
  34.        POP CX
  35.        POP DS
  36.        POP DX
  37.        POP BX
  38.        POP AX
  39.        INT 16H
  40.        OR AL,AL
  41.        JNZ RT
  42.        CMP AH,68H
  43.        JL RT
  44.        CMP AH,72H
  45.        JL ADD16
  46.        CMP AH,78H
  47.        JL RT
  48.        CMP AH,82H
  49.        JL SUB16
  50.        JMP RT
  51. ADD16: ADD AH,10H
  52.        JMP RT
  53. SUB16: SUB AH,10H
  54. RT:    IRET
  55. INT161:NOP
  56.        POP BP
  57.        POP CX
  58.        POP DS
  59.        POP DX
  60.        POP BX
  61.        POP AX
  62.        INT 16H
  63.         PUSHF
  64.        OR AL,AL
  65.        JNZ RTL
  66.        CMP AH,68H
  67.        JL RTL
  68.        CMP AH,72H
  69.        JL ADD16L
  70.        CMP AH,78H
  71.        JL RTL
  72.        CMP AH,82H
  73.        JL SUB16L
  74.        JMP RTL
  75. ADD16L:ADD AH,10H
  76.        JMP RTL
  77. SUB16L:SUB AH,10H
  78. RTL:   POPF
  79.        DB 0CAH,02H,00H
  80. POINT1:NOP
  81.        CMP AL,0B3H
  82.        JNZ SKIP1
  83.        MOV AL,'|'
  84. SKIP1: NOP
  85.        CALL SETC
  86.        MOV CX,1H
  87.        CALL DISP1
  88.        POP BP
  89.        POP CX
  90.        POP DS
  91.        POP DX
  92.        POP BX
  93.        POP AX
  94.        INC DL
  95.        IRET
  96. POINT13:POP BP
  97.         POP CX
  98.         CMP  AL,0C4H
  99.         JNZ  JJ1
  100.        MOV AL,'-'
  101.        JMP JMP3
  102. JJ1:    CMP  AL,0B0H
  103.         JNZ  JMP3
  104.         MOV AL,' '
  105. JMP3:  PUSH CX
  106.        PUSH BP
  107.        JMP POINT3
  108. POINT2:NOP
  109.        POP BP
  110.        MOV AL,'='
  111.        CALL SETC
  112.        MOV CX,1H
  113.        CALL DISP1
  114.        POP CX
  115.        POP DS
  116.        POP DX
  117.        POP BX
  118.        POP AX
  119.        IRET
  120. POINT3:NOP
  121.        POP BP
  122.        POP CX
  123.        CALL SETC
  124.        CALL DISP1
  125.        POP DS
  126.        POP DX
  127.        POP BX
  128.        POP AX
  129.        IRET
  130.  
  131. POINT4:NOP
  132.        POP BP
  133.        MOV AL,'='
  134.        CALL SETC
  135.        MOV CX,1H
  136.        CALL DISP1
  137.        POP CX
  138.        POP DS
  139.        POP DX
  140.        POP BX
  141.        POP AX
  142.        IRET
  143. POINT5:NOP
  144.        POP BP
  145.        ADD DI,009EH
  146.        CALL SETC
  147.        MOV CX,1H
  148.        CALL DISP1
  149.        POP CX
  150.        POP DS
  151.        POP DX
  152.        POP BX
  153.        POP AX
  154.        IRET
  155. POINT7:NOP
  156.        POP BP
  157.        MOV AL,'='
  158.        CALL SETC
  159.        MOV CX,1H
  160.        CALL DISP1
  161.        POP CX
  162.        POP DS
  163.        POP DX
  164.        POP BX
  165.        POP AX
  166.        IRET
  167. POINT9:NOP
  168.        POP BP
  169.        MOV AL,'='
  170.        CALL SETC
  171.        MOV CX,1H
  172.        CALL DISP1
  173.        POP CX
  174.        POP DS
  175.        POP DX
  176.        POP BX
  177.        POP AX
  178.        IRET
  179. POINT12:NOP
  180.        POP BP
  181.        POP CX
  182.        POP DS
  183.        MOV AX,DS
  184.        CMP AX,0B800H
  185.        JNZ J1
  186.        PUSH CX
  187. JL2:   CALL LCHAR
  188.        STOSW
  189.        LOOP JL2
  190.        POP CX 
  191.        JMP R1
  192. J1:    PUSH CX
  193. JL1:   LODSW
  194.        CALL SETC
  195.        PUSH CX
  196.        MOV CX,01
  197.        CALL DISP1
  198.        POP CX
  199.        LOOP JL1
  200.        POP CX
  201. R1:    POP DX
  202.        POP BX
  203.        POP AX
  204.        IRET
  205. POINT31:NOP
  206.        POP BP
  207.        POP CX
  208.        POP DS
  209.        PUSH CX
  210.        LODSB
  211.        CALL SETC
  212.        MOV CX,1H
  213.        CALL DISP1
  214.        POP  CX
  215.        POP DX
  216.        POP BX
  217.        POP AX
  218.        IRET
  219. POINT32:NOP
  220.        POP BP
  221.        MOV AL,'='
  222.        CALL SETC
  223.        MOV CX,1H
  224.        CALL DISP1
  225.        POP CX
  226.        POP DS
  227.        POP DX
  228.        POP BX
  229.        POP AX
  230.        IRET
  231. POINT33:NOP
  232.        POP BP
  233.        MOV AL,'='
  234.        CALL SETC
  235.        MOV CX,1H
  236.        CALL DISP1
  237.        POP CX
  238.        POP DS
  239.        POP DX
  240.        POP BX
  241.        POP AX
  242.        IRET
  243. RETURN:NOP
  244.        POP BP
  245.        POP CX
  246.        POP DS
  247.        POP DX
  248.        POP BX
  249.        POP AX
  250.        IRET
  251. DISP1:MOV BL,AH
  252.       XOR BH,BH
  253.       MOV AH,09H
  254.       INT 10H
  255.       SHL CX,1
  256.       ADD DI,CX
  257.       RET
  258. DISP2:NOP
  259.       XOR BH,BH
  260.       MOV AH,0AH
  261.       INT 10H
  262.       ADD DI,CX
  263.       RET
  264. SETC1:XCHG DI,SI
  265.       CALL SETC
  266.       XCHG DI,SI
  267.       RET
  268. LCHAR:CALL SETC1
  269.       INC SI
  270.       INC SI
  271.       XOR BH,BH
  272.       MOV AH,8H
  273.       INT 10H
  274.      RET
  275. SETC:PUSH AX
  276.      MOV BL,0A0H
  277.      MOV AX,DI
  278.      DIV BL
  279.      MOV DH,AL
  280.      MOV DL,AH
  281.      SHR DL,1
  282.      MOV AH,2H
  283.      XOR BH,BH 
  284.      INT 10H
  285.      POP AX
  286.      RET
  287. DATAINDEX:DW 0998H,0706H,0713H,0717H,0727H,073EH
  288.           DW 0748H,0755H,0759H,0A85H,0A8CH,0292H,0246H,0795h
  289.           DW 06E4H,068aH,069AH,06CBH,06D8H,06ACH,0084H,0071h,0078h
  290. JMPINDEX DW OFFSET POINT1
  291.          DW OFFSET POINT2
  292.          DW OFFSET POINT3
  293.          DW OFFSET POINT4
  294.          DW OFFSET POINT5
  295.          DW OFFSET POINT5
  296.          DW OFFSET POINT7
  297.          DW OFFSET POINT3
  298.          DW OFFSET POINT9
  299.          DW OFFSET POINT3
  300.          DW OFFSET POINT3
  301.          DW OFFSET POINT12
  302.          DW OFFSET POINT13
  303.          DW OFFSET POINT31
  304.          DW OFFSET POINT32
  305.          DW OFFSET POINT33
  306.          DW OFFSET POINT5
  307.          DW OFFSET POINT33
  308.          DW OFFSET POINT3
  309.          DW OFFSET POINT5
  310.          DW OFFSET INTPOT
  311.          DW OFFSET INT161
  312.          DW OFFSET INT161
  313.          DW OFFSET RETURN
  314.  LEND:DB "PROGRAM END"
  315.  INIT:NOP
  316.       PUSH CS
  317.       POP DS
  318.       MOV DX,OFFSET INTR61
  319.       MOV AX,2561H
  320.       INT 21H
  321.       MOV DX,OFFSET  LEND
  322.       CLI
  323.       ADD DX,103H
  324.       INT 27H
  325. CODE  ENDS
  326.       END  START
  327.