home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
PROGRAMS
/
WSTAR
/
WS33MOD4.AQM
/
WS33MOD4.ASM
Wrap
Assembly Source File
|
2000-06-30
|
11KB
|
354 lines
;**********************************************************************
;
; SUPER - FAST - WS
;
; WS33MOD4.ASM -- VERSION 3.3 For Epson RX-80 or MX-80F/T
; BY RAYMOND E DIXON JACKSONVILLE, FL (904)- 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.0 USE WS30MOD4.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 !
;**********************************************************************
TRUE EQU 1
FALSE EQU NOT TRUE
;
; ASCII control code equates - to be used in defining patches.
;
SOH EQU 01H ;Start of Heading ;CONTROL A
STX EQU 02H ;Start of Text ;CONTROL B
ETX EQU 03H ;End of Text ;CONTROL C
EOT EQU 04H ;End of Transmission ;CONTROL D
ENQ EQU 05H ;Enquiry ;CONTROL E
ACK EQU 06H ;Acknowledge ;CONTROL F
BEL EQU 07H ;Bell ;CONTROL G
BS EQU 08H ;Backspace ;CONTROL H
HT EQU 09H ;Horizontal Tab ;CONTROL I
LF EQU 0AH ;Line Feed ;CONTROL J
VT EQU 0BH ;Vertical Tab ;CONTROL K
FF EQU 0CH ;Form Feed ;CONTROL L
CR EQU 0DH ;Carriage Return ;CONTROL M
REVOFF EQU 0EH ;REVERSE VIDEO OFF ;CONTROL N
REVON EQU 0FH ;REVERSE VIDEO ON ;CONTROL O
DLE EQU 10H ;Date Link Escape ;CONTROL P
DC1 EQU 11H ;(X-ON) ;CONTROL Q
DC2 EQU 12H ;Device Control 2 ;CONTROL R
DC3 EQU 13H ;(X-OFF) ;CONTROL S
DC4 EQU 14H ;Device Control 4 ;CONTROL T
CLREOL EQU 15H ;CLEAR EOL ;CONTROL U
REVTOG EQU 16H ;TOGGEL REVERSE VIDEO ;CONTROL V
ETB EQU 17H ;End of Transmission ;CONTROL W
CAN EQU 18H ;Cancel ;CONTROL X
CLREOS EQU 19H ;CLEAR EOS ;CONTROL Y
CLRSCN 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 _
;___________________________________________________________________
;
; PATCHES:
;
ORG 18AH
DB 'Memory Mapped TRS-80 4/4p ';Limit to 33 characters
;
ORG 1AEH
DB 'Epson MX-80F/T Printer ';Limit to 33 characters
;
; TERMINAL PATCH AREA
;
ORG 232h ;origin of WordStar terminal patch area
HITE DB 24 ;24 lines on screen
WID DB 80 ;80 Characters on screen .
;
ORG 24BH
UCRPOS DB 0,0,0C9h ;Not used if terminal emulated
;
ORG 287H
INISUB JMP ITERM ;initialization routine - set arrow keys.
UNISUB JMP XTERM ;termination routine - reset arrow keys.
USELST DB 0FFH ;Enable character in last position to show
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 ;MODEL 4/4P VIDEO ADDRESS
HIBIV DB 0FFh ;Set HI order bit for inverse video
HIBCUR DB 0FFh ;cursor set on self
CRBLIV DB 0FFh ;blink cursor on self
;
ORG 29AH
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 02A3H
SWIN DB 03EH ;LD A,8EH z80 op codes db for asm.com
DB 08EH ;OUT (84),A video memory port
DB 0D3H ;RET
DB 084H
DB 0C9H
;
; SWITCH OUT MEMORY MAPPED VIDEO
ORG 02A9H
SWOUT DB 03EH
DB 08FH
DB 0D3H
DB 084H
DB 0C9H
;
ORG 2AFH
DEL1 DB 9 ;SHORT DELAY 3
DEL2 DB 3 ;MEDIUM DELAY 9
DEL3 DB 3 ;delay before help menus appear.
DEL4 DB 3 ;delay after signon screen.
DEL5 DB 0 ;delay after keystroke
ORG 2B9H
DEFDSK DB 1 ;1=A:,2=B:,3=C:,,12=M: TEST DRIVE FOR OVERLAYS
SCRLSZ DB 22 ;LINES scrolled on CRT
;___________________________________________________________________
;
; SPECIAL ROUTINES FOR model 4/4p trs - 80
;
; Note that these routines use addresses within BIOS.
;
ORG 02CBh ;MORPAT (SPACE FOR USER TO 34B)
;
; Initialization routine -- clear screen, set arrow keys
; for Wordstar.
;
ITERM MVI C,26 ;CLEAR SCREEN
CALL CONOUT
;
DB 21H,0CH,03H ; LD HL,KEYDE1 ;set arrow keys
DB 22H,1EH,03H ; LD (KEYDEF),HL ; to Wordstar
DB 18H,0DH ; JR START
XTERM MVI C,26 ;CLEAR SCREEN
CALL CONOUT
DB 21H,20H,03H ; LD HL,KEYDE2 ;set arrow keys
DB 22H,1EH,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,1EH,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 WHEN IN WS.
;
KEYDE1: ;UNSHIFTED KEYS
DB ESC ;CLEAR
DB 03H ;BREAK
DB 05H ;UP
DB 18H ;DOWN
DB 13H ;LEFT
DB 04H ;RIGHT
;
; SHIFT PLUS KEYS
;
DB 18H ;CLEAR
DB 03H ;BREAK
DB 12H ;UP
DB 03H ;DOWN
DB 01H ;LEFT
DB 06H ;RIGHT
;
; CONTROL PLUS KEYS
;
DB 7FH ;CLEAR
DB 03H ;BREAK
DB 0BH ;UP
DB 0AH ;DOWN
DB 08H ;LEFT
DB 09H ;RIGHT
KEYDEF: DB 0,0
;
; KEYDE2 IS THE KEY DEFINITION AFTER EXITING WS.
;
KEYDE2: ;UNSHIFTED KEYS
DB ESC ;CLEAR
DB 03H ;BREAK
DB 0BH ;UP
DB 0AH ;DOWN
DB 08H ;LEFT
DB 09H ;RIGHT
;
; SHIFT PLUS KEYS
;
DB 18H ;CLEAR
DB 03H ;BREAK
DB 05H ;UP
DB 18H ;DOWN
DB 13H ;LEFT
DB 04H ;RIGHT
;
; CONTROL PLUS KEYS
;
DB 7FH ;CLEAR
DB 03H ;BREAK
DB 0BH ;UP
DB LF ;DOWN
DB BS ;LEFT
DB HT ;RIGHT
;
; Output to console routine used to clear screen
;
CONOUT LHLD 1 ;fetch BIOS address
MVI L,0CH ;offset for console output routine
PCHL ;jump to it
RET
;
; ********* END AT 034C, 034DH IS USED BY WORDSTAR **********
;
; PROGRAM OPTION PATCH SECTION
;
; (Flags are 0FFH for on, 00H for off).
;
ON EQU 0FFH
OFF EQU 00H
;
ORG 34DH
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 351H
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 9-1 ;Left margin minus 1
INITRM DB 73-1 ;Right margin minus 1
INITSR DB 3 ;Superscript roll (in 1/48's)
ORG 36DH
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 378H
NONDOC DB ON ;Enter WS in Non-document mode
ORG 379H
DOTSON DB ON
ORG 37AH
DECCHR DB '.' ;Decimal tab character
ORG 37BH
DOTCHR DB '.' ;DOT command character
ORG 3C9H
HZONE DB 4 ;Hyphenation (3=shorter words, 5=longer words)
ORG 3F8H ;change defaults in print command:
PODBLK DB OFF ;Disk file output from Print flag
DB On ;Use forms feeds during print
DB OFF ;Suppress page format during print
DB OFF ;Pause between pages during print
ORG 3FDH
ITPOPN DB OFF ;Omit page numbers during print
DB ON ;Micro justify flag
DB ON ;Bidirectional print flag
ORG 389H
RVELIM DB ',' ;Delimiter character in data file
ORG 38EH
VARCH1 DB '&' ;Variable start
VARCH2 DB '&' ;Variable end
ORG 430H
AUTOBS DB 0 ;Automatic backspace
;*********************************************************************
;
; PRINTER PATCH SECTION
;
; 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.
;
; SET FOR EPSON MX - 80 PRINTER
;
ORG 69AH
BLDSTR DB 3 ;Number of strikes for boldface
DBLSTR DB 2 ;Number of strikes for doublestrike
ORG 69CH
PSCRLF DB 02H,CR,LF ;Advance to next line sequence
DB 0,0,0,0,0,0,0,0
PSCR DB 01H,CR,0,0,0,0,0;Return carriage for overprint
PSHALF DB 0,0,0,0,0,0,0 ;Half line feed sequence
PBACKS DB 01H,BS,0,0,0,0 ;Backspace character sequence
PALT DB 01H,0FH,0,0,0 ;Alternate pitch (^PA) -
PSTD DB 01H,DC2,0,0,0 ;Standard pitch (^PN) -
ROLUP DB 03H,ESC,53H,0,0 ;Superscript character sequence
ROLDOW DB 03H,ESC,53H,1,0 ;Supscript character sequence
USR1 DB 02H,ESC,'E',0,0 ;User sequence 1 (^PQ) - Emphasized print on
USR2 DB 02H,ESC,'F',0,0 ;User sequence 2 (^PW) - Emphasized print off
USR3 DB 01H,0EH,0,0,0 ;User sequence 3 (^PE) - Double width on
USR4 DB 01H,DC4,0,0,0 ;User sequence 4 (^PR) - Double width off
RIBBON DB 02H,ESC,'4',0,0 ;Alternate ribbon (^PY) - Italics on
RIBOFF DB 02H,ESC,'5',0,0 ;Standard ribbon (^PY) - Italics off
PSINIT DB 02H,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 70FH
SOCHR DB '\' ;Character used for strikeout
ULCHR DB '_' ;Character used for underlining
END