þþj%è+X***************************************ò+X* ATARI PRINTSCREEN *ü+X* This program was written using *+X* MAC65. By Steve Derderian *+X* (c) 1989 ANTIC PUBLISHING, INC. *+X* Date Written: November 2, 1988 *$+X* *.+X***************************************8X*B3…START…STARTâ+X***************************************ì+X* *ö+X* This program consists of three *+X* responsible for loading the program *+X* at START ($4000), modifying the *+X* rest of the program to run at LOMEM *(+X* (actual address unknown until run *2+X* time), and moving the program to *<+X* LOMEM. *F+X* *P+X* The following section of the *Z+X* program is not moved to LOMEM so it *d+X* does not take up any memory in your *n+X* computer. *x+X* *‚+X***************************************ŒX*–$>P;;for the printer´FƒP02;;device handler.¾2;;Each handler entryÈ2;;consists of threeÒ2;;bytes.ÜHƒP01;;Not found, try again.æX*ðƒP02Q†HATABS9;;Found P:.ú#P‚C0%>ÿ;;vector to point to
$&†VKEYBD '†VKEYBD;;(section three).
X*(
0:;;Return to DOS (or the OS if system reset).2
X*<
+X***************************************F
+X* *P
+X* This is section three. It is the *Z
+X* part of the program that actually *d
+X* performs the screen print function. *n
+X* (This is why we did all of that *x
+X* stuff above.) *‚
+X* *Œ
+X* This section is called each time a *–
+X* key is pressed. *
+X* *ª
+X***************************************´
X*¾
=ƒP09Q†KBCODE;;Pick up the code from the keyboard register.È
"R>Ê;;Was it <SHIFT><CONTROL>P?Ò
FƒP11;;YES!Ü
X*æ
(ƒP10!ÿÿ;;NO! - Let the OS handle it.ð
X*ú
+ƒP11A;;Since this is an interupt routine#5;;we are responsible for saving!C;;all of the registers. (The&5;;A-register was saved by the OS.)"+Q†POKMSK;;We don't have to do this, but ,!5;;we want to save POKMSK too.6X*@(M>?;;0011 1111 Turn off keyboard andJ!P†POKMSK;;break key interupts.T
P…IRQENY.;;Allow SIO Interrupts...^X*h,Q> ;;Was the character < a space?lDƒP16;;YES!v-A;;NO! - bring it back. It was OK before.€R>
|;;Virgule?ŠHƒP16;;NO! - print it”Q>³;;YES! - change to solidžX*¨ ƒP16$>"‚C1
X*
%ƒP19"‚C2;;Decrement our 40 counter
-HƒP21;;It's not zero. Aren't we done yet?*
X*4
%Q>
;;It was zero, do a line feed.>
$>M‚C1p
R>ÿ;;Did we hit -1?z
#FƒP22;;YES! - We're almost done.„
X*Ž
Q‚C2˜
#HƒP13;;Haven't filled a line yet¢
/FƒP12;;UNCONDITIONAL - reset the 40 counter.¬
X*¶
'ƒP22"†SAVMSC;;Restore the pointerÀ
"†SAVMSC;;to screen RAM.Ê
"†SAVMSCÔ
X*Þ
Q>ÿ;;Clear the key press soè
*P†KBCODE;;we don't get stuck in a loop.ò
X*ü
7;;Restore the interuptP†POKMSK;;request register.
P…IRQEN 7;;Restore the CPU registers.$?.78>B7L9;;Return from the interupt.VX*`+X***************************************j+X* *t+X* The following table is used to *~+X* convert the ATASCII graphics *ˆ+X* character to the equilivant *’+X* IBM printer character. If you have *œ+X* Panasonic, Epson, or any other *¦+X* printer that supports IBM graphics *°+X* characters, this should work fine. *º+X* The table will also protect you *Ä+X* from the escape or other printer *Î+X* control characters. *Ø+X* *â+X* If this program does not work *ì+X* properly with your printer, you may *ö+X* have to modify this table. *+X***************************************"†OUTTBLA”àÃá¼´·/\âãäåæçèéêÉÄÅAAŒëìíÂÐîÀ¨ïðñòA(X*2+X***************************************<+X* *F+X* The following table is used to *P+X* convert screen characters to *Z+X* ATASCII characters. DON'T CHANGE *d+X* IT. *n+X* *x+X***************************************‚†INTATA =@=…RUNAD@' …START;;Tell DOS to run the program