home *** CD-ROM | disk | FTP | other *** search
- CODE SEGMENT 'CODE'
- ASSUME CS:CODE,DS:CODE
- START:JMP INIT
- INTR61:PUSH AX
- PUSH BX
- PUSH DX
- PUSH DS
- PUSH CX
- PUSH BP
- PUSH AX
- cmp al,0dah
- jnz l123
- int 3
- l123: nop
- MOV BP,SP
- ADD BP,0EH
- MOV AX,[BP]
- MOV CX,17H
- PUSH CS
- POP DS
- MOV BX,OFFSET DATAINDEX
- C1: CMP AX,[BX]
- JZ LOOPOUT
- INC BX
- INC BX
- LOOP C1
- LOOPOUT: MOV BX,17H
- SUB BX,CX
- SHL BX,1
- ADD BX,OFFSET JMPINDEX
- POP AX
- JMP [BX]
- INTPOT:POP BP
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- INT 16H
- OR AL,AL
- JNZ RT
- CMP AH,68H
- JL RT
- CMP AH,72H
- JL ADD16
- CMP AH,78H
- JL RT
- CMP AH,82H
- JL SUB16
- JMP RT
- ADD16: ADD AH,10H
- JMP RT
- SUB16: SUB AH,10H
- RT: IRET
- INT161:NOP
- POP BP
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- INT 16H
- PUSHF
- OR AL,AL
- JNZ RTL
- CMP AH,68H
- JL RTL
- CMP AH,72H
- JL ADD16L
- CMP AH,78H
- JL RTL
- CMP AH,82H
- JL SUB16L
- JMP RTL
- ADD16L:ADD AH,10H
- JMP RTL
- SUB16L:SUB AH,10H
- RTL: POPF
- DB 0CAH,02H,00H
- POINT1:NOP
- CMP AL,0B3H
- JNZ SKIP1
- MOV AL,'|'
- SKIP1: NOP
- CALL SETC
- MOV CX,1H
- CALL DISP1
- POP BP
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- INC DL
- IRET
- POINT13:POP BP
- POP CX
- CMP AL,0C4H
- JNZ JJ1
- MOV AL,'-'
- JMP JMP3
- JJ1: CMP AL,0B0H
- JNZ JMP3
- MOV AL,' '
- JMP3: PUSH CX
- PUSH BP
- JMP POINT3
- POINT2:NOP
- POP BP
- MOV AL,'='
- CALL SETC
- MOV CX,1H
- CALL DISP1
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- IRET
- POINT3:NOP
- POP BP
- POP CX
- CALL SETC
- CALL DISP1
- POP DS
- POP DX
- POP BX
- POP AX
- IRET
-
- POINT4:NOP
- POP BP
- MOV AL,'='
- CALL SETC
- MOV CX,1H
- CALL DISP1
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- IRET
- POINT5:NOP
- POP BP
- ADD DI,009EH
- CALL SETC
- MOV CX,1H
- CALL DISP1
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- IRET
- POINT7:NOP
- POP BP
- MOV AL,'='
- CALL SETC
- MOV CX,1H
- CALL DISP1
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- IRET
- POINT9:NOP
- POP BP
- MOV AL,'='
- CALL SETC
- MOV CX,1H
- CALL DISP1
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- IRET
- POINT12:NOP
- POP BP
- POP CX
- POP DS
- MOV AX,DS
- CMP AX,0B800H
- JNZ J1
- PUSH CX
- JL2: CALL LCHAR
- STOSW
- LOOP JL2
- POP CX
- JMP R1
- J1: PUSH CX
- JL1: LODSW
- CALL SETC
- PUSH CX
- MOV CX,01
- CALL DISP1
- POP CX
- LOOP JL1
- POP CX
- R1: POP DX
- POP BX
- POP AX
- IRET
- POINT31:NOP
- POP BP
- POP CX
- POP DS
- PUSH CX
- LODSB
- CALL SETC
- MOV CX,1H
- CALL DISP1
- POP CX
- POP DX
- POP BX
- POP AX
- IRET
- POINT32:NOP
- POP BP
- MOV AL,'='
- CALL SETC
- MOV CX,1H
- CALL DISP1
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- IRET
- POINT33:NOP
- POP BP
- MOV AL,'='
- CALL SETC
- MOV CX,1H
- CALL DISP1
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- IRET
- RETURN:NOP
- POP BP
- POP CX
- POP DS
- POP DX
- POP BX
- POP AX
- IRET
- DISP1:MOV BL,AH
- XOR BH,BH
- MOV AH,09H
- INT 10H
- SHL CX,1
- ADD DI,CX
- RET
- DISP2:NOP
- XOR BH,BH
- MOV AH,0AH
- INT 10H
- ADD DI,CX
- RET
- SETC1:XCHG DI,SI
- CALL SETC
- XCHG DI,SI
- RET
- LCHAR:CALL SETC1
- INC SI
- INC SI
- XOR BH,BH
- MOV AH,8H
- INT 10H
- RET
- SETC:PUSH AX
- MOV BL,0A0H
- MOV AX,DI
- DIV BL
- MOV DH,AL
- MOV DL,AH
- SHR DL,1
- MOV AH,2H
- XOR BH,BH
- INT 10H
- POP AX
- RET
- DATAINDEX:DW 0998H,0706H,0713H,0717H,0727H,073EH
- DW 0748H,0755H,0759H,0A85H,0A8CH,0292H,0246H,0795h
- DW 06E4H,068aH,069AH,06CBH,06D8H,06ACH,0084H,0071h,0078h
- JMPINDEX DW OFFSET POINT1
- DW OFFSET POINT2
- DW OFFSET POINT3
- DW OFFSET POINT4
- DW OFFSET POINT5
- DW OFFSET POINT5
- DW OFFSET POINT7
- DW OFFSET POINT3
- DW OFFSET POINT9
- DW OFFSET POINT3
- DW OFFSET POINT3
- DW OFFSET POINT12
- DW OFFSET POINT13
- DW OFFSET POINT31
- DW OFFSET POINT32
- DW OFFSET POINT33
- DW OFFSET POINT5
- DW OFFSET POINT33
- DW OFFSET POINT3
- DW OFFSET POINT5
- DW OFFSET INTPOT
- DW OFFSET INT161
- DW OFFSET INT161
- DW OFFSET RETURN
- LEND:DB "PROGRAM END"
- INIT:NOP
- PUSH CS
- POP DS
- MOV DX,OFFSET INTR61
- MOV AX,2561H
- INT 21H
- MOV DX,OFFSET LEND
- CLI
- ADD DX,103H
- INT 27H
- CODE ENDS
- END START