home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / bootctrl / bootctrl.asm next >
Encoding:
Assembly Source File  |  1991-12-06  |  10.2 KB  |  411 lines

  1. ;* -------------------------------------------------- *
  2. ;*                    BOOTCTRL.ASM                    *
  3. ;*        (c) 1991 Elmar Warken & DMV-Verlag          *
  4. ;* -------------------------------------------------- *
  5.  
  6. IFNDEF  ??Version
  7.  
  8.   ?DEBUG  MACRO
  9.           ENDM
  10.  
  11.   $comm   MACRO   name, dist, size, count
  12.           comm    dist name:BYTE:count*size
  13.           ENDM
  14. ELSE
  15.   $comm   MACRO   name, dist, size, count
  16.           comm    dist name[size]:BYTE:count
  17.           ENDM
  18. ENDIF
  19.  
  20. ?DEBUG    S     "BOOTCTRL.C"
  21. ?DEBUG    C     E9FC9385170A424F4F544354524C2E43
  22. ?DEBUG    C     E9B0908517084452495645522E48
  23.  
  24. BootCtrl_Text   SEGMENT BYTE PUBLIC 'CODE'
  25. BootCtrl_Text   ENDS
  26.  
  27. DGROUP  GROUP   _Data,_BSS
  28.         ASSUME  CS: BootCtrl_Text, DS: DGROUP
  29.  
  30. _Data   SEGMENT WORD PUBLIC 'DATA'
  31. d@      LABEL   BYTE
  32. d@w     LABEL   WORD
  33. _Data   ENDS
  34.  
  35. _BSS    SEGMENT WORD PUBLIC 'BSS'
  36. b@      LABEL   BYTE
  37. b@w     LABEL   WORD
  38. _BSS    ENDS
  39.  
  40. BootCtrl_Text   SEGMENT BYTE PUBLIC 'CODE'
  41.         ASSUME  CS: BootCtrl_Text
  42.  
  43. @M$QV   PROC    FAR
  44.         PUSH    BP
  45.         MOV     BP,SP
  46.         DD      52515350H, 1E065657H
  47.         DW      1F0EH
  48.         CALL    FAR PTR @GO$QV
  49.         LES     BX, DWORD PTR DGROUP:P
  50.         MOV     WORD PTR ES:[BX+3], 256
  51.         LES     BX, DWORD PTR DGROUP:P
  52.         MOV     WORD PTR ES:[BX+14], 0
  53.         LES     BX, DWORD PTR DGROUP:P
  54.         MOV     WORD PTR ES:[BX+16], CS
  55.         DD      5F5E071FH, 585B595AH
  56.         POP     BP
  57.         RET     
  58. @M$QV   ENDP
  59.  
  60. BootCtrl_Text   ENDS
  61. _BSS    SEGMENT WORD PUBLIC 'BSS'
  62. b       LABEL   BYTE
  63.         DB      8096 DUP (?)
  64. F       LABEL   BYTE
  65.         DB      5000 DUP (?)
  66. S       LABEL   BYTE
  67.         DB      550 DUP (?)
  68. T       LABEL   BYTE
  69.         DB      80 DUP (?)
  70. _BSS    ENDS
  71.  
  72. _Data   SEGMENT WORD PUBLIC 'DATA'
  73. E       LABEL   BYTE
  74.         DB      0
  75. _Data   ENDS
  76.  
  77. _BSS    SEGMENT WORD PUBLIC 'BSS'
  78. _BSS    ENDS
  79.  
  80. BootCtrl_Text   SEGMENT BYTE PUBLIC 'CODE'
  81.         ASSUME  CS: BootCtrl_Text
  82.  
  83. @I$QPUCIIUC     PROC    FAR
  84.         PUSH    BP
  85.         MOV     BP, SP
  86.         MOV     AH, [BP+6]
  87.         MOV     AL, 2
  88.         MOV     BX, [BP+10]
  89.         MOV     CX, [BP+8]
  90.         MOV     DX, [BP+12]
  91.         INT     21H
  92.         JAE     SHORT @2@218
  93.         MOV     DGROUP:E, 1
  94. @2@218:
  95.         JMP     SHORT @2@242
  96. @2@242:
  97.         POP     BP
  98.         RET     8
  99. @I$QPUCIIUC     ENDP
  100.  
  101.         ASSUME  CS: BootCtrl_Text
  102. @GO$QV  PROC    FAR
  103.         PUSH    BP
  104.         MOV     BP, SP
  105.         SUB     SP, 14
  106.         PUSH    SI
  107.         PUSH    DI
  108.         MOV     WORD PTR [BP-14], 0
  109.         JMP     SHORT @3@74
  110. @3@50:
  111.         LES     BX, DWORD PTR DGROUP:P
  112.         MOV     AX, WORD PTR ES:[BX+20]
  113.         PUSH    AX
  114.         PUSH    BX
  115.         MOV     BX, WORD PTR ES:[BX+18]
  116.         MOV     AX, BX
  117.         POP     BX
  118.         INC     WORD PTR ES:[BX+18]
  119.         MOV     BX, AX
  120.         POP     ES
  121.         MOV     AL, BYTE PTR ES:[BX]
  122.         MOV     BX, WORD PTR [BP-14]
  123.         INC     WORD PTR [BP-14]
  124.         MOV     BYTE PTR DGROUP:T[BX], AL
  125. @3@74:
  126.         LES     BX, DWORD PTR DGROUP:P
  127.         LES     BX, DWORD PTR ES:[BX+18]
  128.         CMP     BYTE PTR ES:[BX], 13
  129.         JNE     SHORT @3@50
  130.         MOV     BX, WORD PTR [BP-14]
  131.         MOV     BYTE PTR DGROUP:T[BX], 32
  132.         MOV     SI, OFFSET DGROUP:T
  133.         JMP     SHORT @3@122
  134. @3@122:
  135.         MOV     BX, SI
  136.         INC     SI
  137.         CMP     BYTE PTR [BX], 32
  138.         JE      SHORT @3@170
  139.         CMP     BYTE PTR [SI], 10
  140.         JNE     SHORT @3@122
  141. @3@170:
  142.         DEC     SI
  143.         MOV     BX, SI
  144.         MOV     BYTE PTR [BX], 0
  145.         MOV     AX, SI
  146.         INC     AX
  147.         INC     AX
  148.         MOV     WORD PTR [BP-4], AX
  149.         JMP     @3@818
  150. @3@194:
  151.         MOV     SI,WORD PTR [BP-4]
  152.         JMP     SHORT @3@218
  153. @3@218:
  154.         MOV     BX, SI
  155.         INC     SI
  156.         CMP     BYTE PTR [BX], 32
  157.         JE      SHORT @3@266
  158.         CMP     BYTE PTR [SI], 10
  159.         JNE     SHORT @3@218
  160. @3@266:
  161.         DEC     SI
  162.         MOV     BX, SI
  163.         MOV     BYTE PTR [BX], 0
  164.         PUSH    WORD PTR [BP-4]
  165.         XOR     AX, AX
  166.         PUSH    AX
  167.         XOR     AX, AX
  168.         PUSH    AX
  169.         MOV     AL, 61
  170.         PUSH    AX
  171.         PUSH    CS
  172.         CALL    NEAR PTR @I$QPUCIIUC
  173.         MOV     WORD PTR [BP-6], AX
  174.         CMP     BYTE PTR DGROUP:E, 0
  175.         JE      SHORT @3@314
  176.         JMP     @3@842
  177. @3@314:
  178.         INC     SI
  179.         MOV     AX, SI
  180.         MOV     WORD PTR [BP-4], AX
  181.         MOV     WORD PTR [BP-2], OFFSET DGROUP:F
  182.         MOV     AX, OFFSET DGROUP:b
  183.         MOV     DI, AX
  184.         PUSH    AX
  185.         PUSH    WORD PTR [BP-6]
  186.         MOV     AX, 8096
  187.         PUSH    AX
  188.         MOV     AL, 63
  189.         PUSH    AX
  190.         PUSH    CS
  191.         CALL    NEAR PTR @I$QPUCIIUC
  192.         MOV     WORD PTR [BP-14], AX
  193. @3@338:
  194.         MOV     BYTE PTR DGROUP:S+49, 10
  195.         MOV     SI, OFFSET DGROUP:S
  196.         JMP     SHORT @3@386
  197. @3@362:
  198.         INC     SI
  199.         DEC     WORD PTR [BP-14]
  200. @3@386:
  201.         MOV     BX, DI
  202.         INC     DI
  203.         MOV     AL, BYTE PTR [BX]
  204.         MOV     BYTE PTR [SI], AL
  205.         CMP     AL, 10
  206.         JNE     SHORT @3@362
  207.         DEC     WORD PTR [BP-14]
  208.         MOV     AX, OFFSET DGROUP:S
  209.         PUSH    AX
  210.         XOR     AX, AX
  211.         PUSH    AX
  212.         XOR     AX, AX
  213.         PUSH    AX
  214.         MOV     AL,9
  215.         PUSH    AX
  216.         PUSH    CS
  217.         CALL    NEAR PTR @I$QPUCIIUC
  218.         MOV     AX, OFFSET DGROUP:S@
  219.         PUSH    AX
  220.         XOR     AX, AX
  221.         PUSH    AX
  222.         XOR     AX, AX
  223.         PUSH    AX
  224.         MOV     AL, 9
  225.         PUSH    AX
  226.         PUSH    CS
  227.         CALL    NEAR PTR @I$QPUCIIUC
  228.         MOV     WORD PTR [BP-12], 0
  229.         MOV     SI, OFFSET DGROUP:S+49
  230.         JMP     SHORT @3@458
  231. @3@434:
  232.         MOV     BX, SI
  233.         INC     SI
  234.         MOV     AL, BYTE PTR [BX]
  235.         MOV     BX, WORD PTR [BP-2]
  236.         INC     WORD PTR [BP-2]
  237.         MOV     BYTE PTR [BX], AL
  238. @3@458:
  239.         MOV     AX, WORD PTR [BP-12]
  240.         INC     WORD PTR [BP-12]
  241.         CMP     AX, 500
  242.         JL      SHORT @3@434
  243.         CMP     WORD PTR [BP-14], 0
  244.         JNE     SHORT @3@338
  245.         XOR     AX, AX
  246.         PUSH    AX
  247.         PUSH    WORD PTR [BP-6]
  248.         XOR     AX, AX
  249.         PUSH    AX
  250.         MOV     AL, 62
  251.         PUSH    AX
  252.         PUSH    CS
  253.         CALL    NEAR PTR @I$QPUCIIUC
  254.         XOR     AX, AX
  255.         PUSH    AX
  256.         XOR     AX, AX
  257.         PUSH    AX
  258.         XOR     AX, AX
  259.         PUSH    AX
  260.         MOV     AL, 7
  261.         PUSH    AX
  262.         PUSH    CS
  263.         CALL    NEAR PTR @I$QPUCIIUC
  264.         AND     AX, 255
  265.         ADD     AX, 65488
  266.         MOV     WORD PTR [BP-12], AX
  267.         MOV     AX, WORD PTR [BP-12]
  268.         MOV     DX, 500
  269.         IMUL    DX
  270.         MOV     DX, OFFSET DGROUP:F
  271.         ADD     DX, AX
  272.         MOV     DI, DX
  273.         JMP     @3@794
  274. @3@530:
  275.         MOV     SI, DI
  276.         JMP     SHORT @3@554
  277. @3@554:
  278.         MOV     BX, SI
  279.         INC     SI
  280.         CMP     BYTE PTR [BX], 32
  281.         JE      SHORT @3@602
  282.         CMP     BYTE PTR [SI], 10
  283.         JNE     SHORT @3@554
  284. @3@602:
  285.         DEC     SI
  286.         MOV     BX, SI
  287.         MOV     BYTE PTR [BX], 0
  288.         INC     SI
  289.         MOV     AX, SI
  290.         MOV     WORD PTR [BP-2], AX
  291.         MOV     SI, WORD PTR [BP-2]
  292.         JMP     SHORT @3@626
  293. @3@626:
  294.         MOV     BX, SI
  295.         INC     SI
  296.         CMP     BYTE PTR [BX], 32
  297.         JE      SHORT @3@674
  298.         CMP     BYTE PTR [SI], 10
  299.         JNE     SHORT @3@626
  300. @3@674:
  301.         DEC     SI
  302.         MOV     BX, SI
  303.         MOV     BYTE PTR [BX], 0
  304.         PUSH    DI
  305.         XOR     AX, AX
  306.         PUSH    AX
  307.         XOR     AX, AX
  308.         PUSH    AX
  309.         MOV     AL, 61
  310.         PUSH    AX
  311.         PUSH    CS
  312.         CALL    NEAR PTR @I$QPUCIIUC
  313.         MOV     WORD PTR [BP-8], AX
  314.         CMP     BYTE PTR DGROUP:E, 0
  315.         JE      SHORT @3@722
  316.         JMP     SHORT @3@818
  317. @3@722:
  318.         PUSH    WORD PTR [BP-2]
  319.         XOR     AX, AX
  320.         PUSH    AX
  321.         XOR     AX, AX
  322.         PUSH    AX
  323.         MOV     AL, 60
  324.         PUSH    AX
  325.         PUSH    CS
  326.         CALL    NEAR PTR @I$QPUCIIUC
  327.         MOV     WORD PTR [BP-10], AX
  328.         JMP     SHORT @3@746
  329. @3@746:
  330.         MOV     AX, OFFSET DGROUP:b
  331.         PUSH    AX
  332.         PUSH    WORD PTR [BP-10]
  333.         MOV     AX, OFFSET DGROUP:b
  334.         PUSH    AX
  335.         PUSH    WORD PTR [BP-8]
  336.         MOV     AX, 8096
  337.         PUSH    AX
  338.         MOV     AL, 63
  339.         PUSH    AX
  340.         PUSH    CS
  341.         CALL    NEAR PTR @I$QPUCIIUC
  342.         PUSH    AX
  343.         MOV     AL, 64
  344.         PUSH    AX
  345.         PUSH    CS
  346.         CALL    NEAR PTR @I$QPUCIIUC
  347.         CMP     AX, 8096
  348.         JE      SHORT @3@746
  349.         XOR     AX, AX
  350.         PUSH    AX
  351.         PUSH    WORD PTR [BP-8]
  352.         XOR     AX, AX
  353.         PUSH    AX
  354.         MOV     AL, 62
  355.         PUSH    AX
  356.         PUSH    CS
  357.         CALL    NEAR PTR @I$QPUCIIUC
  358.         XOR     AX, AX
  359.         PUSH    AX
  360.         PUSH    WORD PTR [BP-10]
  361.         XOR     AX, AX
  362.         PUSH    AX
  363.         MOV     AL, 62
  364.         PUSH    AX
  365.         PUSH    CS
  366.         CALL    NEAR PTR @I$QPUCIIUC
  367.         INC     SI
  368.         MOV     AX, SI
  369.         MOV     DI, AX
  370. @3@794:
  371.         CMP     BYTE PTR [DI], 10
  372.         JE      @3@818
  373.         JMP     @3@530
  374. @3@818:
  375.         MOV     BX, WORD PTR [BP-4]
  376.         CMP     BYTE PTR [BX], 0
  377.         JE      @3@842
  378.         JMP     @3@194
  379. @3@842:
  380.         POP     DI
  381.         POP     SI
  382.         MOV     SP, BP
  383.         POP     BP
  384.         RET
  385.  
  386. @GO$QV  ENDP
  387.         ?DEBUG  C E9
  388. BootCtrl_Text   ENDS
  389.  
  390. _Data   SEGMENT WORD PUBLIC 'DATA'
  391. S@      LABEL   BYTE
  392.         DB      13, 10, "$", 0
  393. _Data   ENDS
  394.  
  395. BootCtrl_Text   SEGMENT BYTE PUBLIC 'CODE'
  396. BootCtrl_Text   ENDS
  397.  
  398.         PUBLIC  @M$QV
  399.         PUBLIC  @GO$QV
  400.         EXTRN   P:DWORD
  401.         PUBLIC  b
  402.         PUBLIC  F
  403.         PUBLIC  S
  404.         PUBLIC  T
  405.         PUBLIC  E
  406.         PUBLIC  @I$QPUCIIUC
  407. END
  408.  
  409. ;* -------------------------------------------------- *
  410. ;*              Ende von BOOTCTRL.ASM                 *
  411.