\ IBMCURSR IBM Specific display Enhancements by Tom Zimmer DECIMAL CODE IBM-AT ( col row -- ) POP AX POP DX MOV DH, AL XOR BH, BH MOV AH, # 2 INT 16 NEXT C; CODE IBM-AT? ( -- col row ) XOR BH, BH MOV AH, # 3 INT 16 SUB AX, AX MOV AL, DH MOV DH, AH 2PUSH C; CODE IBM-DARK ( -- ) MOV AX, # 2 INT 16 NEXT C; CODE IBM--LINE ( -- ) PUSH BP XOR BH, BH MOV AH, # 3 INT 16 ( Read Cursor Position ) MOV CH, DH XOR CL, CL ( Upper left corner ) MOV DX, # 24 256 * 79 + ( Lower right corner ) MOV BH, # 7 MOV AX, # 6 256 * 1 + INT 16 POP BP NEXT C; : >IBM ( -- ) ['] IBM-AT IS AT ['] IBM-DARK IS DARK ['] IBM--LINE IS -LINE ; >IBM : CURSOR_POS_INIT ( --- ) IBM-AT? #LINE ! #OUT ! ; ' CURSOR_POS_INIT IS CURSORSET \ Cursor shape control words by Tom Zimmer CODE SET-CURSOR ( N1 --- ) POP CX MOV AH, # 1 INT 16 NEXT C; : GET-CURSOR ( --- SHAPE ) 0 1120 ( 460h ) @L ; HEX : CURSOR-OFF ( --- ) GET-CURSOR 2000 OR SET-CURSOR ; : CURSOR-ON ( --- ) GET-CURSOR 0F0F AND SET-CURSOR ; : *NORM-CURSOR ( --- ) ?VMODE 7 = IF 0C0D ELSE 0607 THEN SET-CURSOR ; DEFER NORM-CURSOR ' *NORM-CURSOR IS NORM-CURSOR : *BIG-CURSOR ( --- ) ?VMODE 7 = IF 020B ELSE 0007 ( 0106 ) THEN SET-CURSOR ; DEFER BIG-CURSOR ' *BIG-CURSOR IS BIG-CURSOR : *MED-CURSOR ( --- ) ?VMODE 7 = IF 0A0D ELSE 0507 THEN SET-CURSOR ; DEFER MED-CURSOR ' *MED-CURSOR IS MED-CURSOR \ : SPLIT-CURSOR ( --- ) ?VMODE 7 = IF 0C01 ELSE 0701 THEN \ SET-CURSOR ; DECIMAL DEFINED SRCON NIP #IF SRCON \ now default to source on for debugging #THEN