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
Assembly Source File  |  2000-06-30  |  11KB  |  354 lines

  1. ;**********************************************************************
  2. ;
  3. ;            SUPER - FAST - WS   
  4. ;
  5. ;    WS33MOD4.ASM -- VERSION  3.3 For Epson RX-80 or MX-80F/T
  6. ;       BY RAYMOND E DIXON  JACKSONVILLE, FL (904)- 778-4048
  7. ;    TO MEMORY MAP MODEL 4/4P TRS-80 M-M CPM 2.31 - 2.22
  8. ;
  9. ; This program will modify all 12 Arrow keys plus clear and break keys
  10. ; to match WS and return them back to cpm when you exit WS leaveing the
  11. ;  shifted  keys as WS keys.
  12. ;             FOR WS 3.0 USE WS30MOD4.ASM
  13. ;     Assemble with asm.com and overlay with Mload.com
  14. ;      This program is free to anyone who wishes to use it, all I ask is
  15. ;     to leave my header in the file. Thanks !  
  16. ;**********************************************************************
  17. TRUE    EQU    1
  18. FALSE    EQU    NOT TRUE    
  19. ;
  20. ;     ASCII control code equates - to be used in defining patches.
  21. ;
  22. SOH    EQU    01H    ;Start of Heading    ;CONTROL A
  23. STX    EQU    02H    ;Start of Text        ;CONTROL B
  24. ETX    EQU    03H    ;End of Text        ;CONTROL C
  25. EOT    EQU    04H    ;End of Transmission    ;CONTROL D
  26. ENQ    EQU    05H    ;Enquiry        ;CONTROL E
  27. ACK    EQU    06H    ;Acknowledge        ;CONTROL F
  28. BEL    EQU    07H    ;Bell            ;CONTROL G
  29. BS    EQU    08H    ;Backspace        ;CONTROL H
  30. HT    EQU    09H    ;Horizontal Tab        ;CONTROL I
  31. LF    EQU    0AH    ;Line Feed        ;CONTROL J
  32. VT    EQU    0BH    ;Vertical Tab        ;CONTROL K
  33. FF    EQU    0CH    ;Form Feed        ;CONTROL L
  34. CR    EQU    0DH    ;Carriage Return    ;CONTROL M
  35. REVOFF    EQU    0EH    ;REVERSE VIDEO OFF    ;CONTROL N
  36. REVON    EQU    0FH    ;REVERSE VIDEO ON    ;CONTROL O
  37. DLE    EQU    10H    ;Date Link Escape    ;CONTROL P
  38. DC1    EQU    11H    ;(X-ON)            ;CONTROL Q
  39. DC2    EQU    12H    ;Device Control 2    ;CONTROL R
  40. DC3    EQU    13H    ;(X-OFF)        ;CONTROL S
  41. DC4    EQU    14H    ;Device Control 4    ;CONTROL T
  42. CLREOL    EQU    15H    ;CLEAR EOL               ;CONTROL U
  43. REVTOG    EQU    16H    ;TOGGEL REVERSE VIDEO    ;CONTROL V
  44. ETB    EQU    17H    ;End of Transmission     ;CONTROL W
  45. CAN    EQU    18H    ;Cancel            ;CONTROL X
  46. CLREOS    EQU    19H    ;CLEAR EOS            ;CONTROL Y
  47. CLRSCN    EQU    1AH    ;CLEAR SCREEN        ;CONTROL Z
  48. ESC     EQU        1BH    ;Escape            ;CONTROL [
  49. INSLIN    EQU    1CH    ;INSERT LINE AT CURSOR    ;CONTROL \
  50. DELLIN    EQU    1DH    ;DELETE LINE AT CURSOR     ;CONTROL ]
  51. HOME    EQU    1EH    ;HOME CURSOR         ;CONTROL ^
  52. US    EQU    1FH    ;Unit Separator        ;CONTROL _
  53. ;___________________________________________________________________
  54. ;
  55. ;  PATCHES:
  56. ;    
  57.     ORG    18AH
  58.     DB    'Memory  Mapped TRS-80 4/4p       ';Limit to 33 characters
  59. ;
  60.  
  61.     ORG    1AEH
  62.     DB    'Epson MX-80F/T Printer           ';Limit to 33 characters
  63. ;
  64. ;    TERMINAL PATCH AREA
  65. ;
  66.     ORG    232h    ;origin of WordStar terminal patch area
  67. HITE    DB    24    ;24 lines on screen 
  68. WID    DB     80    ;80 Characters on screen .
  69. ;
  70.     ORG    24BH
  71. UCRPOS    DB    0,0,0C9h    ;Not used if terminal emulated
  72. ;
  73.     ORG    287H
  74. INISUB    JMP    ITERM       ;initialization routine - set arrow keys.
  75. UNISUB    JMP    XTERM        ;termination routine - reset arrow keys.
  76. USELST    DB    0FFH        ;Enable character in last position to show
  77. DELCUS    DB    0        ;Delay after cursor set
  78. DELMIS    DB    0        ;Delay after other functions
  79. ;
  80. ; The following section contains the primary code which implements
  81. ; memory map switching in mod 4/4p.  Be careful when modifying this
  82. ; section.
  83. ;
  84. MEMAPV    DB    0FFH        ;Use memory-mapped video
  85. MEMADR    DW    0F800H        ;MODEL 4/4P VIDEO ADDRESS
  86. HIBIV    DB    0FFh        ;Set HI order bit for inverse video
  87. HIBCUR    DB    0FFh        ;cursor set on self
  88. CRBLIV    DB    0FFh        ;blink cursor on self
  89. ;
  90.     ORG    29AH
  91. UCNSTA    DB    0,0,0C9h    ;no special console status from BIOS
  92. UCONI    DB    0,0,0C9h    ;no special console input
  93. UCONO    DB    0,0,0C9h    ;no special console output
  94. ;
  95. ;    SWITCH IN MEMORY MAPPED VIDEO 
  96.     ORG    02A3H    
  97. SWIN    DB    03EH    ;LD    A,8EH  z80 op codes db for asm.com
  98.     DB    08EH    ;OUT (84),A    video memory port 
  99.     DB    0D3H    ;RET
  100.     DB    084H
  101.     DB    0C9H
  102. ;
  103. ;    SWITCH OUT MEMORY MAPPED VIDEO
  104.     ORG    02A9H
  105. SWOUT    DB    03EH
  106.     DB    08FH
  107.     DB    0D3H
  108.     DB    084H
  109.     DB    0C9H
  110.     
  111. ;
  112.  
  113.     ORG    2AFH
  114. DEL1    DB    9    ;SHORT DELAY    3
  115. DEL2    DB    3    ;MEDIUM DELAY    9
  116. DEL3    DB    3     ;delay before help menus appear.
  117. DEL4    DB    3    ;delay after signon screen.
  118. DEL5    DB    0    ;delay after keystroke
  119.     ORG    2B9H
  120. DEFDSK    DB    1     ;1=A:,2=B:,3=C:,,12=M: TEST DRIVE FOR OVERLAYS
  121. SCRLSZ    DB    22     ;LINES scrolled on CRT
  122.  
  123.  
  124. ;___________________________________________________________________
  125. ;
  126. ;    SPECIAL ROUTINES FOR model 4/4p trs - 80
  127. ;
  128. ;    Note that these routines use addresses within BIOS.  
  129. ;
  130.     ORG    02CBh    ;MORPAT (SPACE FOR USER TO 34B)
  131. ;    Initialization routine -- clear screen, set arrow keys
  132. ;     for Wordstar.
  133. ;
  134. ITERM    MVI    C,26        ;CLEAR SCREEN 
  135.     CALL    CONOUT        
  136. ;
  137.     DB    21H,0CH,03H ;       LD    HL,KEYDE1      ;set arrow keys
  138.     DB    22H,1EH,03H ;       LD    (KEYDEF),HL    ; to Wordstar
  139.     DB    18H,0DH        ;       JR    START
  140.  
  141. XTERM    MVI    C,26        ;CLEAR SCREEN
  142.     CALL    CONOUT
  143.     DB    21H,20H,03H ;      LD    HL,KEYDE2       ;set arrow keys
  144.     DB    22H,1EH,03H ;      LD    (KEYDEF),HL     ;  to CP/M
  145.     DB    18H,00H     ;      JR    START
  146.  
  147. ;
  148.     DB    2AH,01H,00H     ;START: LD    HL,(0001H)   
  149.     DB    01H,30H,00H      ;       LD    BC,0030H     
  150.     DB    09H              ;     ADD    HL,BC
  151.     DB      01H,10H,00H      ;     LD    BC,0010H     
  152.     DB      09H              ;     ADD    HL,BC
  153.     DB      5EH              ;     LD    E,(HL)
  154.     DB      23H              ;     INC    HL
  155.     DB      56H              ;     LD    D,(HL)
  156.     DB      21H,13H,00H      ;     LD    HL,0013H     
  157.     DB      19H              ;      ADD    HL,DE
  158.     DB        0EBH             ;     EX    DE,HL       
  159.     DB    2AH,1EH,03H     ;     LD    HL,(KEYDEF)
  160.     DB    3EH,03H         ;     LD    A,03
  161.     DB    01H,11H,00H     ;     LD    BC,0011H     
  162.     DB    0EBH         ;     EX    DE,HL
  163.     DB    09H         ;     ADD    HL,BC
  164.     DB    0EBH         ;     EX    DE,HL
  165.     DB    0EH,06H         ;      LD    C,6
  166.     DB    0EDH,0B0H     ;     LDIR
  167.     DB    13H         ;     INC    DE
  168.     DB    3DH         ;     DEC    A
  169.     DB    20H,0F2H     ;     JR    NZ,L025E
  170.     DB    0C9H         ;     RET
  171. ;
  172. ; KEYDE1 IS THE KEY DEFINITION WHEN IN WS.
  173. ;
  174. KEYDE1:    ;UNSHIFTED KEYS
  175.     DB    ESC    ;CLEAR
  176.     DB    03H    ;BREAK
  177.     DB    05H    ;UP  
  178.     DB    18H    ;DOWN
  179.     DB    13H    ;LEFT
  180.     DB    04H    ;RIGHT
  181.     ;
  182.     ; SHIFT PLUS KEYS
  183.     ;
  184.     DB    18H    ;CLEAR
  185.     DB    03H    ;BREAK
  186.     DB    12H    ;UP
  187.     DB    03H    ;DOWN
  188.     DB    01H    ;LEFT    
  189.     DB    06H    ;RIGHT
  190.     ;
  191.     ; CONTROL PLUS KEYS
  192.     ;
  193.     DB    7FH    ;CLEAR
  194.     DB    03H    ;BREAK
  195.     DB    0BH    ;UP
  196.     DB    0AH    ;DOWN
  197.     DB    08H    ;LEFT
  198.     DB    09H    ;RIGHT
  199. KEYDEF:    DB    0,0
  200. ;
  201. ; KEYDE2 IS THE KEY DEFINITION AFTER EXITING WS. 
  202. ;
  203. KEYDE2:    ;UNSHIFTED KEYS
  204.     DB    ESC    ;CLEAR
  205.     DB    03H    ;BREAK
  206.     DB    0BH    ;UP  
  207.     DB    0AH    ;DOWN
  208.     DB    08H    ;LEFT
  209.     DB    09H    ;RIGHT
  210.     ;
  211.     ; SHIFT PLUS KEYS
  212.     ;
  213.     DB    18H    ;CLEAR
  214.     DB    03H    ;BREAK
  215.     DB    05H    ;UP
  216.     DB    18H    ;DOWN
  217.     DB    13H    ;LEFT
  218.     DB    04H    ;RIGHT
  219.     ;
  220.     ; CONTROL PLUS KEYS
  221.     ;
  222.     DB    7FH    ;CLEAR
  223.     DB    03H    ;BREAK
  224.     DB    0BH    ;UP
  225.     DB    LF    ;DOWN
  226.     DB    BS    ;LEFT
  227.     DB    HT    ;RIGHT
  228. ;
  229. ;    Output to console routine used to clear screen 
  230. ;
  231. CONOUT    LHLD    1        ;fetch BIOS address
  232.     MVI    L,0CH        ;offset for console output routine
  233.     PCHL            ;jump to it
  234.     RET
  235. ;
  236. ; *********  END AT 034C,  034DH IS USED BY WORDSTAR **********
  237. ;
  238. ;     PROGRAM OPTION PATCH SECTION
  239. ;
  240. ;     (Flags are 0FFH for on, 00H for off).
  241. ;
  242. ON    EQU    0FFH
  243. OFF    EQU    00H
  244. ;
  245.     ORG    34DH
  246. ITHELP    DB    0        ;initial help level: 0,1,2, or 3 (^JHn)
  247. NITHLF    DB    ON        
  248. ITITOG    DB    OFF        ;Insert mode flag (^V)
  249. ITDSDR    DB    ON        ;Directory display flag (^KF)
  250.     ORG    351H
  251. INITPF    DB    08        ;Line height (in 1/48's)
  252.     DB    66        ;Paper length (in lines) (.PLn)
  253.     DW    528         ;Paper length (in 1/48's) 
  254.     DB    08        ;Line height repeated here
  255.     DB    03        ;Top margin (in lines) (.MTn)
  256.     DW    24          ;Top margin (in 1/48's)
  257.     DB    08        ;Line height repeated again
  258.     DB    02        ;Heading margin (in lines) (.HMn)
  259.     DW    16          ;Heading margin (in 1/48's)
  260.     DB    08        ;Line height repeated again
  261.     DB    08        ;Bottom margin (in lines) (.MBn)
  262.     DW    64          ;Bottom margin (in 1/48's)
  263.     DB    08         ;Line height repeated again
  264.     DB    02        ;Footing margin (in lines) (.FMn)
  265.     DW    16          ;Footing margin (in 1/48's)
  266.     DB    08         ;Line height repeated again
  267.     DB    0         ;Must be 0 for standard char width
  268.     DB    12         ;Standard char width (1/120's)(12=10char/inch)
  269.     DB    10         ;Alternate char width (1/120's)(10=12/inch)
  270.     DB    08        ;Page offset in characters (.POn)
  271. INITLM    DB    9-1         ;Left margin minus 1
  272. INITRM    DB    73-1        ;Right margin minus 1
  273. INITSR    DB    3         ;Superscript roll (in 1/48's) 
  274.     ORG    36DH
  275. INITWF    DB    ON        ;Word wrap flag (^OW)
  276.     DB    ON        ;Justification flag (^OJ)
  277.     DB    ON        ;Variable tabs flag (^OV)
  278.     DB    OFF        ;Soft hyphen entry flag (^OE)
  279.     DB    OFF        ;Hyphen help flag (^OH)
  280.     DB    ON        ;Print control display flag (^OD)
  281.     DB    ON        ;Ruler display flag (^OT)
  282.     DB    ON        ;Dynamic page break flag
  283.     DB    ON        ;Page break display flag (^OP)
  284.     DB    1        ;Line spacing: 1-5 (.LS)
  285.     ORG    378H
  286. NONDOC    DB    ON        ;Enter WS in Non-document mode 
  287.     ORG    379H
  288. DOTSON    DB    ON
  289.     ORG    37AH
  290. DECCHR    DB    '.'        ;Decimal tab character 
  291.     ORG    37BH
  292. DOTCHR    DB    '.'        ;DOT command character
  293.     ORG    3C9H
  294. HZONE    DB    4        ;Hyphenation (3=shorter words, 5=longer words)
  295.     ORG    3F8H    ;change defaults in print command:
  296. PODBLK    DB    OFF        ;Disk file output from Print flag
  297.     DB    On        ;Use forms feeds during print
  298.     DB    OFF        ;Suppress page format during print
  299.     DB    OFF        ;Pause between pages during print
  300.     ORG    3FDH
  301. ITPOPN    DB    OFF        ;Omit page numbers during print
  302.     DB    ON        ;Micro justify flag
  303.     DB    ON        ;Bidirectional print flag
  304.     ORG    389H
  305. RVELIM    DB    ','        ;Delimiter character in data file
  306.     ORG    38EH
  307. VARCH1    DB    '&'        ;Variable start
  308. VARCH2    DB    '&'        ;Variable end
  309.     ORG    430H        
  310. AUTOBS    DB    0        ;Automatic backspace 
  311. ;*********************************************************************
  312. ;
  313. ;           PRINTER PATCH SECTION
  314. ;
  315. ;    Most parameters will consist of a character count, 
  316. ;    followed by a string of ASCII characters.
  317. ;
  318. ;           Make sure to leave the same number of bytes defined
  319. ;           as were previously defined for each parameter,
  320. ;           by adding or deleting trailing zeroes as needed.
  321. ;        
  322. ;    SET FOR EPSON MX - 80 PRINTER
  323. ;
  324.     ORG    69AH
  325. BLDSTR    DB    3        ;Number of strikes for boldface
  326. DBLSTR    DB    2        ;Number of strikes for doublestrike
  327.     ORG    69CH
  328. PSCRLF    DB    02H,CR,LF     ;Advance to next line sequence
  329.     DB    0,0,0,0,0,0,0,0    
  330. PSCR    DB    01H,CR,0,0,0,0,0;Return carriage for overprint
  331. PSHALF    DB    0,0,0,0,0,0,0    ;Half line feed sequence
  332. PBACKS    DB    01H,BS,0,0,0,0    ;Backspace character sequence
  333. PALT    DB    01H,0FH,0,0,0    ;Alternate pitch (^PA) - 
  334. PSTD    DB    01H,DC2,0,0,0    ;Standard pitch (^PN) - 
  335. ROLUP    DB    03H,ESC,53H,0,0    ;Superscript character sequence
  336. ROLDOW    DB    03H,ESC,53H,1,0    ;Supscript character sequence
  337. USR1    DB    02H,ESC,'E',0,0    ;User sequence 1 (^PQ) - Emphasized print on
  338. USR2    DB    02H,ESC,'F',0,0    ;User sequence 2 (^PW) - Emphasized print off
  339. USR3    DB    01H,0EH,0,0,0    ;User sequence 3 (^PE) - Double width on
  340. USR4    DB    01H,DC4,0,0,0    ;User sequence 4 (^PR) - Double width off
  341. RIBBON    DB    02H,ESC,'4',0,0    ;Alternate ribbon (^PY) - Italics on
  342. RIBOFF    DB    02H,ESC,'5',0,0    ;Standard ribbon (^PY) - Italics off
  343. PSINIT    DB    02H,ESC,40H,0,0,0,0,0,0
  344.     DB    0,0,0,0,0,0,0,0
  345. PSFINI    DB    02H,ESC,40H,0,0,0,0,0
  346.     DB    0,0,0,0,0,0,0,0,0    
  347.     ORG    70FH
  348. SOCHR    DB    '\'        ;Character used for strikeout
  349. ULCHR    DB    '_'        ;Character used for underlining
  350.   
  351.     END
  352.