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