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.

LD A,L ;P/u hex or dec entry<br />

BIT 6,B ;Error if switch entry<br />

JP NZ,PRMERR<br />

NSTUF LD (NULL1+1),A ;Stuff it in there<br />

LD (NULL2+1),A<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 />

XOR 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<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 />

EX DE,HL ;Move new HIGH$ <strong>to</strong> HL<br />

LD A,@HIGH$ ;Set new HIGH$ in<strong>to</strong> the system<br />

RST 40<br />

INC HL ;Bump <strong>to</strong> filter entry<br />

LD (IX+0),40H.OR.6 ;Stuff TYPE byte<br />

LD (IX+1),L<br />

LD (IX+2),H ;install addr in<strong>to</strong> dcb<br />

LD HL,0 ;Successful...<br />

RET<br />

;*=*=*<br />

; Error message handling<br />

;*=*=*<br />

VIASET LD HL,VIASET$ ;'Must install...<br />

DB 0DDH<br />

NOMEM LD HL,NOMEM$ ;'No memory'<br />

DB 0DDH<br />

PRMERR LD HL,PRMERR$ ;'Parameter error'<br />

LD A,@LOGOT<br />

RST 40<br />

LD HL,-1<br />

RET<br />

;*=*=*<br />

; Data area<br />

;*=*=*<br />

HELLO$ DB 'DMP-500 BOLDFACE Filter <strong>Version</strong> 6.0a - '<br />

DB 'Copyright 1983 by Roy Sol<strong>to</strong>ff',LF,CR<br />

PRMERR$ DB 'Parameter error!',CR<br />

8-41

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

Saved successfully!

Ooh no, something went wrong!