; ;************************************************** ;* * ;* USER-MODIFYABLE ROUTINES AND CONSTANTS FOR * ;* HARDWARE-DEPENDENT TERMINAL CHARACTERISTICS * ;* AND FUNCTIONS USED BY WORD-MASTER. * ;* RELEASE 1.07 4/20/79 * ;************************************************** ; *** SUBROUTINE TO CLEAR SCREEN AND HOME CURSOR *** ; ; THIS VERSION WORKS FOR THE HAZELTINE 1500 ; 0180 ORG 180H 01EF = OUTCHR EQU 01EFH ;OUTPUT CHARACTER FOR RELEASE 1.07 29B8 = MEMORY EQU 29B8H ;USER PATCH AREA FOR RELEASE 1.07 0180 000000 CLRSCRN: NOP! NOP! NOP ;SPACE FOR LONGER PATCH / 0183 000000 NOP! NOP! NOP ; MAKE ADDRS MATCH OLD VERSION ;SEND TILDE, AND 1CH. THIS WORKS FOR HAZELTINE 1500 0186 3E7E MVI A,7EH ;(1) GET TILDE CHARACTER 0188 CDEF01 CALL OUTCHR ;SEND IT TO TERMINAL 018B 3E1C MVI A,1CH ;(2) GET CLEAR-SCREEN CODE 018D C3EF01 JMP OUTCHR ;SEND IT TO TERMINAL AND EXIT ;NOP'S FOR COMPATIBILITY. 0190 0000 NOP! NOP! 0192 000000 NOP! NOP! NOP! 0195 00 NOP ; ; *** SUBROUTINE TO POSITION CURSOR AT *** ; *** LINE L (0=TOP), COLUMN H (0=LEFT) *** ; ;HAZELTINE 1500 VERSION: ; SENDS TILDE, 11H, X(H), Y(L) ; 0196 3E7ECDEF01 TCURSOR: MVI A,7EH! CALL OUTCHR ;SEND TILDE 019B 3E11CDEF01 MVI A,11H! CALL OUTCHR ;SEND CURSOR ADDRESSING COMAND 01A0 7CCDEF01 MOV A,H! CALL OUTCHR ;SEND COLUMN NUMBER. 01A4 7DC3EF01 MOV A,L! JMP OUTCHR ;SEND LINE NUMBER AND EXIT. 01A8 000000 NOP! NOP! NOP ;FOR COMPATIBILITY. 01AB 0000 NOP! NOP ;... 01AD 0000000000 DB 0,0,0,0,0 ;ADDITIONAL PATCH SPACE 01B2 0000000000 DB 0,0,0,0,0 ;... ;NOTE: BACKSPACE ROUTINE THAT WAS IN ;PRIOR RELEASES IS NO LONGER NEEDED. ; **** MODIFYABLE CONSTANTS ***** ;PBEGMEM POINTS TO BEGINNING OF MEMORY TO USE ;FOR EDIT BUFFER AND SCRATCHPAD. IF SPACE IS NEEDED ;FOR PATCHES, PUT THEM WHERE THIS POINTS AND ;INCREASE THIS POINTER. REMEMBER TO USE A LARGE ;ENOUGH "SAVE" COMMAND! 01B7 B829 PBEGMEM: DW MEMORY ;SCREEN SIZE: TAKEN FROM THE FOLLOWING, ;EXCEPT SET AUTOMATICALLY TO MATCH HARDWARE ;VALUES WHEN IMSAI VIO VIDEO DISPLAY IS IN USE ;(DETECTED BY PRESENCE OF THE VIO ROM AT PROPER ;ADDRESS, AND CON: IOBYTE FIELD = 2 OR 3). 01B9 18 HITE: DB 24 ;MUST BE EXACT SCREEN HEIGHT IN LINES 01BA 50 WID: DB 80 ;MUST BE <= EXACT SCREEN WIDTH ;EREOL CONTAINS THE CHARACTER(S) TO ERASE SCREEN ;TO END-OF-LINE WITHOUT MOVING CURSOR, IF SUCH A ;CHARACTER IS AVAILABLE IN THE TERMINAL HARDWARE. ;IF 0, WILL BE SIMULATED BY SOFTWARE. ;AUTOMATICALLY SET TO CTL-U WHEN VIO IS IN USE. 01BB 7E EREOL: DB 7EH ;(FIRST) CHARACTER, OR 0 IF NONE ** PATCHED FOR HAZELTINE ** 01BC 0F DB 0FH ;SECOND CHARACTER IF TERMINAL ** PATCHED FOR HAZELTINE ** ;...REQUIRES 2-CHARACTER ;...SEQUENCE, ELSE A 0. ;NOVIO: IF NON-0, WILL NOT LOOK FOR IMSAI VIO. ;PATCH NON-0 IF VIO PROVIOSIONS INTERFERE WITH ;YOUR TERMINAL. 01BD FF NOVIO: DB 0FFH ;PATCHED FOR HAZELTINE 1500 01BE 000000 DB 0,0,0 ;RESERVED FOR EXPANSION ;DELAYS EXECUTED AFTER VARIOUS TERMINAL FUNCTIONS, ;BEFORE NEXT CHARACTER IS SENT TO TERMINAL. THESE ;ALLOW TIME FOR TERMINAL TO RESPOND, AS REQUIRED ;BY SOME TERMINALS WHEN USED AT HIGH BAUD RATES. ;INCREASE IF YOU EXPERIENCE, FOR EXAMPLE, LOSS OF ;CHARACTERS AFTER CLEAR SCREEN. EACH DELAY IS ;APPROX NUMBER OF MILLISECONDS ON 4MHZ PROCESSOR; ;DELAY IS TWICE AS LONG AS SHOWN FOR 2MHZ 8080. 01C1 19 DELCLR: DB 25 ;DELAY AFTER CLEAR SCREEN: 25+ MSEC. 01C2 0A DELCUS: DB 10 ;DELAY AFTER POSITION CURSOR: 10+MSEC. 01C3 05 DELERE: DB 5 ;DELAY AFTER ERASE TO EOL: 5+ MSEC. 01C4 0000000000 DB 0,0,0,0,0 ;MORE 01C9 0000000000 DB 0,0,0,0,0 ;EXTRA 01CE 0000000000 DB 0,0,0,0,0 ;PATCHING 01D3 0000000000 DB 0,0,0,0,0 ;SPACE 01D8 END