home *** CD-ROM | disk | FTP | other *** search
- ;* -------------------------------------------------- *
- ;* BOOTCTRL.ASM *
- ;* (c) 1991 Elmar Warken & DMV-Verlag *
- ;* -------------------------------------------------- *
-
- IFNDEF ??Version
-
- ?DEBUG MACRO
- ENDM
-
- $comm MACRO name, dist, size, count
- comm dist name:BYTE:count*size
- ENDM
- ELSE
- $comm MACRO name, dist, size, count
- comm dist name[size]:BYTE:count
- ENDM
- ENDIF
-
- ?DEBUG S "BOOTCTRL.C"
- ?DEBUG C E9FC9385170A424F4F544354524C2E43
- ?DEBUG C E9B0908517084452495645522E48
-
- BootCtrl_Text SEGMENT BYTE PUBLIC 'CODE'
- BootCtrl_Text ENDS
-
- DGROUP GROUP _Data,_BSS
- ASSUME CS: BootCtrl_Text, DS: DGROUP
-
- _Data SEGMENT WORD PUBLIC 'DATA'
- d@ LABEL BYTE
- d@w LABEL WORD
- _Data ENDS
-
- _BSS SEGMENT WORD PUBLIC 'BSS'
- b@ LABEL BYTE
- b@w LABEL WORD
- _BSS ENDS
-
- BootCtrl_Text SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS: BootCtrl_Text
-
- @M$QV PROC FAR
- PUSH BP
- MOV BP,SP
- DD 52515350H, 1E065657H
- DW 1F0EH
- CALL FAR PTR @GO$QV
- LES BX, DWORD PTR DGROUP:P
- MOV WORD PTR ES:[BX+3], 256
- LES BX, DWORD PTR DGROUP:P
- MOV WORD PTR ES:[BX+14], 0
- LES BX, DWORD PTR DGROUP:P
- MOV WORD PTR ES:[BX+16], CS
- DD 5F5E071FH, 585B595AH
- POP BP
- RET
- @M$QV ENDP
-
- BootCtrl_Text ENDS
- _BSS SEGMENT WORD PUBLIC 'BSS'
- b LABEL BYTE
- DB 8096 DUP (?)
- F LABEL BYTE
- DB 5000 DUP (?)
- S LABEL BYTE
- DB 550 DUP (?)
- T LABEL BYTE
- DB 80 DUP (?)
- _BSS ENDS
-
- _Data SEGMENT WORD PUBLIC 'DATA'
- E LABEL BYTE
- DB 0
- _Data ENDS
-
- _BSS SEGMENT WORD PUBLIC 'BSS'
- _BSS ENDS
-
- BootCtrl_Text SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS: BootCtrl_Text
-
- @I$QPUCIIUC PROC FAR
- PUSH BP
- MOV BP, SP
- MOV AH, [BP+6]
- MOV AL, 2
- MOV BX, [BP+10]
- MOV CX, [BP+8]
- MOV DX, [BP+12]
- INT 21H
- JAE SHORT @2@218
- MOV DGROUP:E, 1
- @2@218:
- JMP SHORT @2@242
- @2@242:
- POP BP
- RET 8
- @I$QPUCIIUC ENDP
-
- ASSUME CS: BootCtrl_Text
- @GO$QV PROC FAR
- PUSH BP
- MOV BP, SP
- SUB SP, 14
- PUSH SI
- PUSH DI
- MOV WORD PTR [BP-14], 0
- JMP SHORT @3@74
- @3@50:
- LES BX, DWORD PTR DGROUP:P
- MOV AX, WORD PTR ES:[BX+20]
- PUSH AX
- PUSH BX
- MOV BX, WORD PTR ES:[BX+18]
- MOV AX, BX
- POP BX
- INC WORD PTR ES:[BX+18]
- MOV BX, AX
- POP ES
- MOV AL, BYTE PTR ES:[BX]
- MOV BX, WORD PTR [BP-14]
- INC WORD PTR [BP-14]
- MOV BYTE PTR DGROUP:T[BX], AL
- @3@74:
- LES BX, DWORD PTR DGROUP:P
- LES BX, DWORD PTR ES:[BX+18]
- CMP BYTE PTR ES:[BX], 13
- JNE SHORT @3@50
- MOV BX, WORD PTR [BP-14]
- MOV BYTE PTR DGROUP:T[BX], 32
- MOV SI, OFFSET DGROUP:T
- JMP SHORT @3@122
- @3@122:
- MOV BX, SI
- INC SI
- CMP BYTE PTR [BX], 32
- JE SHORT @3@170
- CMP BYTE PTR [SI], 10
- JNE SHORT @3@122
- @3@170:
- DEC SI
- MOV BX, SI
- MOV BYTE PTR [BX], 0
- MOV AX, SI
- INC AX
- INC AX
- MOV WORD PTR [BP-4], AX
- JMP @3@818
- @3@194:
- MOV SI,WORD PTR [BP-4]
- JMP SHORT @3@218
- @3@218:
- MOV BX, SI
- INC SI
- CMP BYTE PTR [BX], 32
- JE SHORT @3@266
- CMP BYTE PTR [SI], 10
- JNE SHORT @3@218
- @3@266:
- DEC SI
- MOV BX, SI
- MOV BYTE PTR [BX], 0
- PUSH WORD PTR [BP-4]
- XOR AX, AX
- PUSH AX
- XOR AX, AX
- PUSH AX
- MOV AL, 61
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- MOV WORD PTR [BP-6], AX
- CMP BYTE PTR DGROUP:E, 0
- JE SHORT @3@314
- JMP @3@842
- @3@314:
- INC SI
- MOV AX, SI
- MOV WORD PTR [BP-4], AX
- MOV WORD PTR [BP-2], OFFSET DGROUP:F
- MOV AX, OFFSET DGROUP:b
- MOV DI, AX
- PUSH AX
- PUSH WORD PTR [BP-6]
- MOV AX, 8096
- PUSH AX
- MOV AL, 63
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- MOV WORD PTR [BP-14], AX
- @3@338:
- MOV BYTE PTR DGROUP:S+49, 10
- MOV SI, OFFSET DGROUP:S
- JMP SHORT @3@386
- @3@362:
- INC SI
- DEC WORD PTR [BP-14]
- @3@386:
- MOV BX, DI
- INC DI
- MOV AL, BYTE PTR [BX]
- MOV BYTE PTR [SI], AL
- CMP AL, 10
- JNE SHORT @3@362
- DEC WORD PTR [BP-14]
- MOV AX, OFFSET DGROUP:S
- PUSH AX
- XOR AX, AX
- PUSH AX
- XOR AX, AX
- PUSH AX
- MOV AL,9
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- MOV AX, OFFSET DGROUP:S@
- PUSH AX
- XOR AX, AX
- PUSH AX
- XOR AX, AX
- PUSH AX
- MOV AL, 9
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- MOV WORD PTR [BP-12], 0
- MOV SI, OFFSET DGROUP:S+49
- JMP SHORT @3@458
- @3@434:
- MOV BX, SI
- INC SI
- MOV AL, BYTE PTR [BX]
- MOV BX, WORD PTR [BP-2]
- INC WORD PTR [BP-2]
- MOV BYTE PTR [BX], AL
- @3@458:
- MOV AX, WORD PTR [BP-12]
- INC WORD PTR [BP-12]
- CMP AX, 500
- JL SHORT @3@434
- CMP WORD PTR [BP-14], 0
- JNE SHORT @3@338
- XOR AX, AX
- PUSH AX
- PUSH WORD PTR [BP-6]
- XOR AX, AX
- PUSH AX
- MOV AL, 62
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- XOR AX, AX
- PUSH AX
- XOR AX, AX
- PUSH AX
- XOR AX, AX
- PUSH AX
- MOV AL, 7
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- AND AX, 255
- ADD AX, 65488
- MOV WORD PTR [BP-12], AX
- MOV AX, WORD PTR [BP-12]
- MOV DX, 500
- IMUL DX
- MOV DX, OFFSET DGROUP:F
- ADD DX, AX
- MOV DI, DX
- JMP @3@794
- @3@530:
- MOV SI, DI
- JMP SHORT @3@554
- @3@554:
- MOV BX, SI
- INC SI
- CMP BYTE PTR [BX], 32
- JE SHORT @3@602
- CMP BYTE PTR [SI], 10
- JNE SHORT @3@554
- @3@602:
- DEC SI
- MOV BX, SI
- MOV BYTE PTR [BX], 0
- INC SI
- MOV AX, SI
- MOV WORD PTR [BP-2], AX
- MOV SI, WORD PTR [BP-2]
- JMP SHORT @3@626
- @3@626:
- MOV BX, SI
- INC SI
- CMP BYTE PTR [BX], 32
- JE SHORT @3@674
- CMP BYTE PTR [SI], 10
- JNE SHORT @3@626
- @3@674:
- DEC SI
- MOV BX, SI
- MOV BYTE PTR [BX], 0
- PUSH DI
- XOR AX, AX
- PUSH AX
- XOR AX, AX
- PUSH AX
- MOV AL, 61
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- MOV WORD PTR [BP-8], AX
- CMP BYTE PTR DGROUP:E, 0
- JE SHORT @3@722
- JMP SHORT @3@818
- @3@722:
- PUSH WORD PTR [BP-2]
- XOR AX, AX
- PUSH AX
- XOR AX, AX
- PUSH AX
- MOV AL, 60
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- MOV WORD PTR [BP-10], AX
- JMP SHORT @3@746
- @3@746:
- MOV AX, OFFSET DGROUP:b
- PUSH AX
- PUSH WORD PTR [BP-10]
- MOV AX, OFFSET DGROUP:b
- PUSH AX
- PUSH WORD PTR [BP-8]
- MOV AX, 8096
- PUSH AX
- MOV AL, 63
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- PUSH AX
- MOV AL, 64
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- CMP AX, 8096
- JE SHORT @3@746
- XOR AX, AX
- PUSH AX
- PUSH WORD PTR [BP-8]
- XOR AX, AX
- PUSH AX
- MOV AL, 62
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- XOR AX, AX
- PUSH AX
- PUSH WORD PTR [BP-10]
- XOR AX, AX
- PUSH AX
- MOV AL, 62
- PUSH AX
- PUSH CS
- CALL NEAR PTR @I$QPUCIIUC
- INC SI
- MOV AX, SI
- MOV DI, AX
- @3@794:
- CMP BYTE PTR [DI], 10
- JE @3@818
- JMP @3@530
- @3@818:
- MOV BX, WORD PTR [BP-4]
- CMP BYTE PTR [BX], 0
- JE @3@842
- JMP @3@194
- @3@842:
- POP DI
- POP SI
- MOV SP, BP
- POP BP
- RET
-
- @GO$QV ENDP
- ?DEBUG C E9
- BootCtrl_Text ENDS
-
- _Data SEGMENT WORD PUBLIC 'DATA'
- S@ LABEL BYTE
- DB 13, 10, "$", 0
- _Data ENDS
-
- BootCtrl_Text SEGMENT BYTE PUBLIC 'CODE'
- BootCtrl_Text ENDS
-
- PUBLIC @M$QV
- PUBLIC @GO$QV
- EXTRN P:DWORD
- PUBLIC b
- PUBLIC F
- PUBLIC S
- PUBLIC T
- PUBLIC E
- PUBLIC @I$QPUCIIUC
- END
-
- ;* -------------------------------------------------- *
- ;* Ende von BOOTCTRL.ASM *
-