The Programmer's Guide to TRSDOS Version 6 - Tim Mann's Home ...
The Programmer's Guide to TRSDOS Version 6 - Tim Mann's Home ...
The Programmer's Guide to TRSDOS Version 6 - Tim Mann's Home ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
NOMEM$ DB 'High memory is not available!',CR<br />
VIASET$ DB 'Must install via SET',CR<br />
;*=*=*<br />
; Parameter table<br />
;*=*=*<br />
PRMTBL$ DB 80H!'R'<br />
;<br />
DB 0F6H,'TOGGLE' ;Toggle on/off char<br />
TRESP DB 0<br />
DW TOGGLE+1<br />
;<br />
DB 0F4H,'NULL' ;Toggle on/off w/o space<br />
NRESP DB 0<br />
DW NULL+1<br />
;<br />
NOP ;End of table<br />
;*=*=*<br />
; Entry point<br />
;*=*=*<br />
;<br />
BOLD JR START ;Branch around linkage<br />
OLDHI DW $-$ ;Last byte used<br />
;<br />
DB 7,'DMPBOLD'<br />
;<br />
MODDCB DW $-$ ;Loaded with DCB pointer<br />
DW 0<br />
;<br />
START JR Z,FILTER ;Go if @PUT<br />
PUTOUT PUSH IX ;Save current pointer<br />
PUSH BC ;Save in case affected downstream<br />
LD IX,(MODDCB) ;P/u this module's DCB<br />
RX01 EQU $-2<br />
LD A,@CHNIO ;Chain <strong>to</strong> the next<br />
RST 40<br />
POP BC<br />
POP IX<br />
RET<br />
FILTER EQU $<br />
SWITCH LD A,0 ;P/u switch<br />
OR A ;Is flag on?<br />
JR NZ,SWISON ;Go if switch is on<br />
LD A,C ;Is char a tilde?<br />
TILDE1 CP 7EH<br />
JR Z,TONSPA ;Go if got <strong>to</strong> turn on<br />
NULL1 CP 7FH ;Turn on w/o space?<br />
JR Z,TURNON<br />
JR PUTOUT ;Send the char<br />
;*=*=*<br />
; Got a flag <strong>to</strong> turn switch on/off<br />
;*=*=*<br />
TURNON LD C,BOLDON<br />
JR TURNA<br />
TURNOFF XOR A<br />
LD C,BOLDOFF<br />
TURNA LD (SWITCH+1),A ;Turn off the switch<br />
RX02 EQU $-2<br />
;<br />
PUSH BC ;Save <strong>to</strong>ggle control code<br />
LD C,ESCAPE<br />
CALL PUTOUT ;Put the ESCAPE<br />
RX03 EQU $-2<br />
POP BC ;Res<strong>to</strong>re and PUT<br />
JR PUTOUT ; the <strong>to</strong>ggle code<br />
TOFFSPA CALL TURNOFF<br />
RX04 EQU $-2<br />
JR PUT_SPA<br />
TONSPA CALL TURNON<br />
RX05 EQU $-2<br />
PUT_SPA LD C,' ' ;Put space for tilde<br />
JR PUTOUT ; and stuff a space<br />
;*=*=*<br />
; Flag is on - what should we do?<br />
;*=*=*<br />
8-42