home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0945.lha / PrtSc / Source / PrtSc.s next >
Text File  |  1993-12-20  |  21KB  |  983 lines

  1. ;
  2. ; PrintScreen V1.52   Wednesday, 13-Oct-1993
  3. ;
  4. ; (c) 1993 by Jan Hagqvist
  5. ;
  6.  
  7. ; Utilizies the PrtSc-key and makes it to
  8. ; create a graphics dump to the printer
  9.  
  10.   XREF _LVOOpenLibrary
  11.   XREF _LVOCloseLibrary
  12.   XREF _LVOOpenDevice
  13.   XREF _LVOCloseDevice
  14.   XREF _LVODisplayAlert
  15.   XREF _LVOCreateMsgPort
  16.   XREF _LVODeleteMsgPort
  17.   XREF _LVOCreateIORequest
  18.   XREF _LVODeleteIORequest
  19.   XREF _LVOGetVPModeID
  20.   XREF _LVODoIO
  21.   XREF _LVODelay
  22.   XREF _LVOOpenWindow
  23.   XREF _LVOCloseWindow
  24.   XREF _LVOWaitPort
  25.   XREF _LVOGetMsg
  26.   XREF _LVOReplyMsg
  27.   XREF _LVOOpen
  28.   XREF _LVOClose
  29.   XREF _LVOWrite
  30.   XREF _LVORead
  31.   XREF _LVOWait
  32.   XREF _LVOAllocSignal
  33.   XREF _LVOFreeSignal
  34.   XREF _LVOFindTask
  35.   XREF _LVOSignal
  36.  
  37.  
  38. JAM1                equ 0
  39. WBENCHSCREEN            equ 1
  40. PRD_PRTCOMMAND            equ $a
  41. io_Device            equ 20
  42. io_Unit                equ 24
  43. io_Command            equ 28
  44. io_PrtCommand            equ 32
  45. io_Parm0            equ 34
  46. io_Data                equ 40
  47. is_Pri                equ 9
  48. is_Name                equ 10
  49. is_Data                equ 14
  50. is_Code                equ 18
  51. ie_Class            equ 4
  52. ie_Code                equ 6
  53. ie_Qualifier            equ 8
  54. IND_ADDHANDLER            equ 9
  55. IND_REMHANDLER            equ 10
  56. IECLASS_NULL            equ 0
  57. IECLASS_RAWKEY            equ 1
  58. IEQUALIFIER_LSHIFT        equ 0
  59. IEQUALIFIER_RSHIFT        equ 1
  60. IEQUALIFIER_LALT        equ 4
  61. IEQUALIFIER_RALT        equ 5
  62. pr_MsgPort            equ 92
  63. pr_CLI                equ 172
  64. GFLG_GADGHIMAGE            equ $0002
  65. GFLG_GADGIMAGE            equ $0004
  66. GFLG_SELECTED            equ $0080
  67. GACT_RELVERIFY            equ $0001
  68. GACT_TOGGLESELECT        equ $0100
  69. GTYP_BOOLGADGET            equ $0001
  70. IDCMP_GADGETUP            equ $00000040
  71. IDCMP_CLOSEWINDOW        equ $00000200
  72. WFLG_DRAGBAR            equ $00000002
  73. WFLG_DEPTHGADGET        equ $00000004
  74. WFLG_CLOSEGADGET        equ $00000008
  75. WFLG_SIMPLE_REFRESH        equ $00000040
  76. WFLG_ACTIVATE            equ $00001000
  77. WFLG_RMBTRAP            equ $00010000
  78. WFLG_NOCAREREFRESH        equ $00020000
  79.  
  80.  
  81. PrtSc
  82.   move.l  4,a6
  83.   sub.l   a1,a1
  84.   jsr     _LVOFindTask(a6)
  85.   move.l  d0,MyTask
  86.   move.l  d0,a4
  87.   tst.l   pr_CLI(a4)
  88.   bne.s   NoWorkbench
  89.   lea     pr_MsgPort(a4),a0
  90.   jsr     _LVOWaitPort(a6)            ; Wait for message
  91.   lea     pr_MsgPort(a4),a0
  92.   jsr     _LVOGetMsg(a6)            ; Get it
  93.   move.l  d0,WorkbenchMsg            ; Store it
  94. NoWorkbench
  95.  
  96.   moveq.l #0,d0
  97.   lea     IntuitionName(pc),a1
  98.   jsr     _LVOOpenLibrary(a6)
  99.   move.l  d0,IntuitionBase
  100.   tst.l   d0
  101.   beq     Quit
  102.   moveq.l #36,d0
  103.   lea     GfxName(pc),a1
  104.   jsr     _LVOOpenLibrary(a6)
  105.   move.l  d0,GfxBase
  106.   tst.l   d0
  107.   beq     NoGfx36
  108.   moveq.l #0,d0
  109.   lea     DosName(pc),a1
  110.   jsr     _LVOOpenLibrary(a6)
  111.   move.l  d0,DosBase
  112.   tst.l   d0
  113.   beq     NoDos
  114.  
  115.   jsr     _LVOCreateMsgPort(a6)
  116.   move.l  d0,MsgPort
  117.   tst.l   d0
  118.   beq     NoMsgPort
  119.   move.l  d0,a0
  120.   moveq.l #62,d0
  121.   jsr     _LVOCreateIORequest(a6)        ; IODRPReq
  122.   move.l  d0,Request
  123.   tst.l   d0
  124.   beq     NoRequest
  125.   move.l  MsgPort(pc),a0
  126.   moveq.l #38,d0
  127.   jsr     _LVOCreateIORequest(a6)        ; IOPrtCmdReq
  128.   move.l  d0,Request3
  129.   tst.l   d0
  130.   beq     NoRequest
  131.  
  132.   jsr     _LVOCreateMsgPort(a6)
  133.   move.l  d0,MsgPort2
  134.   tst.l   d0
  135.   beq     NoMsgPort
  136.   move.l  d0,a0
  137.   moveq.l #48,d0
  138.   jsr     _LVOCreateIORequest(a6)        ; IOStdReq
  139.   move.l  d0,Request2
  140.   tst.l   d0
  141.   beq     NoRequest
  142.  
  143.   lea     InputName(pc),a0
  144.   move.l  Request2(pc),a1
  145.   moveq.l #0,d0                    ; unit 0
  146.   moveq.l #0,d1
  147.   jsr     _LVOOpenDevice(a6)
  148.   tst.l   d0
  149.   bne     Quit
  150.  
  151.   move.l  4,a6
  152.   moveq.l #-1,d0
  153.   jsr     _LVOAllocSignal(a6)
  154.   move.l  d0,PrintSignal
  155.   cmp.b   #-1,d0
  156.   beq     NoSignal
  157.   moveq.l #-1,d0
  158.   jsr     _LVOAllocSignal(a6)
  159.   move.l  d0,WindowSignal
  160.   cmp.b   #-1,d0
  161.   beq     NoSignal
  162.  
  163.   bsr     LoadConfig                ; Load the configuration!
  164.  
  165.   lea     Interrupt,a0
  166.   move.l  #MyHandler,is_Code(a0)
  167.   move.l  #0,is_Data(a0)
  168.   move.b  #100,is_Pri(a0)
  169.   move.l  #MyHandlerName,is_Name(a0)
  170.  
  171.   move.l  4,a6
  172.   move.l  Request2(pc),a1
  173.   move.l  #Interrupt,io_Data(a1)
  174.   move.w  #IND_ADDHANDLER,io_Command(a1)
  175.   jsr     _LVODoIO(a6)
  176.  
  177.   moveq.l #0,d0
  178.   move.l  PrintSignal(pc),d1
  179.   bset    d1,d0
  180.   move.l  WindowSignal(pc),d1
  181.   bset    d1,d0
  182.   move.l  d0,SignalMask
  183.  
  184.   clr.b   QuitFlag
  185. GetKey
  186.   tst.b   QuitFlag
  187.   bne.s   GetKey4
  188.   move.l  4,a6
  189.   move.l  SignalMask(pc),d0
  190.   jsr     _LVOWait(a6)
  191.   move.l  d0,d7
  192.   move.l  PrintSignal(pc),d1
  193.   btst    d1,d7
  194.   bne.s   GetKey2
  195.   move.l  WindowSignal(pc),d1
  196.   btst    d1,d7
  197.   bne.s   GetKey3
  198.   bra.s   GetKey
  199. GetKey2
  200.   bsr     DoTheDump            ; Shift+PrtSc pressed
  201.   bra.s   GetKey
  202. GetKey3
  203.   bsr     GetFlags            ; Alt+PrtSc pressed
  204.   bra.s   GetKey
  205. GetKey4
  206.  
  207. RemoveHandler
  208.   move.l  4,a6
  209.   move.l  Request2(pc),a1
  210.   move.l  #Interrupt,io_Data(a1)
  211.   move.w  #IND_REMHANDLER,io_Command(a1)
  212.   jsr     _LVODoIO(a6)
  213.  
  214. Quit                    ; Ctrl+Esc pressed, exit program
  215.   move.l  4,a6
  216.   cmp.l   #-1,PrintSignal
  217.   beq.s   Quit11
  218.   move.l  PrintSignal(pc),d0
  219.   jsr     _LVOFreeSignal(a6)
  220. Quit11
  221.   cmp.l   #-1,WindowSignal
  222.   beq.s   Quit10
  223.   move.l  WindowSignal(pc),d0
  224.   jsr     _LVOFreeSignal(a6)
  225. Quit10
  226.   tst.l   DosBase
  227.   beq.s   Quit9
  228.   move.l  DosBase(pc),a1
  229.   jsr     _LVOCloseLibrary(a6)
  230. Quit9
  231.   tst.l   Request2
  232.   beq.s   Quit8
  233.   move.l  Request2(pc),a1
  234.   jsr     _LVOCloseDevice(a6)
  235.   move.l  Request2(pc),a0
  236.   jsr     _LVODeleteIORequest(a6)
  237. Quit8
  238.   tst.l   Request3
  239.   beq.s   Quit7
  240.   move.l  Request3(pc),a0
  241.   jsr     _LVODeleteIORequest(a6)
  242. Quit7
  243.   tst.l   MsgPort2
  244.   beq.s   Quit6
  245.   move.l  MsgPort2(pc),a0
  246.   jsr     _LVODeleteMsgPort(a6)
  247. Quit6
  248.   tst.l   Request
  249.   beq.s   Quit5
  250.   move.l  Request(pc),a0
  251.   jsr     _LVODeleteIORequest(a6)
  252. Quit5
  253.   tst.l   MsgPort
  254.   beq.s   Quit4
  255.   move.l  MsgPort(pc),a0
  256.   jsr     _LVODeleteMsgPort(a6)
  257. Quit4
  258.   tst.l   GfxBase
  259.   beq.s   Quit3
  260.   move.l  GfxBase(pc),a1
  261.   jsr     _LVOCloseLibrary(a6)
  262. Quit3
  263.   tst.l   IntuitionBase
  264.   beq.s   Quit2
  265.   move.l  IntuitionBase(pc),a1
  266.   jsr     _LVOCloseLibrary(a6)
  267. Quit2
  268.   tst.l   WorkbenchMsg
  269.   bne.s   WBQuit            ; We were started from WB
  270.   moveq.l #0,d0
  271.   rts                    ; Exit to CLI
  272. WBQuit
  273.   move.l  4,a6
  274.   move.l  WorkbenchMsg(pc),a1
  275.   jsr     _LVOReplyMsg(a6)
  276.   moveq.l #0,d0
  277.   rts                    ; Exit to WB
  278.  
  279.  
  280.  
  281. DoTheDump
  282.   move.l  4,a6
  283.   lea     PrinterName(pc),a0
  284.   move.l  Request(pc),a1
  285.   moveq.l #0,d0                ; unit 0
  286.   moveq.l #0,d1
  287.   jsr     _LVOOpenDevice(a6)
  288.   tst.l   d0
  289.   bne     DoTheDump3
  290.  
  291.   move.l  Request(pc),a0
  292.   move.l  Request3(pc),a1
  293.   move.l  io_Device(a0),io_Device(a1)        ; Copy device to Request3
  294.   move.l  io_Unit(a0),io_Unit(a1)        ; Copy unit to Request3
  295.  
  296.   tst.b   ResetBeforeFlag
  297.   beq.s   DoTheDump1.1
  298.   bsr     ResetIt
  299. DoTheDump1.1
  300.  
  301.   move.l  IntuitionBase(pc),a5
  302.   move.l  56(a5),a4            ; ActiveScreen
  303.   tst.b   ActiveScreenFlag
  304.   beq.s   DoTheDump1.15
  305.   move.l  60(a5),a4            ; FirstScreen
  306. DoTheDump1.15
  307.   move.l  a4,ActiveScreen
  308.   add.l   #44,a4
  309.   move.l  a4,ActiveVPort
  310.   add.l   #40,a4
  311.   move.l  a4,ActiveRPort
  312.   move.l  GfxBase(pc),a6
  313.   move.l  ActiveVPort(pc),a0
  314.   jsr     _LVOGetVPModeID(a6)
  315.  
  316.   move.l  Request(pc),a5
  317.   move.l  d0,40(a5)            ; io_Modes
  318.   move.l  ActiveRPort(pc),32(a5)    ; io_RastPort
  319.   move.l  ActiveScreen(pc),a4
  320.   move.w  8(a4),44(a5)            ; io_ScrX
  321.   move.w  10(a4),46(a5)            ; io_ScrY
  322.   move.w  12(a4),48(a5)            ; io_ScrWidth
  323.   move.w  12(a4),d0
  324.   swap    d0
  325.   move.l  d0,52(a5)            ; io_DestCols
  326.   move.w  14(a4),50(a5)            ; io_ScrHeight
  327.   move.w  14(a4),d0
  328.   swap    d0
  329.   move.l  d0,56(a5)            ; io_DestRows
  330.   move.l  ActiveVPort(pc),a4
  331.   move.l  4(a4),36(a5)            ; io_ColorMap
  332.   move.w  SpecialFlags,60(a5)        ; io_Special = ASPECT+NOFORMFEED
  333.   move.w  #$b,io_Command(a5)        ; io_Command = PRD_DUMPRPORT
  334.  
  335.   move.l  4,a6
  336.   move.l  a5,a1
  337.   jsr     _LVODoIO(a6)            ; Dump it!
  338.  
  339.   tst.b   ResetAfterFlag
  340.   beq.s   DoTheDump1.2
  341.   bsr     ResetIt
  342. DoTheDump1.2
  343.  
  344.   move.l  Request(pc),a1
  345.   jsr     _LVOCloseDevice(a6)
  346. DoTheDump2
  347.   rts
  348. DoTheDump3
  349.   lea     NoPrinterText(pc),a0
  350.   bsr.s   ShowAlert
  351.   bra.s   DoTheDump2
  352.  
  353.  
  354. NoDos
  355.   lea     NoDosText(pc),a0
  356.   bra.s   OpenAlert
  357.  
  358. NoRequest
  359.   lea     NoRequestText(pc),a0
  360.   bra.s   OpenAlert
  361.  
  362. NoMsgPort
  363.   lea     NoMsgPortText(pc),a0
  364.   bra.s   OpenAlert
  365.  
  366. NoGfx36
  367.   lea     NoGfx36Text(pc),a0
  368.   bra.s   OpenAlert
  369.  
  370. NoSignal
  371.   lea     NoSignalText(pc),a0
  372.   bra.s   OpenAlert
  373.   nop
  374.  
  375. OpenAlert
  376.   move.l  IntuitionBase(pc),a6
  377.   moveq.l #0,d0
  378.   moveq.l #24,d1
  379.   jsr     _LVODisplayAlert(a6)
  380.   bra     Quit
  381.  
  382. ShowAlert
  383.   move.l  IntuitionBase(pc),a6
  384.   moveq.l #0,d0
  385.   moveq.l #24,d1
  386.   jsr     _LVODisplayAlert(a6)
  387.   rts
  388.  
  389. NoWindow
  390.   lea     NoWindowText(pc),a0
  391.   bsr.s   ShowAlert
  392.   move.b  #1,QuitFlag
  393.   rts
  394.  
  395.  
  396. GetFlags
  397.   move.l  IntuitionBase(pc),a6
  398.   lea     NewWindow(pc),a0
  399.   jsr     _LVOOpenWindow(a6)
  400.   move.l  d0,MyWindow
  401.   tst.l   d0
  402.   beq.s   NoWindow
  403.  
  404.   move.l  d0,a0
  405.   move.l  86(a0),MyUserPort
  406.  
  407. WaitForMessage
  408.   tst.b   QuitFlag
  409.   bne     GetFlags2
  410.  
  411.   move.l  4,a6
  412.   move.l  MyUserPort(pc),a0
  413.   jsr     _LVOWaitPort(a6)
  414. WaitForMessage2
  415.   move.l  4,a6
  416.   move.l  MyUserPort(pc),a0
  417.   jsr     _LVOGetMsg(a6)
  418.   tst.l   d0
  419.   beq.s   WaitForMessage
  420.   move.l  d0,a1
  421.   move.l  20(a1),Class
  422.   move.w  24(a1),Code
  423.   move.w  26(a1),Qualifier
  424.   move.l  28(a1),IAddress
  425.   jsr     _LVOReplyMsg(a6)
  426.   cmp.l   #IDCMP_CLOSEWINDOW,Class
  427.   bne.s   WaitForMessage3
  428.   bra.s   GetFlags2
  429. WaitForMessage3
  430.   cmp.l   #IDCMP_GADGETUP,Class
  431.   bne.s   WaitForMessage4
  432.   move.l  IAddress(pc),a0
  433.   tst.l   40(a0)
  434.   beq.s   WaitForMessage4
  435.   move.l  IntuitionBase(pc),a6
  436.   move.l  40(a0),a0
  437.   jsr     (a0)
  438. WaitForMessage4
  439.   bra     WaitForMessage2
  440. GetFlags2
  441.   move.l  IntuitionBase(pc),a6
  442.   move.l  MyWindow(pc),a0
  443.   jsr     _LVOCloseWindow(a6)
  444.   rts
  445.  
  446.  
  447. SetQuitFlag
  448.   move.b  #1,QuitFlag
  449.   rts
  450.  
  451. SaveConfig
  452.   move.l  DosBase(pc),a6
  453.   move.l  #ConfigFile,d1
  454.   move.l  #1006,d2
  455.   jsr     _LVOOpen(a6)
  456.   move.l  d0,d7
  457.   tst.l   d0
  458.   beq.s   SaveConfig2
  459.  
  460.   move.l  d7,d1
  461.   move.l  #SpecialFlags,d2
  462.   moveq.l #5,d3
  463.   jsr     _LVOWrite(a6)
  464.  
  465.   move.l  d7,d1
  466.   jsr     _LVOClose(a6)
  467. SaveConfig2
  468.   rts
  469.  
  470. LoadConfig
  471.   move.l  DosBase(pc),a6
  472.   move.l  #ConfigFile,d1
  473.   move.l  #1005,d2
  474.   jsr     _LVOOpen(a6)
  475.   move.l  d0,d7
  476.   tst.l   d0
  477.   beq.s   LoadConfig2
  478.  
  479.   move.l  d7,d1
  480.   move.l  #SpecialFlags,d2
  481.   moveq.l #5,d3
  482.   jsr     _LVORead(a6)
  483.  
  484.   bsr     CheckGadgets
  485.  
  486.   move.l  d7,d1
  487.   jsr     _LVOClose(a6)
  488. LoadConfig2
  489.   rts
  490.  
  491.  
  492. CheckGadgets
  493.   tst.b   ResetBeforeFlag
  494.   beq.s   CheckGadgets2
  495.   or.w    #GFLG_SELECTED,ResetBeforeGadgetFlags
  496. CheckGadgets2
  497.   tst.b   ResetAfterFlag
  498.   beq.s   CheckGadgets3
  499.   or.w    #GFLG_SELECTED,ResetAfterGadgetFlags
  500. CheckGadgets3
  501.   tst.b   ActiveScreenFlag
  502.   beq.s   CheckGadgets4
  503.   or.w    #GFLG_SELECTED,ScreenGadgetFlags
  504. CheckGadgets4
  505.   move.w  SpecialFlags(pc),d1
  506.   move.w  d1,d0
  507.   and.w   #$0080,d0
  508.   beq.s   CheckGadgets5
  509.   or.w    #GFLG_SELECTED,AspectGadgetFlags
  510. CheckGadgets5
  511.   move.w  d1,d0
  512.   and.w   #$0040,d0
  513.   beq.s   CheckGadgets6
  514.   or.w    #GFLG_SELECTED,CenterGadgetFlags
  515. CheckGadgets6
  516.   move.w  d1,d0
  517.   and.w   #$0800,d0
  518.   beq.s   CheckGadgets7
  519.   or.w    #GFLG_SELECTED,NoFormfeedGadgetFlags
  520. CheckGadgets7
  521.   move.w  d1,d0
  522.   and.w   #$0004,d0
  523.   beq.s   CheckGadgets8
  524.   or.w    #GFLG_SELECTED,FullColsGadgetFlags
  525. CheckGadgets8
  526.   move.w  d1,d0
  527.   and.w   #$0008,d0
  528.   beq.s   CheckGadgets9
  529.   or.w    #GFLG_SELECTED,FullRowsGadgetFlags
  530. CheckGadgets9
  531.   rts
  532.  
  533.  
  534. ResetBefore
  535.   bchg    #0,ResetBeforeFlag
  536.   rts
  537.  
  538. ResetAfter
  539.   bchg    #0,ResetAfterFlag
  540.   rts
  541.  
  542. SetScreenFlag
  543.   bchg    #0,ActiveScreenFlag
  544.   rts
  545.  
  546. SetAspectFlag
  547.   bchg    #7,SpecialFlags2
  548.   rts
  549.  
  550. SetCenterFlag
  551.   bchg    #6,SpecialFlags2
  552.   rts
  553.  
  554. SetNoFormfeedFlag
  555.   bchg    #3,SpecialFlags
  556.   rts
  557.  
  558. SetFullColsFlag
  559.   bchg    #2,SpecialFlags2
  560.   rts
  561.  
  562. SetFullRowsFlag
  563.   bchg    #3,SpecialFlags2
  564.   rts
  565.  
  566. ResetIt                ; Reset the printer
  567.   move.l  Request3(pc),a1
  568.   move.w  #PRD_PRTCOMMAND,io_Command(a1)
  569.   move.w  #0,io_PrtCommand(a1)
  570.   move.l  #0,io_Parm0(a1)
  571.   jsr     _LVODoIO(a6)
  572.   rts
  573.  
  574.  
  575.  
  576. MyHandler            ; The handler itself
  577.   move.l  a0,-(sp)            ; Store event list
  578. CheckLoop
  579.   cmp.b   #IECLASS_RAWKEY,ie_Class(a0)    ; Is this a key event?
  580.   bne.s   CheckNext            ; No, get the next event
  581.   cmp.w   #$5d,ie_Code(a0)        ; NumPad '*' pressed?
  582.   bne.s   CheckNext            ; No, get the next event
  583.   move.w  ie_Qualifier(a0),d0        ; Get the qualifiers
  584.   btst    #IEQUALIFIER_LSHIFT,d0    ; Left Shift?
  585.   bne.s   SendPrintSignal        ; Yes
  586.   btst    #IEQUALIFIER_RSHIFT,d0    ; Right Shift?
  587.   bne.s   SendPrintSignal        ; Yes
  588.   btst    #IEQUALIFIER_LALT,d0        ; Left Alt?
  589.   bne.s   SendWindowSignal        ; Yes
  590.   btst    #IEQUALIFIER_RALT,d0        ; Right Alt?
  591.   bne.s   SendWindowSignal        ; Yes
  592.   bra.s   CheckNext
  593. EatIt
  594.   move.b  #IECLASS_NULL,ie_Class(a0)    ; Nobody knows anything about any key event...
  595. CheckNext
  596.   move.l  (a0),d0            ; Get next event
  597.   move.l  d0,a0                ; Into a0
  598.   bne.s   CheckLoop            ; If there is a next one, check it
  599.  
  600.   move.l  (sp)+,d0            ; Restore event list
  601.   rts
  602. SendPrintSignal
  603.   movem.l d0-d1/a0-a1/a6,-(sp)
  604.   move.l  4,a6
  605.   moveq.l #0,d0
  606.   move.l  PrintSignal(pc),d1
  607.   bset    d1,d0
  608.   move.l  MyTask(pc),a1
  609.   jsr     _LVOSignal(a6)
  610.   movem.l (sp)+,d0-d1/a0-a1/a6
  611.   bra.s   EatIt
  612. SendWindowSignal
  613.   movem.l d0-d1/a0-a1/a6,-(sp)
  614.   move.l  4,a6
  615.   moveq.l #0,d0
  616.   move.l  WindowSignal(pc),d1
  617.   bset    d1,d0
  618.   move.l  MyTask(pc),a1
  619.   jsr     _LVOSignal(a6)
  620.   movem.l (sp)+,d0-d1/a0-a1/a6
  621.   bra.s   EatIt
  622.  
  623.  
  624. IntuitionBase        dc.l 0
  625. GfxBase            dc.l 0
  626. DosBase            dc.l 0
  627. MsgPort            dc.l 0
  628. Request            dc.l 0
  629. Request3        dc.l 0
  630. ActiveScreen        dc.l 0
  631. ActiveVPort        dc.l 0
  632. ActiveRPort        dc.l 0
  633. MsgPort2        dc.l 0
  634. Request2        dc.l 0
  635. MyWindow        dc.l 0
  636. MyUserPort        dc.l 0
  637. PrintSignal        dc.l 0
  638. WindowSignal        dc.l 0
  639. SignalMask        dc.l 0
  640. MyTask            dc.l 0
  641. WorkbenchMsg        dc.l 0
  642.  
  643. Class            dc.l 0
  644. IAddress        dc.l 0
  645. Code            dc.w 0
  646. Qualifier        dc.w 0
  647.  
  648.  
  649. NewWindow
  650.   dc.w 160,40,320,120
  651.   dc.b 1,2
  652.   dc.l IDCMP_GADGETUP!IDCMP_CLOSEWINDOW
  653.   dc.l WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_ACTIVATE!WFLG_RMBTRAP!WFLG_NOCAREREFRESH!WFLG_SIMPLE_REFRESH
  654.   dc.l QuitGadget,0,WindowTitle,0,0
  655.   dc.w 320,120,320,120,WBENCHSCREEN
  656.  
  657. QuitGadget
  658.   dc.l SaveFlagsGadget
  659.   dc.w 170,95,130,16,GFLG_GADGHIMAGE,GACT_RELVERIFY,GTYP_BOOLGADGET
  660.   dc.l QuitBorder,QuitBorder3,QuitIText,0,0
  661.   dc.w 0
  662.   dc.l SetQuitFlag
  663.  
  664. QuitIText
  665.   dc.b 1,2,JAM1,0
  666.   dc.w 25,5
  667.   dc.l Font0,QuitText,0
  668.  
  669. QuitBorder
  670.   dc.w 0,0
  671.   dc.b 2,3,JAM1,3
  672.   dc.l QuitVectors,QuitBorder2
  673.  
  674. QuitBorder2
  675.   dc.w 0,0
  676.   dc.b 1,2,JAM1,3
  677.   dc.l QuitVectors2,0
  678.  
  679. QuitBorder3
  680.   dc.w 0,0
  681.   dc.b 2,3,JAM1,3
  682.   dc.l QuitVectors2,QuitBorder4
  683.  
  684. QuitBorder4
  685.   dc.w 0,0
  686.   dc.b 1,2,JAM1,3
  687.   dc.l QuitVectors,0
  688.  
  689. QuitVectors
  690.   dc.w 0,16,0,0,130,0
  691.  
  692. QuitVectors2
  693.   dc.w 0,16,130,16,130,0
  694.  
  695. SaveFlagsGadget
  696.   dc.l ResetBeforeGadget
  697.   dc.w 20,95,130,16,GFLG_GADGHIMAGE,GACT_RELVERIFY,GTYP_BOOLGADGET
  698.   dc.l QuitBorder,QuitBorder3,SaveFlagsIText,0,0
  699.   dc.w 0
  700.   dc.l SaveConfig
  701.  
  702. SaveFlagsIText
  703.   dc.b 1,2,JAM1,0
  704.   dc.w 21,5
  705.   dc.l Font0,SaveFlagsText,0
  706.  
  707. ResetBeforeGadget
  708.   dc.l ResetAfterGadget
  709.   dc.w 138,20,16,10
  710. ResetBeforeGadgetFlags
  711.   dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  712.   dc.l CheckBoxImage,CheckBoxImage2,ResetBeforeIText,0,0
  713.   dc.w 0
  714.   dc.l ResetBefore
  715.  
  716. ResetBeforeIText
  717.   dc.b 1,2,JAM1,0
  718.   dc.w -104,1
  719.   dc.l Font0,ResetBeforeText,0
  720.  
  721. CheckBoxImage
  722.   dc.w 0,0,16,10,2
  723.   dc.l CheckBoxImageData
  724.   dc.b 3,0
  725.   dc.l 0
  726.  
  727. CheckBoxImage2
  728.   dc.w 0,0,16,10,2
  729.   dc.l CheckBoxImageData2
  730.   dc.b 3,0
  731.   dc.l 0
  732.  
  733. ResetAfterGadget
  734.   dc.l ScreenGadget
  735.   dc.w 204,20,16,10
  736. ResetAfterGadgetFlags
  737.   dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  738.   dc.l CheckBoxImage,CheckBoxImage2,ResetAfterIText,0,0
  739.   dc.w 0
  740.   dc.l ResetAfter
  741.  
  742. ResetAfterIText
  743.   dc.b 1,2,JAM1,0
  744.   dc.w -44,1
  745.   dc.l Font0,ResetAfterText,0
  746.  
  747. ScreenGadget
  748.   dc.l AspectGadget
  749.   dc.w 204,40,16,9
  750. ScreenGadgetFlags
  751.   dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  752.   dc.l ArrowsImage,ArrowsImage2,ScreenIText,0,0
  753.   dc.w 0
  754.   dc.l SetScreenFlag
  755.  
  756. ScreenIText
  757.   dc.b 1,2,JAM1,0
  758.   dc.w -100,1
  759.   dc.l Font0,ScreenText,0
  760.  
  761. ArrowsImage
  762.   dc.w 0,0,16,9,2
  763.   dc.l ArrowsImageData
  764.   dc.b 3,0
  765.   dc.l 0
  766.  
  767. ArrowsImage2
  768.   dc.w 0,0,16,9,2
  769.   dc.l ArrowsImageData2
  770.   dc.b 3,0
  771.   dc.l 0
  772.  
  773. AspectGadget
  774.   dc.l CenterGadget
  775.   dc.w 20,40,16,10
  776. AspectGadgetFlags
  777.   dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  778.   dc.l CheckBoxImage,CheckBoxImage2,AspectIText,0,0
  779.   dc.w 0
  780.   dc.l SetAspectFlag
  781.  
  782. AspectIText
  783.   dc.b 1,2,JAM1,0
  784.   dc.w 20,1
  785.   dc.l Font0,AspectText,0
  786.  
  787. CenterGadget
  788.   dc.l NoFormfeedGadget
  789.   dc.w 20,58,16,10
  790. CenterGadgetFlags
  791.   dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  792.   dc.l CheckBoxImage,CheckBoxImage2,CenterIText,0,0
  793.   dc.w 0
  794.   dc.l SetCenterFlag
  795.  
  796. CenterIText
  797.   dc.b 1,2,JAM1,0
  798.   dc.w 20,1
  799.   dc.l Font0,CenterText,0
  800.  
  801. NoFormfeedGadget
  802.   dc.l FullColsGadget
  803.   dc.w 184,58,16,10
  804. NoFormfeedGadgetFlags
  805.   dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  806.   dc.l CheckBoxImage,CheckBoxImage2,NoFormfeedIText,0,0
  807.   dc.w 0
  808.   dc.l SetNoFormfeedFlag
  809.  
  810. NoFormfeedIText
  811.   dc.b 1,2,JAM1,0
  812.   dc.w 20,1
  813.   dc.l Font0,NoFormfeedText,0
  814.  
  815. FullColsGadget
  816.   dc.l FullRowsGadget
  817.   dc.w 20,76,16,10
  818. FullColsGadgetFlags
  819.   dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  820.   dc.l CheckBoxImage,CheckBoxImage2,FullColsIText,0,0
  821.   dc.w 0
  822.   dc.l SetFullColsFlag
  823.  
  824. FullColsIText
  825.   dc.b 1,2,JAM1,0
  826.   dc.w 20,1
  827.   dc.l Font0,FullColsText,0
  828.  
  829. FullRowsGadget
  830.   dc.l 0
  831.   dc.w 184,76,16,10
  832. FullRowsGadgetFlags
  833.   dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  834.   dc.l CheckBoxImage,CheckBoxImage2,FullRowsIText,0,0
  835.   dc.w 0
  836.   dc.l SetFullRowsFlag
  837.  
  838. FullRowsIText
  839.   dc.b 1,2,JAM1,0
  840.   dc.w 20,1
  841.   dc.l Font0,FullRowsText,0
  842.  
  843.  
  844. Font0
  845.   dc.l Font0Name
  846.   dc.w 8
  847.   dc.b 0,1
  848.  
  849.  
  850. SpecialFlags        dc.b 0            ; 1
  851. SpecialFlags2        dc.b 0            ; 2
  852. ResetBeforeFlag        dc.b 0            ; 3
  853. ResetAfterFlag        dc.b 0            ; 4
  854. ActiveScreenFlag    dc.b 0            ; 5 bytes
  855. QuitFlag        dc.b 0
  856.  
  857. IntuitionName        dc.b 'intuition.library',0
  858. GfxName            dc.b 'graphics.library',0
  859. DosName            dc.b 'dos.library',0
  860. PrinterName        dc.b 'printer.device',0
  861. InputName        dc.b 'input.device',0
  862. Font0Name        dc.b 'topaz.font',0
  863.  
  864. NoGfx36Text        dc.b 0,170,14,'Can''t open graphics.library V36+',0,0
  865. NoDosText        dc.b 0,210,14,'Can''t open dos.library',0,0
  866. NoMsgPortText        dc.b 0,198,14,'Can''t create message port',0,0
  867. NoRequestText        dc.b 0,210,14,'Can''t create IORequest',0,0
  868. NoPrinterText        dc.b 0,210,14,'Can''t open printer.device',0,0
  869. NoWindowText        dc.b 0,202,14,'Can''t open window, quitting',0,0
  870. NoSignalText        dc.b 0,214,14,'Can''t allocate signal',0,0
  871. VersionString        dc.b '$VER: PrintScreen V1.52 (13.10.93) ⌐1993 Jan Hagqvist',10,0
  872.  
  873. QuitText        dc.b 'Quit PrtSc',0
  874. SaveFlagsText        dc.b 'Save config',0
  875. ResetBeforeText        dc.b 'Reset before',0
  876. ResetAfterText        dc.b 'after   dumping',0
  877. ScreenText        dc.b 'ActiveScreen   FirstScreen',0
  878. AspectText        dc.b 'Aspect',0
  879. CenterText        dc.b 'Center picture',0
  880. NoFormfeedText        dc.b 'No formfeed',0
  881. FullColsText        dc.b 'Full columns',0
  882. FullRowsText        dc.b 'Full rows',0
  883. ConfigFile        dc.b 's:PrtSc.cfg',0
  884. MyHandlerName        dc.b 'PrtSc-key eater',0
  885. WindowTitle        dc.b 'PrtSc V1.52, Freeware.',0
  886.  
  887.   SECTION 2,data,chip
  888.  
  889. Interrupt        dcb.b 22,0
  890.  
  891. CheckBoxImageData
  892.   dc.w %0000000000000000
  893.   dc.w %0000000000000011
  894.   dc.w %0000000000000011
  895.   dc.w %0000000000000011
  896.   dc.w %0000000000000011
  897.   dc.w %0000000000000011
  898.   dc.w %0000000000000011
  899.   dc.w %0000000000000011
  900.   dc.w %0000000000000011
  901.   dc.w %0011111111111111
  902.  
  903.   dc.w %1111111111111111
  904.   dc.w %1100000000000000
  905.   dc.w %1100000000000000
  906.   dc.w %1100000000000000
  907.   dc.w %1100000000000000
  908.   dc.w %1100000000000000
  909.   dc.w %1100000000000000
  910.   dc.w %1100000000000000
  911.   dc.w %1100000000000000
  912.   dc.w %1100000000000000
  913.  
  914.  
  915. CheckBoxImageData2
  916.   dc.w %1111111111111111
  917.   dc.w %1100000000000000
  918.   dc.w %1100110000110000
  919.   dc.w %1100011001100000
  920.   dc.w %1100001111000000
  921.   dc.w %1100001111000000
  922.   dc.w %1100011001100000
  923.   dc.w %1100110000110000
  924.   dc.w %1100000000000000
  925.   dc.w %1100000000000000
  926.  
  927.   dc.w %0000000000000000
  928.   dc.w %0000000000000011
  929.   dc.w %0000000000000011
  930.   dc.w %0000000000000011
  931.   dc.w %0000000000000011
  932.   dc.w %0000000000000011
  933.   dc.w %0000000000000011
  934.   dc.w %0000000000000011
  935.   dc.w %0000000000000011
  936.   dc.w %0011111111111111
  937.  
  938.  
  939. ArrowsImageData
  940.   dc.w %0000000000000000
  941.   dc.w %0000000000000011
  942.   dc.w %0000001100000011
  943.   dc.w %0000011000000011
  944.   dc.w %0000111111110011
  945.   dc.w %0000011000000011
  946.   dc.w %0000001100000011
  947.   dc.w %0000000000000011
  948.   dc.w %0011111111111111
  949.  
  950.   dc.w %1111111111111111
  951.   dc.w %1100000000000000
  952.   dc.w %1100000000000000
  953.   dc.w %1100000000000000
  954.   dc.w %1100000000000000
  955.   dc.w %1100000000000000
  956.   dc.w %1100000000000000
  957.   dc.w %1100000000000000
  958.   dc.w %1100000000000000
  959.  
  960.  
  961. ArrowsImageData2
  962.   dc.w %1111111111111111
  963.   dc.w %1100000000000000
  964.   dc.w %1100000011000000
  965.   dc.w %1100000001100000
  966.   dc.w %1100111111110000
  967.   dc.w %1100000001100000
  968.   dc.w %1100000011000000
  969.   dc.w %1100000000000000
  970.   dc.w %1100000000000000
  971.  
  972.   dc.w %0000000000000000
  973.   dc.w %0000000000000011
  974.   dc.w %0000000000000011
  975.   dc.w %0000000000000011
  976.   dc.w %0000000000000011
  977.   dc.w %0000000000000011
  978.   dc.w %0000000000000011
  979.   dc.w %0000000000000011
  980.   dc.w %0011111111111111
  981.  
  982.   END
  983.