;TITLE USER1 04/23/81 TERMINAL PATCH AREA ; FOR WORDSTAR RELEASE 3.0, May 81 ; see Terminal Patch Area, page E-1, installation manual ; VT52 modifications ; OUTCHR EQU 01EFH MEMORY EQU 29B8H TBASE EQU 100H ; WHERE TO LOAD FOR NORMAL CP/M ; ASEG ; ABSOLUTE CODE FOR LISTING ORG TBASE + 90H ; terminal legend coding here DB 'DEC VT-52 compatible terminal ' ORG TBASE+148H ; BEGINS AT 248 HEX OR 4448 HEX PAGE 63 ; SETS PAGE LENGTH ; PATCHING NORMALLY DONE VIA INSTALL.COM ; ADDITIONAL PATCHING FOR UNUSUAL (E.G., VT52) TERMINALS ; ; ALWAYS PATCH: SCREEN HITE & WIDTH, CURSOR ; ALL OTHERS ARE OPTIONS FOR SPECIAL CASES OR ENHANCEMENTS ; HITE: DB 24 ; MUST BE EXACT SCREEN HEIGHT IN LINES WID: DB 80 ; MUST BE <= EXACT SCREEN WIDTH ; ; IN ALL CHAR STRINGS SENT TO TERMINAL, ; FIRST BYTE IS #CHAR, THEN CHARS TO FOLLOW ; ; CURSOR POSITIONING - MANDATORY PATCH ; Done via ^Y, then ; LINE # PLUS 20H, ; ESC EQU 01BH ; COL # PLUS 20 H. ; CURSOR POSITIONING LEAD-IN CHARACTER SEQUENCE: CLEAD1: DB 2 ; NUMBER OF CHARACTERS DB ESC ; ESCAPE CHAR DB 'Y' ; DB 0,0,0 ; EXTRA SPACE DB 0,0,0 ; ; CURSOR POSITIONING STRING SENT BETWEEN LINE AND COLUMN CLEAD2: DB 0 ; NUMBER OF CHAR - NONE IN THIS EXAMPLE DB 0 ; FIRST CHAR DB 0,0,0 ; SECOND THRU 4TH ; ; CURSOR POSITIONING STRING SENT AFTER ; BOTH LINE AND COLUMN HAVE BEEN SENT CTRAIL: DB 0 ; NUMBER OF CHARACTERS DB 0,0,0,0 ; FLAG NON-ZERO TO SEND COLUMN BEFORE LINE CB4LFB: DB 0 ; LINE GOES BEFORE COLUMN IN THIS EXAMPLE ; ; OFFSET TO ADD TO LINE LINOFF: DB 20H ; ADD THIS TO LINE #, WHERE 0 IS TOP LINE ON SCREEN ; OFFSET TO ADD TO COLUMN COLOFF: DB 20H ; ADD THIS TO COL#, WHERE 0 IS LEFT EDGE ; ; BINARY/ASCII FLAG AND # ASCII DIGITS ASCUR: DB 0 ; ZERO TO SEND BINARY LINE AND COLUMN ; 2 TO SEND 2-DIGIT ASCII NUMBERS ; 3 TO SEND 3-DIGIT ASCII NUMBERS ; DB 0,0,0 ; RESERVED FOR EXPANSION ; ; PROVISION FOR POSITIONING CURSOR BY USER-CODED SUBROUTINE ; INSTEAD OF UNDER CONTROL OF ABOVE ITEMS. ; FOR USE IN EXCEPTIONAL CASES ONLY. ; ; PUT A JMP INSTRUCTION IN YOUR SUBROUTINE IN THE FOLLOWING ; 3 BYTES. WHENEVER FIRST BYTE IS NON-ZERO, THIS POSITION WILL BE ; CALLED TO POSITION CURSOR; ABOVE PATCH ITEMS WILL BE ; DISREGARDED. ; UCRPOS: NOP ; NORMALLY ZERO, OR A JMP TO YOUR NOP ; SPECIAL CURSOR ROUTINE RET ; ; SEE "MORPAT" AT THE END OF THIS LISTING ; FOR SPACE IN WHICH TO PUT THE SUBROUTINE ; ; YOUR SUBROUTINE WILL RECEIVE LINE IN L REGISTER, (0=TOP SCREEN), ; COLUMN IN H REGISTER (0=LEFT EDGE) ; YOUR ROUTINME MAY MODIFY ALL REGISTERS. ; TO OUTPUT A CHAR TO THE TERMINAL FROM WITHIN YOUR SUBROUTINE, ; CALL OUTCHR. EXAMINE THE FOLLOWING ; 2 BYTES WITH THE DEBUGGER TO DETERMINE THE ADDRESS TO CALL IN ; THE CURRENT RELEASE OF WORDSTAR. ; ; * = 267H DW OUTCHR ; ADDRESS OF BYTE OUTPUT ROUTINE ; ; YOUR CUSTOM ROUTINE WILL ALSO RECEIVE THE FOLLOWING, WHICH MIGHT BE ; USEFUL IN SPECIAL VIDEO BOARD DRIVERS: ; DE = NUMBER OF CHAR POSITIONS FROM BEGINNING OF SCREEN ; TO NEW CURSOR POSITION ; BC = NUMBER OF CHAR POSITIONS FROM BEGINNING SCREEN TO ; BEGINNING OF LINE IN WHICH CURSOR IS BEING PLACED. ; DB 0,0,0,0 ; RESERVED BYTES ; ; ; EVERYTHING THAT FOLLOWS IS OPTIONAL. ; EACH ITEM RELATES TO EITHER ENHANCED PERFORMANCE ; OR TO ACCOMODATE UNUSUAL TERMINALS. ; ; add later after above works ; end