29.12.2012 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!