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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

8.15 SLASH0 Filter Illustrated<br />

;SLASH0/FLT - <strong>Version</strong> 6.0 - 05/27/83<br />

;<br />

COM ''<br />

;<br />

;*=*=*<br />

; This filter will provide slashed zeroes on<br />

; printers capable of accepting a backspace<br />

;*=*=*<br />

;<br />

LF EQU 10<br />

CR EQU 13<br />

@CHNIO EQU 20<br />

@HIGH$ EQU 100<br />

@DSPLY EQU 10<br />

@FLAGS$ EQU 101<br />

@LOGOT EQU 12<br />

ORG 3000H<br />

BEGIN PUSH DE<br />

POP IX ;Get dcb<br />

LD (MODDCB),DE ;Stuff DCB pointer<br />

LD HL,HELLO$<br />

LD A,@DSPLY ;Display hello<br />

RST 40<br />

;*=*=*<br />

; Check if entry from SET command<br />

;*=*=*<br />

LD A,@FLAGS$ ;Get flags pointer<br />

RST 40<br />

BIT 3,(IY+'C'-'A') ;System request?<br />

JP Z,VIASET<br />

;*=*=*<br />

; install new HIGH$ and move filter code<br />

;*=*=*<br />

LD HL,0 ;Get current HIGH$<br />

LD B,L<br />

LD A,@HIGH$<br />

RST 40<br />

JR NZ,NOMEM<br />

LD (OLDHI),HL ;Put in filter header<br />

;*=*=*<br />

; Relocate internal references in driver<br />

;*=*=*<br />

LD IY,RELTAB ;Point <strong>to</strong> relocation tbl<br />

LD DE,MODEND<br />

OR A ;Clear carry flag<br />

SBC HL,DE<br />

LD B,H ;Move <strong>to</strong> BC<br />

LD C,L<br />

RLOOP LD L,(IY) ;Get address <strong>to</strong> change<br />

LD H,(IY+1)<br />

LD A,H<br />

OR L<br />

JR Z,RXEND<br />

LD E,(HL) ;P/U address<br />

INC HL<br />

LD D,(HL)<br />

EX DE,HL ;Offset it<br />

ADD HL,BC<br />

EX DE,HL<br />

LD (HL),D ;And put back<br />

DEC HL<br />

LD (HL),E<br />

INC IY<br />

INC IY<br />

JR RLOOP ;Loop till done<br />

;*=*=*<br />

; Move driver in<strong>to</strong> high memory<br />

;*=*=*<br />

RXEND LD DE,(OLDHI) ;Destination address<br />

LD HL,MODEND ;Last byte of module<br />

LD BC,LENGTH ;Length of filter<br />

LDDR<br />

8-38

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

Saved successfully!

Ooh no, something went wrong!