home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / basq / source / poweru / dtrace.asm < prev    next >
Encoding:
Assembly Source File  |  1993-06-06  |  5.2 KB  |  312 lines

  1. .286
  2. .MODEL TINY
  3. .CODE
  4. ORG 100H
  5.  
  6. START:        JMP    REALSTART
  7.  
  8.         OLDINT13_OFF    DW    0
  9.         OLDINT13_SEG    DW    0
  10.         ACTIVE        DB    0
  11.  
  12.         DRIVEOPTEXT    DB    30 DUP(0)
  13.         BACKGRND    DW    30 DUP(0)
  14.  
  15.         INTFUNCTABLE    DB    0
  16.                 DW    FUNC00H
  17.                 DB    2
  18.                 DW    FUNC02H
  19.                 DB    3
  20.                 DW    FUNC03H
  21.                 DB    4
  22.                 DW    FUNC04H
  23.                 DB    5
  24.                 DW    FUNC05H
  25.                 DB    0AH
  26.                 DW    FUNC0AH
  27.                 DB    0BH
  28.                 DW    FUNC0BH
  29.                 DB    0CH
  30.                 DW    FUNC0CH
  31.                 DB    0DH
  32.                 DW    FUNC0DH
  33.                 DB    11H
  34.                 DW    FUNC11H
  35.                 DB    16H
  36.                 DW    FUNC16H
  37.  
  38.         TRACK        DW    0
  39.         HEAD        DB    0
  40.         SECTOR        DB    0
  41.         DRIVE        DB    0
  42.         TOSECT        DB    0
  43.  
  44.         FUNC00HTEXT    DB    "RESET                         "
  45.         FUNC02HTEXT    DB    "  READ   T:00000 H:00 S:00-00 "
  46.         FUNC03HTEXT    DB    "  WRITE  T:00000 H:00 S:00-00 "
  47.         FUNC04HTEXT    DB    "  VERIFY T:00000 H:00 S:00-00 "
  48.         FUNC05HTEXT    DB    "  FORMAT T:00000 H:00         "
  49.         FUNC0AHTEXT    DB    "  LREAD  T:00000 H:00 S:00-00 "
  50.         FUNC0BHTEXT    DB    "  LWRITE T:00000 H:00 S:00-00 "
  51.         FUNC0CHTEXT    DB    "  SEEK   T:00000 H:00         "
  52.         FUNC0DHTEXT    DB    "  ALTERNATE DISK RESET        "
  53.         FUNC11HTEXT    DB    "  CALIBRATE                   "
  54.         FUNC16HTEXT    DB    "DISK CHANGE EXAMINATION       "
  55.  
  56. ;------------------------------------------------------------------------------
  57.  
  58. NEWINT13H:    PUSHA
  59.         PUSHF
  60.         PUSH    ES
  61.         PUSH    DS
  62.         PUSH    CS
  63.         POP    DS
  64.         MOV    ACTIVE,0
  65.         XOR    SI,SI
  66. RETRYFUNCSEARCH:CMP    INTFUNCTABLE[SI],255
  67.         JZ    NOACTIVE
  68.         CMP    INTFUNCTABLE[SI],AH
  69.         JNZ    NOTHISFUNC
  70.         INC    SI
  71.         JMP    WORD PTR INTFUNCTABLE[SI]
  72. NOTHISFUNC:    ADD    SI,3
  73.         JMP    RETRYFUNCSEARCH
  74. ACTIVATE:    MOV    ACTIVE,1
  75.         XOR    SI,SI
  76.         LEA    DI,BACKGRND
  77.         CLD
  78.         MOV    CX,30
  79.         MOV    AX,CS
  80.         MOV    ES,AX
  81.         MOV    AX,0B800H
  82.         MOV    DS,AX
  83.         REP    MOVSW
  84.         MOV    AX,DS
  85.         MOV    ES,AX
  86.         MOV    AX,CS
  87.         MOV    DS,AX
  88.         MOV    CX,30
  89.         MOV    AH,01110000B
  90.         XOR    DI,DI
  91.         LEA    SI,DRIVEOPTEXT
  92. PUTTEXTCIK:    LODSB
  93.         STOSW
  94.         LOOP    PUTTEXTCIK
  95. NOACTIVE:    POP    DS
  96.         POP    ES
  97.         POPF
  98.         POPA
  99.         PUSHF
  100.         CALL    DWORD PTR CS:[OLDINT13_OFF]
  101.         PUSHF
  102.         PUSH    AX
  103.         PUSH    CX
  104.         PUSH    SI
  105.         PUSH    DI
  106.         PUSH    ES
  107.         PUSH    DS
  108.         CMP    CS:ACTIVE,1
  109.         JNZ    NOCLEARBCK
  110.         MOV    AX,CS
  111.         MOV    DS,AX
  112.         MOV    AX,0B800H
  113.         MOV    ES,AX
  114.         XOR    DI,DI
  115.         LEA    SI,BACKGRND
  116.         MOV    CX,30
  117.         CLD
  118.         REP    MOVSW
  119. NOCLEARBCK:    POP    DS
  120.         POP    ES
  121.         POP    DI
  122.         POP    SI
  123.         POP    CX
  124.         POP    AX
  125.         POPF
  126. INTLENGTH:    RETF    2
  127.  
  128. COPYTEXT:    LEA    DI,DRIVEOPTEXT
  129.         MOV    AX,CS
  130.         MOV    DS,AX
  131.         MOV    ES,AX
  132.         MOV    CX,15
  133.         CLD
  134.         REP    MOVSW
  135.         RET
  136.  
  137. SETDRIVE:    CMP    DRIVE,80H
  138.         JB    NOFIXEDDISK
  139.         SUB    DRIVE,7EH
  140. NOFIXEDDISK:    MOV    AL,DRIVE
  141.         ADD    AL,41H
  142.         MOV    DRIVEOPTEXT[0],AL
  143.         MOV    DRIVEOPTEXT[1],":"
  144.         RET
  145.  
  146. DECIMALCONVERT:    LEA    BX,DRIVEOPTEXT
  147.         ADD    SI,BX
  148.         MOV    BX,10
  149. DECCONVCIK:    XOR    DX,DX
  150.         DIV    BX
  151.         ADD    DL,30H
  152.         MOV    DS:[SI],DL
  153.         DEC    SI
  154.         LOOP    DECCONVCIK
  155.         RET
  156.  
  157. SETVALUES:    MOV    DRIVE,DL
  158.         MOV    HEAD,DH
  159.         MOV    BYTE PTR TRACK[0],CH
  160.         MOV    BYTE PTR TRACK[1],CL
  161.         SHR    BYTE PTR TRACK[1],7
  162.         AND    CL,00111111B
  163.         MOV    SECTOR,CL
  164.         MOV    TOSECT,AL
  165.         RET
  166.  
  167. SETALLVALUES:    CALL    COPYTEXT
  168.         CALL    SETDRIVE
  169.         MOV    AX,TRACK
  170.         MOV    SI,15
  171.         MOV    CX,5
  172.         CALL    DECIMALCONVERT
  173.         MOV    AL,SECTOR
  174.         XOR    AH,AH
  175.         MOV    SI,25
  176.         MOV    CX,2
  177.         CALL    DECIMALCONVERT
  178.         MOV    AL,HEAD
  179.         XOR    AH,AH
  180.         MOV    SI,20
  181.         MOV    CX,2
  182.         CALL    DECIMALCONVERT
  183.         MOV    AL,TOSECT
  184.         XOR    AH,AH
  185.         MOV    CX,2
  186.         MOV    SI,28
  187.         CALL    DECIMALCONVERT
  188.         RET
  189.  
  190. FUNC00H:    LEA    SI,FUNC00HTEXT
  191.         CALL    COPYTEXT
  192.         JMP    ACTIVATE
  193.  
  194. FUNC02H:    CALL    SETVALUES
  195.         LEA    SI,FUNC02HTEXT
  196.         CALL    SETALLVALUES
  197.         JMP    ACTIVATE
  198.  
  199. FUNC03H:    CALL    SETVALUES
  200.         LEA    SI,FUNC03HTEXT
  201.         CALL    SETALLVALUES
  202.         JMP    ACTIVATE
  203.  
  204. FUNC04H:    CALL    SETVALUES
  205.         LEA    SI,FUNC04HTEXT
  206.         CALL    SETALLVALUES
  207.         JMP    ACTIVATE
  208.  
  209. FUNC05H:    MOV    DRIVE,DL
  210.         MOV    HEAD,DH
  211.         SHR    CL,7
  212.         MOV    BYTE PTR TRACK[0],CH
  213.         MOV    BYTE PTR TRACK[1],CL
  214.         LEA    SI,FUNC05HTEXT
  215.         CALL    COPYTEXT
  216.         CALL    SETDRIVE
  217.         MOV    AX,TRACK
  218.         MOV    SI,15
  219.         MOV    CX,5
  220.         CALL    DECIMALCONVERT
  221.         MOV    AL,HEAD
  222.         XOR    AH,AH
  223.         MOV    SI,20
  224.         MOV    CX,2
  225.         CALL    DECIMALCONVERT
  226.         JMP    ACTIVATE
  227.  
  228. FUNC0AH:    CALL    SETVALUES
  229.         LEA    SI,FUNC0AHTEXT
  230.         CALL    SETALLVALUES
  231.         JMP    ACTIVATE
  232.  
  233. FUNC0BH:    CALL    SETVALUES
  234.         LEA    SI,FUNC0BHTEXT
  235.         CALL    SETALLVALUES
  236.         JMP    ACTIVATE
  237.  
  238. FUNC0CH:    MOV    HEAD,DH
  239.         MOV    BYTE PTR TRACK[0],CH
  240.         SHR    CL,7
  241.         MOV    BYTE PTR TRACK[1],CL
  242.         MOV    DRIVE,DL
  243.         LEA    SI,FUNC0CHTEXT
  244.         CALL    COPYTEXT
  245.         CALL    SETDRIVE
  246.         MOV    SI,15
  247.         MOV    AX,TRACK
  248.         MOV    CX,5
  249.         CALL    DECIMALCONVERT
  250.         MOV    SI,20
  251.         MOV    AL,HEAD
  252.         XOR    AH,AH
  253.         MOV    CX,2
  254.         CALL    DECIMALCONVERT
  255.         JMP    ACTIVATE
  256.  
  257. FUNC0DH:    MOV    DRIVE,DL
  258.         LEA    SI,FUNC0DHTEXT
  259.         CALL    COPYTEXT
  260.         CALL    SETDRIVE
  261.         JMP    ACTIVATE
  262.  
  263. FUNC11H:    MOV    DRIVE,DL
  264.         LEA    SI,FUNC11HTEXT
  265.         CALL    COPYTEXT
  266.         CALL    SETDRIVE
  267.         JMP    ACTIVATE
  268.  
  269. FUNC16H:    LEA    SI,FUNC16HTEXT
  270.         CALL    COPYTEXT
  271.         JMP    ACTIVATE
  272.  
  273. REALSTART:      LEA    DX,PRGTEXT
  274.         MOV    AH,9
  275.         INT    21H
  276.         MOV    AH,35H
  277.         MOV    AL,013H
  278.         INT    21H
  279.         MOV    OLDINT13_OFF,BX
  280.         MOV    DI,BX
  281.         MOV    BX,ES
  282.         MOV    OLDINT13_SEG,BX
  283.         CLD
  284.         LEA    SI,NEWINT13H
  285.         LEA    CX,INTLENGTH
  286.         SUB    CX,SI
  287.         INC    CX
  288.         MOV    AX,CS
  289.         MOV    DS,AX
  290.         REPZ    CMPSB
  291.         OR    CX,CX
  292.         JZ    INSTERROR
  293.         LEA    DX,NEWINT13H
  294.         MOV    AH,25H
  295.         MOV    AL,13H
  296.         INT    21H
  297.         LEA    DX,INSTALLED
  298.         MOV    AH,9
  299.         INT    21H
  300.         LEA    DX,REALSTART
  301.         INT    27H
  302. INSTERROR:    MOV    AH,9
  303.         LEA    DX,AINSTALLED
  304.         INT    21H
  305.         INT    20H
  306.  
  307.         PRGTEXT        DB    13,10,"DISK TRACE V1.0 BY "
  308.                 DB    "PSYCHO/TSI (C) '93",13,10,13,10,"$"
  309.         INSTALLED    DB    "DISK TRACE NOW INSTALLED!",13,10,13,10,"$"
  310.         AINSTALLED    DB    "DISK TRACE IS ALREADY INSTALLED!!",13,10,13,10,"$"
  311. END START
  312.