þþf d%X; PRINT XL (C) 1997 THOR-SOFTWAREnX; A PARALLEL PRINTER DRIVERxX;‚$X; THIS VERSION IS CONFIGURED FORŒX; THE NEC P6 AND COMPATIBLE–X; PRINTERS X;ª …TURBO´X;¾#X; SET THIS TO 1 TO ASSEMBLE FORÈX; TURBO BASIC, OR TO ZEROÒ#X; TO MOVE THE DRIVER BEHIND THEÜX; OS OF THE XL SERIESæ"X; NOTE THE HW PATCH NEEDED FORðX; THAT! (MPDISABLE!)ú …TURBO؇OLDBASE`„OFFA`Ø"3=„OFFA;;ASSEMBLY TO $D800, BUT PLACE IN $6000,6 …TURBO@&|;; BASE ADDRESS FOR TURBO BASICJ „OFFAT^Fh‰CLRSTROBEðvL>!€P/Š Q>4†USERDL”P0ž Q>5†USERDL¨P1²Qô¼5ÆQoÐ5ÚM>?äPoîQóø5Q> PóQ>à Pô*Q>4PÈ>Q> HPÄR †DELONE\ …SETHWf=p„WTKYzQÒ„M>Ž H„WTKY˜Q Ò¢R>¬FƒESC¶R> À H„WTKYÊ%>ÔƒESCÞQ>¿èPÒò.ü7Pó7Po$7.Pô87BP/L7VPÄ`7jPÈt7~P1ˆ7’P0œ †DELONE¦ …SETHW°Q>ÿºPüÄ)>Î:Ø…SETHW †DELONEâQ0ìPÔöQ1PÔ QóPÔQô(P Ô2QÈ<PÐFQÄPPÐZQodPÐn:x‚#X; INIT PIA CONNECTED TO PB PORTŒ ‡PIAINIT–Q>8 PÖª+PÖ;;CB2,CA2 LEVEL HIGH OUTPUT, IRQ OFF´Q>ÿ¾PÖ;;PORT B OUTPUTÈQ>ÒPÖ;;PORT A INPUTÜQ>‰CLRSTROBEæPÖðPÖú: ˆSENDBYTE;SEND A SINGLE BYTE5%A")>, HˆNOSOUND16PÒ;; FOR PROPER SOUND ;-)@Q>¯JPÒT ˆNOSOUND1^# †WAITRD;;WAIT FOR PRINTER READYh7r)>| G…ERSEN†PÖ;;SET BYTEPÖšQ>‰SETSTROBE¤PÖ®PÖ¸Q>‰CLRSTROBEÂPÖ;;CB2=SROBE=HIÌ ˆSOUNDOFFÖQ>ÿà P…WAITFê%>ô …ERSENþ)>: ˆSOUNDOFFQA&R>0 H„NOSN:Q> ;;TURN OFF SOUNDDPÒN „NOSN:X"†WAITRD;WAIT FOR PRINTER READYbQ;;ABORT ?l FˆBRKABORTv *…WAITF€IŠPRINTREADYŠQ>” $>5èž %>4è¨ \ä;;SET TIMER²Q>ÿ¼P*Æ †WAITLPÐ*ÖÚGŠPRINTREADY;;DONE ?äQ*î FˆTIMABORTøQ FˆBRKABORT  ˆSOUNDOFF,  D†WAITLP* ˆBRKABORT4 ˆSOUNDOFF>%>€;;ERROR : BRK - ABORTH'R G„PREX\ ˆTIMABORTf%>Š;;ERROR : TIMEOUTpQ>áz ‹GETPRINSTAT„,Ž D„PREX˜ŠPRINTREADY¢%>¬Q>¶ P…WAITFÀ*Ö;;CLEAR: WAIT FINISHEDÊ„PREXÔ …TURBOÞ)>è D…OKSNDò ˆSOUNDOFFü0 ‡ASKUSER;;DISPLAY REQUESTER FOR FULL VERSION I†WAITRD  …OKSND$ :;BIT $D602 ;DON'T ERASE CB1 -> WAITING GETS MIXED UP. )>8 :B )‹GETPRINSTAT;CHECK FOR PAPER_OUT,BUSYL *ÖV K†PAPOUT` G„PBUSj :t „PBUS~ ?ˆ :’ †PAPOUTœ %>ঠ:° „OPEN;CIO HANDLER OPENº …TURBOÄ QÎ R„SAV2Ø HƒCH2â Qì R„SAV2ö F„NCH2 ƒCH2 Q>  PƒOLD Q( PƒOLD2 Q< PƒOLDF  †SETVEC;;RESTORE HATABSP „NCH2Z d Q*n R>;;WRITE ONLY ONLYx H…PRERR‚ ‡PIAINITŒ Q>– P…EXBUF  Q+ª FˆNOSMODE1´ M>¾ P„MODE;;AUX2 IS PRT MODEÈ ˆNOSMODE1Ò Q!Ü R>æ FˆNOSMODE2ð M>ú P„MODE;; OR DEVICE # ˆNOSMODE2 Q>  ˆSENDBYTE;;ACTIVATE PRT" …PRERR, :6 …CLOSE;CIO CLOSE@ $…EXBUFJ F„NEMTT …NCBF3^ GƒCLFh „NEMTr †WAITRD| ƒCLF† : ƒGETš :¤ ƒPUT;PUT BYTE VECTOR® …TURBO¸ 7@;;CHECK FOR BAD BASIC HACK HERE: DISABLE BURST MODE %9Ì )>ÀÖ E‚OSà %>ê '(ô %>þ ') ‚OS  …PUTIF& G…PUTER0 Q": R> D H…PUTERN ˆPUTBURSTX Q)b H‰DECBURST1l Q(v R>€ D…PUTERŠ ‰DECBURST1” Q@$7ž …PUTIF¨ G…PUTER² Q(;;BURST MODE¼ HƒND2Æ ")Ð ƒND2Ú "(ä #$î HƒND3ø #% ƒND3 , DˆPUTBURST …PUTER* :4 †STATUS;RETURN STATUS> %>H Q>R  ‹GETPRINSTAT\ :f …DELAY;DELAY AFTER RESETp $>2z ƒDLP„ †DELONEŽ 0˜ HƒDLP¢ :¬ †DELONE¶ Q ÔÀ I†DELONEÊ ƒDW2Ô Q ÔÞ GƒDW2è :ò ‡SPECIAL;XIO ENTRYü Q"R> F…DELAY;;DELAY 32R>%;;POINT = SET MODE$ F‡SETMODE.R>&;;NODE = GET MODE8 H…PUTERB Q„MODELPL9VQ>`PM9j%>t:~ ‡SETMODEˆQL9’M>œ P„MODE¦%>°:º…PUTIF;PUT MAIN PROCEDUREÄ %„MODEÎ)>Ø HˆNODIRECTâ ‡PUTOKBYì ˆSENDBYTE;;W/O TRANSLATIONö: ‡PUTOKEX %> ˆPUTOKEX2:( ˆNODIRECT2 †ESCREP;;PARSE ESC SEQUENCES< F‡PUTOKEXF GˆPUTOKEX2P †PUTRECZ %„MODEdR>›;;EOL TRANSLATION?n H…NOEOLx$>4†EOLTXT;;LF,CR‚ %>5†EOLTXTŒQ>– „BPUT :ª …NOEOL´)>¾ H‡NOERALLÈM>;;SEVEN BIT MODE ?ÒR> Ü D‡PUTOKEXæ E‡PUTOKBYð ‡NOERALLú)>;;GFX MODE ? F‡PUTOKBY ˆTOINTERN ŠFILLBUFFER"$>4‹GRAPHBUFFER,%>5‹GRAPHBUFFER6Q>ŒGRAPHBUFFERL@ „BPUTJ:T„BPUT;PUT BYTE ARRAY^&2h'3rP4|R>† F†BPUTOK …BPLOPš%>¤Q@27® ˆSENDBYTE¸ G†BPUTERÂ#2ÌHƒND4Ö#3à ƒND4"4ê H…BPLOPô †BPUTOKþ%> †BPUTER)>:&%ˆTOINTERN;ATASCII -> ANTIC OFFSET0R>:6DM>NR>`X E‡NOTRANSb;lS> v E‡NOTRANS€O>`Š ‡NOTRANS”$>ž&3¨T?²U3¼T?ÆU3ÐT?ÚU3äP2îQôø,O3 P3Q> 8* I…NOMIN4N>ÿ> …NOMINHP4R:\ŠFILLBUFFERfQ>4‰GRAPHCHARpP8zQ>5‰GRAPHCHAR„P9ŽQ>€˜P:¢ƒFL1¬Q>¶P;ÀƒFL2Ê%;Ô Q…MASK18ÞP<è Q…MASK28òP=ü Q…BYTPT8P>Q@27N4$M:. H…SETBF8 †CLRBITB,L D„CLDNV …SETBF` †SETBITj„CLDNt#;~Q;ˆR>’DƒFL2œQ8¦,°O> ºP8ÄDƒND6Î#9؃ND6âV:ìDƒFL1ö: †SETBIT %>$> „SBL1Q@87(L<2P@87<3FQ@87PL=ZP@87d3n3x0‚ I„SBL1Œ:– †CLRBIT %>ª$>´ „CBL2Q<¾N>ÿÈM@87ÒP@87Ü3æQ=ðN>ÿúM@87P@8733"0, I„CBL26:@!…MASK1 à===p===8=J!…MASK2 ==€===À==T!…BYTPT =======^ „MODE h …WAITF r …EXBUF |†EOLTXT  = †‹GRAPHBUFFER A‚*A='== ‰GRAPHCHARH;;BUFFER FOR GFXšŒGRAPHBUFFERL ‹GRAPHBUFFER¤‡MODETAB ====® „SAV2 ¸‡INITALL;INSTALL HANDLERÂ$>Ì„SLOPÖ2à2ê2ôQ9þ F„NOCHR> P H„SLOP …TURBO& Q>4†NEWTAB0P9: Q>5†NEWTABDP9NX Q>4ÀbP9l Q>5ÀvP9€H ˆINSHATAB;; TRICKY NON-TURBO MODE: PLACE HANDLER TABLE IN PRT BUFFERŠ”„NOCHž ‡PIAINIT¨Q>;;RESET PIA AND PRT MODE² P„MODE¼ P…WAITFÆ P…EXBUFÐ:Ú†NEWTAB;HANDLER TABLESä …TURBOî „OPENø …CLOSE ƒGET  ƒPUT †STATUS  ‡SPECIAL*4 …DALLG> …DALLGH …DALLGR …DALLG\ …DALLGf …DALLGp„OFFSÀ†NEWTABz„PRET„„DRET„PRET„OFFSŽPÓ;;SNEAKY EXIT CODE˜7¢:¬ …PALLG¶…DALLG…PALLG„OFFSÀ5ÊQÓÔ5M>¿;;MAP OUT MATH PACK. THIS REQUIRES THE HW HACKÞPÓè!‰HANDLEALLò;END OF PAGE 3ü(‰HANDLEALL;TRICKY STACK MANIPULATION@Q9R>À$#EƒOS2;;CHECK HERE FOR BASIC HACK.Q> 8P"BQ>LP)VQ>`P(jƒOS2tQ"~R>ˆ D†NOHAN1’Q>œ †NOHAN1¦T?°>;;CALCULATE OFFSET MYSELFºQ‰INTHATABS9Ä PƒJSRÎQ‰INTHATABS9Ø PƒJSRâ7ì$.ö ƒJSR ÿÿ5 QÓL>@ !„DRET(T‰INTHATABS ===„OPEN==ƒGET==ƒGET==ƒPUT==ƒPUT=…CLOSE=†STATUS=‡SPECIAL2<„INITF †SETVECP ‡INITALLZƒOLDd ÿÿn †SETVECx …TURBO‚:Œ–Qø T?ªL>ý´5¾ !„DRETÈÒ †SETVECÜ …TURBOæ Q>4„INITðPú P„SAV2 Q>5„INITP P„SAV2", Q>4í6P@ P„SAV2J Q>5íTP^ P„SAV2hrQ |L>†P :š†ESCREP;ESC PARSER¤%>® $…EXBUF¸ H…NOEX1ÂR> ;;1ST CHR : ESCÌ H…NCBF1Ö2àHƒBF1ê …NOEX1ô(>þ H…NOEX2R> *;;2ND CHR : * H…NCBF22&HƒBF20 …NOEX2:R> 1D D…NCBF3NR> 6X E…NCBF3bM>lR>v H„STMD€ …DELAYŠ,” D…STMD2ž„STMD¨>² Q‡MODETAB9¼P„MODE;;CHANGE MODEÆ …STMD2$>ÐFƒBF3Ú …NCBF25äQ> î †PUTRECø,DƒSFC  …NCBF35Q>   †PUTREC*)>4GƒSFC>Q> *H †PUTRECR ƒSFCQ>\ P…EXBUFf7p …NCBF1z)>„:ŽƒBF1˜ƒBF2¢ƒBF3¬ &…EXBUF¶%>À:Ê …TURBOÔ ˆINSHATABÞ$>'è‚IHQ†NEWTAB9òPÀ9ü0I‚IH$> ‚ILQ†RESVEC9$Pí9.08I‚ILB:L †RESVECVQ>¿`PÓj!Øt~ …STARTˆ …TURBO’Q>4‡OLDBASEœP2¦Q>5‡OLDBASE°P3º Q>4„BASEÄP4Î Q>5„BASEØP5â%>ì$>öQ>¿PÓ „CLP2Q@27P@47(32 H„CLP2<#3F#5P0Z H„CLP2dnQ xM>‚ F…NORESŒQ– PƒOLD Qª PƒOLD´Q> ¾PƒOLDÈ H†NORES2Ò …NORESÜQ>êæPƒOLDð PƒOLDú PƒOLD †NORES2 !„INIT