home *** CD-ROM | disk | FTP | other *** search
- \ VIDEO.SEQ Direct VIDEO Screen output by Tom Zimmer
-
- FILES DEFINITIONS
-
- VARIABLE VIDEO.SEQ
-
- FORTH DEFINITIONS
-
- VARIABLE ATTRIB 7 ATTRIB !-T \ display attribute value
- VARIABLE VIDEO-SEG \ Segment of display
- VARIABLE VTSEG \ video type segment, the segment we are typing from.
-
- CODE ?VMODE ( --- N1 )
- MOV AH, # 15 INT 16 SUB AH, AH
- 1PUSH END-CODE
-
- DEFER INITMONO ' NOOP IS INITMONO \ INITIALIZATION VECTOR AVAILABLE
- DEFER INITCOLOR ' NOOP IS INITCOLOR \ FOR MONOCHROME AND COLOR
-
- HEX
- : VMODE.SET ( --- )
- ?VMODE 7 =
- IF 0B000 INITMONO
- ELSE 0B800 INITCOLOR
- THEN VIDEO-SEG ! ;
- DECIMAL
-
- CODE VTYPE ( string length x y -- )
- POP AX \ Y
- POP DX \ X
- POP BX \ LENGTH
- PUSH BX \ Save them back again
- PUSH DX
- PUSH AX
- ADD DX, BX \ Set length + X position to DL
- MOV DH, AL \ Move Y to DH
- XOR BX, BX \ Clear BX
- MOV AH, # 2
- INT 16 \ Move cursor to end of typed string
- MOV AX, # 160
- POP BX MUL BX MOV DI, AX
- POP AX SHL AX, # 1 ADD DI, AX
- POP CX POP BX
- XCHG SI, BX \ SI is the source
- PUSH BX \ Save SI for later restoral
- PUSH ES \ save ES
- MOV AH, ATTRIB \ display attributes
- MOV ES, VIDEO-SEG \ destination segment
- MOV DS, VTSEG \ source segment
- LABEL VTYPE1 LODSB STOSW \ Move a byte to display
- LOOP VTYPE1 \ LOOP till CX is zero
- POP ES \ restore ES
- POP SI \ Restore IP
- MOV BX, CS MOV DS, BX \ restore DS
- NEXT END-CODE
-
- DECIMAL
-
-