;********************************************************************** ; WS30MOD4.ASM -- VERSION - 3.00 For Epson RX-80 or MX-80F/T ; BY RAYMOND E DIXON JACKSONVILLE, FL 778-4048 ; TO MEMORY MAP MODEL 4/4P TRS-80 M-M CPM 2.31 - 2.22 ; ; This program will modify all 12 arrow keys plus clear and break keys ; to match WS and return them back to cpm when you exit WS leaveing the ; shifted keys as WS keys. ; ; FOR WS 3.3 USE WS33MOD4.ASM ; Assemble with asm.com and overlay with Mload.com ; This program is free to anyone who wishes to use it, all I ask is ; to leave my header in the file. Thanks ! ;********************************************************************** ; ASCII control code equates - to be used in defining patches. ;********************************************************************** TRUE EQU 1 FALSE EQU NOT TRUE ; CTRLA EQU 01H ;Start of Heading ;CONTROL A CTRLB EQU 02H ;Start of Text ;CONTROL B CTRLC EQU 03H ;CTRLC KEY ;CONTROL C CTRLD EQU 04H ;End of Transmission ;CONTROL D CTRLE EQU 05H ;Enquiry ;CONTROL E CTRLF EQU 06H ;Acknowledge ;CONTROL F CTRLG EQU 07H ;Bell ;CONTROL G CTRLH EQU 08H ;Backspace ;CONTROL H CTRLI EQU 09H ;Horizontal Tab ;CONTROL I CTRLJ EQU 0AH ;Line Feed ;CONTROL J CTRLK EQU 0BH ;Vertical Tab ;CONTROL K CTRLL EQU 0CH ;Form Feed ;CONTROL L CTRLM EQU 0DH ;Carriage Return ;CONTROL M CTRLN EQU 0EH ;REVERSE VIDEO OFF ;CONTROL N CTRLO EQU 0FH ;REVERSE VIDEO ON ;CONTROL O CTRLP EQU 10H ;Date Link Escape ;CONTROL P CTRLQ EQU 11H ;(X-ON) ;CONTROL Q CTRLR EQU 12H ;Device Control 2 ;CONTROL R CTRLS EQU 13H ;(X-OFF) ;CONTROL S CTRLT EQU 14H ;Device Control 4 ;CONTROL T CTRLU EQU 15H ;CLEAR EOL ;CONTROL U CTRLV EQU 16H ;TOGGEL REVERSE VIDEO ;CONTROL V CTRLW EQU 17H ;End of Transmission ;CONTROL W CTRLX EQU 18H ;Cancel ;CONTROL X CTRLY EQU 19H ;CLEAR EOS ;CONTROL Y CTRLZ EQU 1AH ;CLEAR SCREEN ;CONTROL Z ESC EQU 1BH ;Escape ;CONTROL [ INSLIN EQU 1CH ;INSERT LINE AT CURSOR ;CONTROL \ DELLIN EQU 1DH ;DELETE LINE AT CURSOR ;CONTROL ] HOME EQU 1EH ;HOME CURSOR ;CONTROL ^ US EQU 1FH ;Unit Separator ;CONTROL _ DELETE EQU 7FH ;DELETE KEY ;___________________________________________________________________ ; LOGO PATCH AREA ; ORG 190H DB 'Memory Mapped TRS-80 4/4p ';Limit to 33 characters ; ORG 1B4H DB 'Epson MX-80F/T Printer ';Limit to 33 characters ; ; TERMINAL PATCH AREA ; ORG 248h ;origin of WordStar terminal patch area HITE DB 24 ;24 lines on screen . WID DB 80 ;80 characters per line ; ORG 264H UCRPOS DB 0,0,0C9h ;Not used if terminal emulated ; ORG 2A4H INISUB JMP ITERM ;routine - set arrow keys. UNISUB JMP XTERM ;routine - reset arrow keys. USELST DB 0FFH ;Enable character in last position. DB 0,0,0 ;Reserved bytes for expansion DELCUS DB 0 ;Delay after cursor set DELMIS DB 0 ;Delay after other functions ; ; The following section contains the primary code which implements ; memory map switching in mod 4/4p. Be careful when modifying this ; section. ; MEMAPV DB 0FFH ;Use memory-mapped video MEMADR DW 0F800H ;MOD 4/4P Screen location HIBIV DB 0FFh ;Use underline for highlight HIBCUR DB 0FFh ;cursor set on self CRBLIV DB 0FFh ;blink cursor on self ; ORG 2BAH UCNSTA DB 0,0,0C9h ;no special console status from BIOS UCONI DB 0,0,0C9h ;no special console input UCONO DB 0,0,0C9h ;no special console output ; ; SWITCH IN MEMORY MAPPED VIDEO ORG 02C3H SWIN DB 03EH ;LD A,8EH DB 08EH ;OUT (84),A DB 0D3H ;RET DB 084H DB 0C9H ; ; SWITCH OUT MEMORY MAPPED VIDEO ORG 02C9H SWOUT DB 03EH DB 08FH DB 0D3H DB 084H DB 0C9H ; ORG 2CFH DEL1 DB 9 ;SHORT DELAY DEL2 DB 3 ;MEDIUM DELAY DEL3 DB 3 ;delay before help menus appear . DEL4 DB 3 ;delay after signon screen . DEL5 DB 0 ;delay after keystroke ORG 2DCH DEFDSK DB 1 ;1=A:,2=B:,3=C:,,12=M: TEST DRIVE FOR OVERLAYS SCRLSZ DB 22 ;LINES DISPLAYED ON CRT ;___________________________________________________________________ ; SPECIAL ROUTINES FOR model 4/4p trs - 80 ; Note that these routines use addresses within BIOS. ORG 02E0h ;MORPAT (SPACE FOR USER TO 35B) ; Routine -- clear screen, set arrow keys for Wordstar. ITERM MVI C,26 ;clear screen CALL CONOUT ; DB 21H,21H,03H ;LD HL,KEYDE1 ;set arrow keys DB 22H,33H,03H ;LD (KEYDEF),HL ; to Wordstar DB 18H,0DH ;JR START XTERM MVI C,26 CALL CONOUT DB 21H,35H,03H;XTERM:LD HL,KEYDE2 ;set arrow keys DB 22H,33H,03H ;LD (KEYDEF),HL ; to CP/M DB 18H,00H ;JR START ; DB 2AH,01H,00H;START:LD HL,(0001H) DB 01H,30H,00H ;LD BC,0030H DB 09H ;ADD HL,BC DB 01H,10H,00H ;LD BC,0010H DB 09H ;ADD HL,BC DB 5EH ;LD E,(HL) DB 23H ;INC HL DB 56H ;LD D,(HL) DB 21H,13H,00H ;LD HL,0013H DB 19H ;ADD HL,DE DB 0EBH ;EX DE,HL DB 2AH,33H,03H ;LD HL,(KEYDEF) DB 3EH,03H ;LD A,03 DB 01H,11H,00H ;LD BC,0011H DB 0EBH ;EX DE,HL DB 09H ;ADD HL,BC DB 0EBH ;EX DE,HL DB 0EH,06H ;LD C,6 DB 0EDH,0B0H ;LDIR DB 13H ;INC DE DB 3DH ;DEC A DB 20H,0F2H ;JR NZ,L025E DB 0C9H ;RET ; ; KEYDE1 IS THE KEY DEFINITION ON ENTERING WS ; KEYDE1: ;UNSHIFTED KEYS DB ESC ;CLEAR DB CTRLC ;BREAK DB CTRLE ;UP DB CTRLX ;DOWN DB CTRLS ;LEFT DB CTRLD ;RIGHT ; ; SHIFTED KEYS ; DB CTRLX DB CTRLC DB CTRLR DB CTRLC DB CTRLA DB CTRLF ; ; CONTROL KEYS ; DB DELETE DB CTRLC DB CTRLK DB CTRLJ DB CTRLH DB CTRLI KEYDEF: DW 0000H ; ; KEYDE2 IS THE KEY DEFINITION ON EXIT TO CPM ; KEYDE2: ;UNSHIFTED KEYS DB ESC ;CLEAR DB CTRLC ;BREAK DB CTRLK ;UP DB CTRLJ ;DOWN DB CTRLH ;LEFT DB CTRLI ;RIGHT ; ; SHIFTED KEYS ; DB DELETE DB CTRLC DB CTRLE DB CTRLX DB CTRLS DB CTRLD ; ; CONTROL KEYS ; DB DELETE DB CTRLC DB CTRLK DB CTRLJ DB CTRLH DB CTRLI ; ; Output to console routine ; CONOUT LHLD 1 ;fetch BIOS address MVI L,0CH ;offset for console output routine PCHL ;jump to it RET ; ; ********* END AT 35BH, AS 035CH AND ABOVE ARE USED BY WORDSTAR ********** ; ; PROGRAM OPTION PATCH SECTION ; ON EQU 0FFH OFF EQU 000H ; ORG 360H ITHELP DB 0 ;initial help level: 0,1,2, or 3 (^JHn) NITHLF DB ON ; ITITOG DB OFF ;Insert mode flag (^V) ITDSDR DB ON ;Directory display flag (^KF) ORG 366H INITPF DB 08 ;Line height (in 1/48's) DB 66 ;Paper length (in lines) (.PLn) DW 528 ;Paper length (in 1/48's) DB 08 ;Line height repeated here DB 03 ;Top margin (in lines) (.MTn) DW 24 ;Top margin (in 1/48's) DB 08 ;Line height repeated again DB 02 ;Heading margin (in lines) (.HMn) DW 16 ;Heading margin (in 1/48's) DB 08 ;Line height repeated again DB 08 ;Bottom margin (in lines) (.MBn) DW 64 ;Bottom margin (in 1/48's) DB 08 ;Line height repeated again DB 02 ;Footing margin (in lines) (.FMn) DW 16 ;Footing margin (in 1/48's) DB 08 ;Line height repeated again DB 0 ;Must be 0 for standard char width DB 12 ;Standard char width (1/120's)(12=10char/inch) DB 10 ;Alternate char width (1/120's)(10=12/inch) DB 08 ;Page offset in characters (.POn) INITLM DB 1-1 ;Left margin minus 1 INITRM DB 52-1 ;Right margin minus 1 INITSR DB 3 ;Superscript roll (in 1/48's) ORG 385H INITWF DB ON ;Word wrap flag (^OW) DB ON ;Justification flag (^OJ) DB ON ;Variable tabs flag (^OV) DB OFF ;Soft hyphen entry flag (^OE) DB OFF ;Hyphen help flag (^OH) DB ON ;Print control display flag (^OD) DB ON ;Ruler display flag (^OT) DB ON ;Dynamic page break flag DB ON ;Page break display flag (^OP) DB 1 ;Line spacing: 1-5 (.LS) ORG 391H NONDOC DB OFF ;Enter WS in Non-document mode DECCHR DB '.' ;Decimal tab character ORG 394H DOTCHR DB '.' ;DOT command character ORG 396H DOTSON DB ON ;Enable dynamic DOT command interpretation ORG 399H HZONE DB 4 ;Hyphenation (3=shorter words, 5=longer words) ORG 3CAH ;change defaults in print command PODBLK DB OFF ;Disk file output from Print flag DB OFF ;Use forms feeds during print DB OFF ;Suppress page format during print DB OFF ;Pause between pages during print ORG 3D3H ITPOPN DB OFF ;Omit page numbers during print DB ON ;Micro justify flag DB ON ;Bidirectional print flag ORG 3D8H RVELIM DB ',' ;Delimiter character in data file ORG 3DBH VARCH1 DB '&' ;Variable start VARCH2 DB '&' ;Variable end ORG 422H AUTOBS DB 0 ;Automatic backspace ;___________________________________________________________________ ; ; PRINTER PATCH SECTION ; ; This section will be different for each printer. Most ; parameters will consist of a character count, followed ; by a string of ASCII characters. ; ; Make sure to leave the same number of bytes defined ; as were previously defined for each parameter, ; by adding or deleting trailing zeroes as needed. ; ORG 691H BLDSTR DB 3 ;Number of strikes for boldface DBLSTR DB 2 ;Number of strikes for doublestrike ORG 696H PSCRLF DB 2,0DH,0AH ;Advance to next line sequence DB 0,0,0,0,0,0,0,0 PSCR DB 1,0DH,0,0,0,0,0 ;Return carriage for overprint PSHALF DB 0,0,0,0,0,0,0 ;Half line feed sequence PBACKS DB 1,08H,0,0,0,0 ;Backspace character sequence PALT DB 1,0FH,0,0,0 ;Alternate pitch (^PA) - PSTD DB 1,12H,0,0,0 ;Standard pitch (^PN) - ROLUP DB 03,ESC,53H,0,0 ;Superscript character sequence ROLDOW DB 03,ESC,53H,1,0 ;Supscript character sequence USR1 DB 2,ESC,'E',0,0 ;User sequence 1 (^PQ) - Emphasized print on USR2 DB 2,ESC,'F',0,0 ;User sequence 2 (^PW) - Emphasized print off USR3 DB 1,0EH,0,0,0 ;User sequence 3 (^PE) - Double width on USR4 DB 1,14H,0,0,0 ;User sequence 4 (^PR) - Double width off RIBBON DB 2,ESC,'4',0,0 ;Alternate ribbon (^PY) - Italics on RIBOFF DB 2,ESC,'5',0,0 ;Standard ribbon (^PY) - Italics off PSINIT DB 02,ESC,40H,0,0,0,0,0,0 DB 0,0,0,0,0,0,0,0 PSFINI DB 02H,ESC,40H,0,0,0,0,0 DB 0,0,0,0,0,0,0,0,0 ORG 70BH SOCHR DB '\' ;Character used for strikeout ULCHR DB '_' ;Character used for underlining ; END