home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
forth
/
compiler
/
fpc
/
source
/
ibmcursr.seq
< prev
next >
Wrap
Text File
|
1989-09-07
|
5KB
|
154 lines
\ IBMCURSR IBM Specific display Enhancements by Tom Zimmer
DECIMAL
CODE IBM-AT ( col row -- ) \ set cursor position
POP AX
POP DX
MOV DH, AL
XOR BH, BH
MOV AH, # 2
PUSH SI PUSH BP
INT $10
POP BP POP SI
NEXT C;
\ CODE IBM-SCR@ ( --- N1 )
\ XOR BH, BH
\ MOV AH, # 8
\ PUSH SI PUSH BP
\ INT $10
\ POP BP POP SI
\ 1PUSH END-CODE
\ CODE IBM-SCR! ( N1 --- )
\ XOR BH, BH
\ MOV CX, # 1 \ one character
\ POP AX
\ MOV BL, AH \ attrib to BL
\ MOV AH, # 9
\ PUSH SI PUSH BP
\ INT $10
\ POP BP POP SI
\ NEXT END-CODE
CODE IBM-AT? ( -- col row ) \ read cursor position
XOR BH, BH
MOV AH, # 3
PUSH SI PUSH BP
INT $10
POP BP POP SI
SUB AX, AX
MOV AL, DH
MOV DH, AH
2PUSH END-CODE
CODE IBM-DARK ( -- ) \ Clear the screen
MOV AH, # $0F
PUSH SI PUSH BP
INT $10
SUB AH, AH
INT $10 \ send it back, clearing the screen
POP BP POP SI
NEXT C;
CODE LFILLW ( seg start-addr BYTE-count WORD -- )
CLD POP AX
POP CX
SHR CX, # 1
POP DI POP BX
MOV DX, ES MOV ES, BX
REPNZ STOSW
MOV ES, DX
NEXT END-CODE
\ : rev-dark ( --- )
\ ?dosio
\ if ibm-dark
\ else blank.color
\ VIDEO-SEG @ 0 ROWS COLS 2* *
\ attrib c@ $10 /mod swap $10 * or flip $20 or LFILLW
\ show.color
\ then 0 0 at ;
: norm-dark ( --- )
?dosio
if ibm-dark
else blank.color
VIDEO-SEG @ 0 ROWS COLS 2* *
attrib c@ flip $20 or LFILLW
show.color
then 0 0 at ;
CODE IBM--LINE ( -- )
PUSH SI PUSH BP
XOR BH, BH
MOV AH, # 3
INT $10 \ Read Cursor Position
MOV CH, DH
XOR CL, CL \ Upper left corner
MOV DH, ' ROWS >BODY \ bottom
DEC DH
MOV DL, ' COLS >BODY \ right
DEC DL
MOV BH, # 7 \ filler attribute
MOV AH, # 6 \ service scroll up
MOV AL, # 1 \ lines to scroll
INT $10
POP BP POP SI
NEXT C;
: >IBM ( -- )
['] IBM-AT IS AT
['] IBM-AT? IS AT?
['] NORM-DARK IS DARK
['] IBM--LINE IS -LINE ; >IBM
: CURSOR_POS_INIT ( --- )
IBM-AT? #LINE ! #OUT ! ;
' CURSOR_POS_INIT IS CURSORSET
CURSOR_POS_INIT
\ Cursor shape control words by Tom Zimmer
CODE SET-CURSOR ( N1 --- )
POP CX
MOV AH, # 1
PUSH SI PUSH BP
INT $10
POP BP POP SI
NEXT C;
: GET-CURSOR ( --- SHAPE ) 0 $460 @L ;
: CURSOR-OFF ( --- ) GET-CURSOR $2000 OR SET-CURSOR ;
: CURSOR-ON ( --- ) GET-CURSOR $0F0F AND SET-CURSOR ;
ONLY FORTH ALSO HIDDEN DEFINITIONS ALSO
: *NORM-CURSOR ( --- )
CROWS DUP 1- FLIP + SET-CURSOR ;
: *BIG-CURSOR ( --- )
CROWS SET-CURSOR ;
: *MED-CURSOR ( --- )
CROWS DUP 2/ FLIP + SET-CURSOR ;
FORTH DEFINITIONS
DEFER NORM-CURSOR ' *NORM-CURSOR IS NORM-CURSOR
DEFER BIG-CURSOR ' *BIG-CURSOR IS BIG-CURSOR
DEFER MED-CURSOR ' *MED-CURSOR IS MED-CURSOR
DEFINED SRCON NIP
#IF
SRCON \ now default to source on for debugging
#THEN
ONLY FORTH ALSO DEFINITIONS