;Magazine/Document reader ;~~~~~~~~~~~~~~~~~~~~~~~~ ;(c)1992 Simon Cooke ;[This version for ENTROPY members] ;Originally written in 1990 for FRED magazine. Compressor is separate. fadeval: EQU 71 ORG &8000 DUMP &8000 font: EQU &5190 lmpr: EQU &FA hmpr: EQU &FB vmpr: EQU &FC palette: EQU &0154 LD A,1 LD (pagenumber),A LD (errorsp),SP ;lets it drop out of routine without ;stack cleaning. LD HL,font ;this just converts the LD DE,mode3font ;character set so that it LD BC,768 ;is in MODE 3 (i.e. the loop: ;same as what you'd get if XOR A ;you'd GRABbed a character BIT 7,(HL) ;from a MODE 3 screen) JR Z,char6 OR 192 char6: BIT 6,(HL) JR Z,char5 OR 48 char5: BIT 5,(HL) JR Z,char4 OR 12 char4: BIT 4,(HL) JR Z,storehalf OR 3 storehalf: LD (DE),A INC DE XOR A BIT 3,(HL) JR Z,char2 OR 192 char2: BIT 2,(HL) JR Z,char1 OR 48 char1: BIT 1,(HL) JR Z,char0 OR 12 char0: BIT 0,(HL) JR Z,storeother OR 3 storeother: LD (DE),A INC DE INC HL DEC BC LD A,B OR C JR NZ,loop setupscreen: CALL table.check ;checks for decomp. table CALL palset ;set palette help.page: CALL fadeout ;fadeout screen XOR A ;A = page to decompress CALL decompress ;decompresses page 0 (the ;instructions) CALL grabkey ;wait for a keypress CALL fadeout ;fadeout screen JP mainroutine palset: LD A,0 LD B,A LD C,A LD E,0 LD A,255 CALL palette pal3: LD A,120 LD B,A LD C,A LD A,255 LD E,3 CALL palette RET fadeout: DI ;Wahey! It's a modified LD (sp.fade+1),SP LD SP,&8000 IN A,(lmpr) ;version of the AXE fader LD (lowmem+1),A ;routine! IN A,(vmpr) AND 31 OR 32 OUT (lmpr),A LD HL,0 LD BC,24576 LD DE,fadeval floop1: LD (HL),0 ADD HL,DE LD A,H CP &60 JR C,test.end SUB &60 LD H,A test.end: DEC BC LD A,B OR C JR NZ,floop1 sp.fade: LD SP,0 LD A,(lowmem+1) OUT (250),A EI RET choosetext: JP text text: ;Enter routine with A holding ASCII chr PUSH AF LD A,(atflag) ;chr 22, then number, moves OR A ;cursor on by that number of JR NZ,grabatpos ;spaces POP AF CP 22 ;...FAST text print routine JP Z,atstart CP 13 JP Z,carriageret CP 21 ;fill screen with N spaces JP Z,spacefill PUSH BC LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,mode3font-512 ADD HL,DE ;hl contains font position IN A,(lmpr) LD (lowmem+1),A DI IN A,(vmpr) AND 31 OR 32 OUT (lmpr),A ;page in screen in lowmem EXX ;font position now in hl' LD A,(ypos) LD H,A LD L,0 ADD HL,HL ADD HL,HL LD A,(xpos) EX DE,HL LD L,A LD H,0 ADD HL,HL ADD HL,DE ;hl contains screen pos EXX LD A,(inverse) LD D,A LD B,8 ycharloop: LD A,(HL) ;this puts the char onscreen. XOR D INC HL EXX LD (HL),A EXX LD A,(HL) XOR D INC HL EXX INC L LD (HL),A LD DE,127 ADD HL,DE EXX DJNZ ycharloop lowmem: LD A,0 OUT (250),A POP BC EI LD A,(xpos) INC A LD (xpos),A CP 64 RET NZ carriageret: XOR A LD (xpos),A LD A,(ypos) INC A LD (ypos),A CP 24 RET NZ XOR A LD (ypos),A RET grabatpos: CP 3 JP Z,inccursor DEC A JP Z,xposat LD (atflag),A POP AF LD (ypos),A RET xposat: LD (atflag),A POP AF LD (xpos),A RET atstart: LD A,2 LD (atflag),A RET spacefill: LD A,3 LD (atflag),A RET inccursor: XOR A LD (atflag),A POP AF LD E,A LD A,(xpos) ADD A,E LD (xpos),A CP 64 RET C loopxpos: SUB 64 LD (xpos),A PUSH AF LD A,(ypos) INC A LD (ypos),A POP AF CP 64 JR NC,loopxpos LD A,(ypos) CP 24 RET C SUB 24 LD (ypos),A RET ;Check for decompaction table at 16384 table.check: LD HL,16384 LD BC,14 LD DE,decomptext check.loop: LD A,(DE) CP (HL) JR NZ,nottable INC HL INC DE DEC BC LD A,B OR C RET Z JR check.loop nottable: LD SP,(errorsp) CALL fadeout LD HL,errormess ;error message if table not there LD DE,errend-errormess CALL printmess CALL grabkey CALL fadeout RET xpos: DEFB 0 ypos: DEFB 0 atflag: DEFB 0 inverse: DEFB 0 errorsp: DEFW 0 textpage: DEFB 0 textpos: DEFW 0 charsleft: DEFW 0 dstore: DEFB 0 ;Decompress token to screen. decompress: LD HL,16384 ADD A,5 LD E,A LD D,0 ADD HL,DE ADD HL,DE ADD HL,DE LD A,(HL) OR 32 LD (textpage),A INC HL LD E,(HL) INC HL LD D,(HL) EX DE,HL LD (textpos),HL print.skip: LD A,0 OR A JR NZ,skip.set LD A,22 CALL choosetext XOR A CALL choosetext XOR A CALL choosetext skip.set: LD HL,1344 LD (charsleft),HL DI decomploop: DI LD HL,(charsleft) LD A,H OR L JP Z,exitdecomp IN A,(lmpr) LD (lowmem+1),A LD A,(textpage) OUT (lmpr),A LD HL,(textpos) LD A,(HL) INC HL LD (textpos),HL CP 128 ;RLE encoded -- number of spaces :) JR C,standardchars JR NZ,detokenise spaces: LD A,(HL) LD (dstore),A INC HL LD (textpos),HL LD A,(lowmem+1) OUT (lmpr),A LD A,(dstore) spaceloop: PUSH AF LD A,32 CALL choosetext POP AF DEC A LD HL,(charsleft) DEC HL LD (charsleft),HL OR A JR NZ,spaceloop JP decomploop exitdecomp: EI RET standardchars: LD (dstore),A LD A,(lowmem+1) OUT (lmpr),A LD A,(dstore) LD HL,(charsleft) DEC HL LD (charsleft),HL CALL choosetext JP decomploop detokenise: LD (dstore),A LD A,(lowmem+1) OUT (lmpr),A LD A,(dstore) SUB 129 LD L,A LD H,0 ADD HL,HL LD DE,tokentable ;work out address ADD HL,DE ;from tokens and LD E,(HL) ;token table INC HL ;(merged in later LD D,(HL) ;using MDAT) LD HL,tokens ADD HL,DE tokenprint: LD A,(HL) PUSH HL PUSH AF AND 127 CALL choosetext POP AF LD HL,(charsleft) DEC HL LD (charsleft),HL POP HL INC HL BIT 7,A JP NZ,decomploop JP tokenprint decomptext: DEFM " 1992 ENTROPY" errormess: DEFB 22,0,0 DEFM "Error: Cannot find decompaction table" errend: EQU $ printmess: LD A,(HL) INC HL DEC DE PUSH HL PUSH DE CALL choosetext POP DE POP HL LD A,D OR E RET Z JR printmess tokentable: MDAT "tokentable" tokens: MDAT "tokens" leftarrows: DEFB 22,23,0 DEFM "<<<<<" rightarrows: DEFB 22,23,59 DEFM ">>>>>" pagemess: DEFB 22,23,27 DEFM "Page:" pagenumber: DEFB 0 mainroutine: XOR A LD (print.skip+1),A LD HL,text LD (choosetext+1),HL LD A,(pagenumber) CALL decompress LD DE,128 bl.line.loop: PUSH DE LD A,32 CALL text POP DE DEC DE LD A,D OR E JP NZ,bl.line.loop LD A,(pagenumber) CP 1 JR Z,notleft ;print <<<<< or >>>>> LD HL,leftarrows ;direction arrows. LD DE,8 CALL printmess notleft: LD A,(pagenumber) LD D,A LD A,(16398) ;max page no' CP D JR Z,notright LD HL,rightarrows LD DE,8 CALL printmess notright: LD HL,pagemess LD DE,8 CALL printmess LD A,(pagenumber) LD HL,(xpos) CALL asciinum ;prints ascii version of number checkkeys: LD HL,left1keys LD BC,&0300 CALL read1 OR A JR Z,notleft1key LD A,(pagenumber) CP 1 JR Z,checkkeys DEC A reprintpage: LD (pagenumber),A CALL fadeout JR mainroutine notleft1key: LD HL,left5keys LD BC,&0300 CALL read1 OR A JR Z,notleft5key LD A,(pagenumber) CP 1 JR Z,checkkeys CP 6 JR C,lessthanpage5 SUB 5 JR reprintpage lessthanpage5: LD A,1 JR reprintpage notleft5key: LD HL,right1keys LD BC,&0300 CALL read1 OR A JR Z,notright1key LD A,(pagenumber) LD D,A LD A,(16398) CP D JR Z,checkkeys LD A,D INC A JR reprintpage notright1key: LD HL,right5keys LD BC,&0300 CALL read1 OR A JR Z,notright5key LD A,(pagenumber) LD D,A LD A,(16398) CP D JR Z,checkkeys LD A,D ADD A,5 LD D,A LD A,(16398) CP D JR C,morethanpage5 LD A,D JR reprintpage morethanpage5: LD A,(16398) JR reprintpage notright5key: LD HL,quitkeys LD BC,&0200 CALL read1 OR A JR Z,notquitkey CALL fadeout waitnoquit: LD HL,quitkeys LD BC,&0200 CALL read1 OR A JR NZ,waitnoquit CALL &0166 ;flush keyboard buffer RET notquitkey: LD HL,colourkey LD BC,&0100 CALL read1 OR A JR Z,notcolchange CALL colourchange JP mainroutine notcolchange: LD HL,creditkey LD BC,&0100 CALL read1 OR A JR Z,notcredits CALL credits JP mainroutine notcredits: LD HL,printerkey LD BC,&0100 CALL read1 OR A JR Z,notprinter JP printermenu notprinter: LD HL,helpkey LD BC,&0100 CALL read1 OR A JP Z,checkkeys JP help.page read1: LD A,(HL) RRA RRA AND &1E LD E,A LD D,0 LD A,(HL) INC HL PUSH HL LD HL,keyadd ADD HL,DE LD D,A PUSH BC LD A,(HL) IN A,(&FE) AND &1F LD B,A LD A,(HL) IN A,(&F9) AND &E0 OR B CPL LD E,A POP BC POP HL LD A,D AND &07 JP Z,read4 read3: RR E DEC A JP NZ,read3 read4: RR E RL C DJNZ read1 LD A,C RET keyadd: DEFW &F7,&FB,&FD,&FE,&EF,&DF,&BF,&7F DEFW &FF left1keys: DEFB 41,67,36 left5keys: DEFB 16,66,34 right1keys: DEFB 35,40,68 right5keys: DEFB 8,65,33 quitkeys: DEFB 5,26 colourkey: DEFB 64 printerkey: DEFB 7 creditkey: DEFB 6 selectkey: DEFB 32,56,48 helpkey: DEFB 55 menucoords: DEFW 0 menudim: DEFW 0 menuopt: DEFW 0 menucreate: LD (xpos),HL INC L INC H LD (menucoords),HL LD (menudim),DE LD (menuopt),BC LD A,255 LD (inverse),A LD A,23 CALL choosetext LD A,(menudim) LD B,A topmidl: LD A,24 CALL choosetext DJNZ topmidl LD A,26 CALL choosetext LD A,(xpos) OR A JR Z,nocrtop LD A,13 CALL choosetext LD A,(menucoords) DEC A LD (xpos),A nocrtop: LD A,(menudim+1) LD C,A eachline: LD A,25 CALL choosetext LD A,(menudim) LD B,A midmidl: LD A,32 CALL choosetext DJNZ midmidl LD A,27 CALL choosetext LD A,(xpos) OR A JR Z,nocrmid LD A,13 CALL choosetext LD A,(menucoords) DEC A LD (xpos),A nocrmid: DEC C LD A,C OR A JR NZ,eachline LD A,30 CALL choosetext LD A,(menudim) LD B,A botmidl: LD A,28 CALL choosetext DJNZ botmidl LD A,29 CALL choosetext LD HL,(menuopt) LD A,L OR H RET Z menutext: LD A,(menucoords+1) LD (ypos),A lineloop: LD A,(menucoords) LD (xpos),A fill_lineloop: LD HL,(menuopt) LD A,(HL) INC HL LD (menuopt),HL CP 31 JR Z,dashes PUSH AF AND 127 CALL choosetext POP AF BIT 7,A JR Z,fill_lineloop endofline: LD A,(menudim+1) DEC A LD (menudim+1),A OR A RET Z LD A,13 CALL choosetext JR lineloop dashes: LD A,(menudim) LD B,A dashloop: LD A,31 CALL choosetext DJNZ dashloop JR endofline selpass: DEFB 0 selected: DEFB 0 selpos: DEFW 0 selwid: DEFW 0 currline: DEFB 0 wid2: DEFB 0 scrpos: DEFW 0 xorline: LD A,(selpos+1) LD D,A LD A,(selected) DEC A ADD A,D SLA A SLA A SLA A LD (currline),A LD A,(selpos) SLA A SLA A LD E,A LD A,(currline) LD D,A SRL D RR E LD (scrpos),DE LD A,(selwid) SLA A LD (wid2),A LD C,8 IN A,(250) LD (lowmem+1),A DI IN A,(252) AND 31 OR 32 OUT (250),A LD HL,(scrpos) xorloop: LD A,(wid2) LD B,A LD HL,(scrpos) xor2l: LD A,(HL) XOR 255 LD (HL),A INC HL DJNZ xor2l LD HL,(scrpos) LD DE,128 ADD HL,DE LD (scrpos),HL DEC C LD A,C OR A JR NZ,xorloop LD A,(lowmem+1) OUT (250),A EI RET selectopt: CALL xorline LD BC,16384 pauseloop: DEC BC LD A,B OR C JR NZ,pauseloop checkselkeys: LD HL,selectkey LD BC,&0300 CALL read1 OR A RET NZ LD HL,right5keys LD BC,&0300 CALL read1 JR Z,notmoveup CALL xorline LD A,(selected) DEC A LD B,A LD A,(selpass) CP B JR NZ,notpassoverup DEC B notpassoverup: LD A,B OR A JR NZ,nottopped LD A,(selwid+1) nottopped: LD (selected),A JP selectopt notmoveup: LD HL,left5keys LD BC,&0300 CALL read1 JP Z,checkselkeys CALL xorline LD A,(selected) INC A LD B,A LD A,(selpass) CP B JR NZ,notpassoverdw INC B notpassoverdw: LD A,(selwid+1) INC A LD C,A LD A,B CP C JR C,notbottomed LD A,1 notbottomed: LD (selected),A JP selectopt credits: LD HL,0 LD DE,&0E3E LD BC,datatext CALL menucreate XOR A LD (inverse),A waitselectcred:LD HL,selectkey LD BC,&0300 CALL read1 OR A JR Z,waitselectcred RET colourchange: LD A,1 LD (selected),A colour2: LD HL,&0813 LD BC,colourtext1 LD DE,&051A CALL menucreate LD A,4 LD (selpass),A LD HL,&0914 LD (selpos),HL LD HL,&051A LD (selwid),HL CALL selectopt XOR A LD (inverse),A LD A,(selected) CP 5 RET Z CP 3 JR Z,swapem CP 2 JR Z,inputcolours LD HL,&0619 LD BC,colourtext2 LD DE,&080E CALL menucreate LD A,1 LD (selected),A LD A,255 LD (selpass),A LD HL,&071A LD (selpos),HL LD HL,&080E LD (selwid),HL CALL selectopt XOR A LD (inverse),A LD A,(selected) DEC A SLA A LD E,A LD D,0 LD HL,colours ADD HL,DE LD A,(HL) LD (pal3+1),A INC HL LD A,(HL) LD (palset+1),A CALL palset JR colourchange swapem: LD A,(pal3+1) LD B,A LD A,(palset+1) LD (pal3+1),A LD A,B LD (palset+1),A CALL palset JP colour2 inputcolours: LD DE,&020E LD HL,&0918 LD BC,background CALL menucreate LD A,1 LD (selected),A colourspill: LD BC,16384 colpause: DEC BC LD A,B OR C JR NZ,colpause CALL palset LD A,(selected) CP 1 JR NZ,putuninverse1 XOR A LD (inverse),A JR putpal0num putuninverse1: LD A,255 LD (inverse),A putpal0num: LD A,(palset+1) LD HL,&0A24 CALL asciinum LD A,(selected) CP 2 JR NZ,putuninverse2 XOR A LD (inverse),A JR putpal3num putuninverse2: LD A,255 LD (inverse),A putpal3num: LD A,(pal3+1) LD HL,&0B24 CALL asciinum waitspace: LD HL,right5keys LD BC,&0300 CALL read1 OR A JR Z,checkdowncol LD A,(selected) DEC A OR A JR NZ,storeselup LD A,2 storeselup: LD (selected),A JR colourspill checkdowncol: LD HL,left5keys LD BC,&0300 CALL read1 OR A JR Z,checkselk LD A,(selected) INC A CP 3 JR NZ,stilldown LD A,1 stilldown: LD (selected),A JR colourspill checkselk: LD HL,selectkey LD BC,&0300 CALL read1 OR A JR Z,checkleft1 JR leave checkleft1: LD HL,left1keys LD BC,&0300 CALL read1 OR A JR Z,checkright1 LD A,(selected) LD HL,palset+1 DEC A JR Z,not.pal0 LD HL,pal3+1 not.pal0: LD A,(HL) DEC A AND 127 LD (HL),A JP colourspill checkright1: LD HL,right1keys LD BC,&0300 CALL read1 OR A JP Z,colourspill LD A,(selected) DEC A LD HL,palset+1 JR Z,not.pal.0 LD HL,pal3+1 not.pal.0: LD A,(HL) INC A AND 127 LD (HL),A JP colourspill leave: XOR A LD (inverse),A JP colourchange asciinum: LD (xpos),HL ;print ascii of number SUB 100 JR NC,over100 ADD A,100 PUSH AF LD A,32 CALL choosetext POP AF JR test10s over100: PUSH AF LD A,"1" CALL choosetext POP AF test10s: LD B,255 tensloop: INC B SUB 10 JR NC,tensloop ADD A,10 LD C,A LD A,B OR A LD A,C put10: PUSH AF LD A,B ADD A,48 CALL choosetext POP AF units: ADD A,48 CALL choosetext RET printermenu: LD A,1 LD (selected),A printer2: LD HL,&060F LD DE,&081F LD BC,printertext CALL menucreate LD A,7 LD (selpass),A LD HL,&0710 LD (selpos),HL LD HL,&081F LD (selwid),HL CALL selectopt XOR A LD (inverse),A LD A,(selected) CP 8 JP Z,mainroutine CP 5 JP Z,print.1.page CP 6 JP Z,print.all.page CP 3 JR Z,skip.head CP 4 JR Z,skip.bot CP 2 JR Z,formfeed LD HL,line.feed check.swapper: LD A,(HL) CP "Y" JR Z,swapnoln LD (HL),"Y" INC HL LD (HL),"e" INC HL LD (HL),"s"+128 JR printer2 swapnoln: LD (HL),"N" INC HL LD (HL),"o" INC HL LD (HL)," "+128 JR printer2 skip.bot: LD HL,skip.2 JR check.swapper formfeed: LD HL,form.feed JR check.swapper skip.head: LD HL,header JR check.swapper print.page: PUSH AF XOR A LD (hocus.pocus+1),A p.check: LD HL,selectkey LD BC,&0300 CALL read1 OR A JR NZ,p.check LD HL,text LD (choosetext+1),HL LD HL,&0A13 LD DE,&0217 LD BC,0 CALL menucreate LD HL,&0B17 LD (xpos),HL LD HL,ptext1 LD DE,ptext1l CALL printmess POP AF PUSH AF LD HL,(xpos) CALL asciinum LD HL,&0C14 LD (xpos),HL LD HL,ptext2 LD DE,ptext2l CALL printmess LD HL,print.txt LD (choosetext+1),HL POP AF LD (print.p.sp+1),SP PUSH AF LD A,&FB LD (print.skip+1),A CALL &0112 XOR A LD (print.counter+1),A LD A,64 LD (skip.counter+1),A LD HL,print.txt LD (choosetext+1),HL POP AF CALL decompress LD A,(skip.2) CP "Y" JR NZ,form.check LD DE,128 skip.bottom: PUSH DE LD A,32 CALL print.txt POP DE DEC DE LD A,D OR E JR NZ,skip.bottom form.check: LD A,(form.feed+1) CP "Y" JR NZ,clear.pr LD A,12 RST &10 clear.pr: LD HL,selectkey LD BC,&0300 CALL read1 OR A JR NZ,clear.pr print.p.sp: LD SP,&0000 XOR A LD (print.skip+1),A LD A,&FE CALL &112 LD HL,text LD (choosetext+1),HL hocus.pocus: LD A,0 RET print.1.page: LD A,(pagenumber) CALL print.page JP printer2 print.all.page: LD A,1 LD (curr.page+1),A curr.page: LD A,0 CALL print.page OR A JP NZ,printer2 LD A,(curr.page+1) INC A LD (curr.page+1),A LD D,A LD A,(16384+12) CP D JR NC,curr.page JP printer2 printertext: DEFM "Send Linefeeds:" DEFB 21,13 line.feed: DEFM "Ye" DEFB "s"+128 DEFM "Send Form-Feed after page: " form.feed: DEFM "No" DEFB " "+128 DEFM "Print header (top 2 lines): " header: DEFM "Ye" DEFB "s"+128 DEFM "Skip 2 lines after page: " skip.2: DEFM "Ye" DEFB "s"+128 DEFM "Print pag" DEFB "e"+128 DEFM "Print all tex" DEFB "t"+128 DEFB 31 DEFM "Exit men" DEFB "u"+128 clear.pr2: LD A,13 RST &10 LD A,10 RST &10 LD A,1 LD (hocus.pocus+1),A JP clear.pr print.txt: PUSH AF LD HL,selectkey LD BC,&0300 CALL read1 OR A JR NZ,clear.pr2 skip.header: LD A,(header) CP "N" JR NZ,no.skip.h skip.counter: LD A,0 OR A JR Z,no.skip.h DEC A LD (skip.counter+1),A POP AF RET no.skip.h: POP AF RST &10 print.counter: LD A,0 INC A LD (print.counter+1),A CP 64 RET NZ XOR A LD (print.counter+1),A LD A,13 RST &10 LD A,(line.feed+1) CP "N" RET Z LD A,10 RST &10 RET grabkey: XOR A IN A,(&FE) CPL AND 31 LD C,A XOR A IN A,(&F9) CPL AND 224 OR C JR Z,grabkey RET background: DEFM "Background" DEFB ":"+128 DEFM "Pen/text" DEFB ":"+128 colourtext1: DEFM "Choose from lis" DEFB "t"+128 DEFM "Input palette number" DEFB "s"+128 DEFM "Swap pen and paper colour" DEFB "s"+128,31 articexit: DEFM "Exit men" DEFB "u"+128 colourtext2: DEFM "Amber on blac" DEFB "k"+128 DEFM "Black on ambe" DEFB "r"+128 DEFM "Grey on blac" DEFB "k"+128 DEFM "Black on gre" DEFB "y"+128 DEFM "White on Blac" DEFB "k"+128 DEFM "Black on whit" DEFB "e"+128 DEFM "Green on blac" DEFB "k"+128 DEFM "Black on gree" DEFB "n"+128 colours: DEFB 98,0,0,98,120,0,0,120,127,0,0,127,64,0,0,64 datatext: DEFB 21,23 DEFM "ENTROPY presents" DEFB ":"+128,21,20 DEFM "*Document Reader v1.3" DEFB "*"+128,32+128,21,19 DEFM " 1992 Cookie Of Entrop" DEFB "y"+128,32+128,21,4 DEFM "Hi to: All members of Entropy, Colin MacD," DEFM " TG, The DV" DEFB "B"+128,21,4 DEFM "Lord Insanity, Roger Hartley and everyone " DEFM "else I know" DEFB "!"+128,21,13 DEFM "(Not enough memory for long greetz!" DEFB ")"+128 DEFB " "+128 DEFB 21,1 DEFM "The FASTEST decompact-as-you-wa" DEFM "tch text reader system made " DEFB "!"+128 DEFB " "+128 DEFB 31 DEFB " "+128 DEFB 21,18 DEFM "Press to abort" ptext2l: EQU $-ptext2 MDAT "menu_udgs" end: EQU $ ;end of object code to be SAVED length: EQU end-32768 mode3font: EQU $