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 / WS30MOD4.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  10KB  |  337 lines

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