;
; PrintScreen V1.52   Wednesday, 13-Oct-1993
;
; (c) 1993 by Jan Hagqvist
;

; Utilizies the PrtSc-key and makes it to
; create a graphics dump to the printer

  XREF _LVOOpenLibrary
  XREF _LVOCloseLibrary
  XREF _LVOOpenDevice
  XREF _LVOCloseDevice
  XREF _LVODisplayAlert
  XREF _LVOCreateMsgPort
  XREF _LVODeleteMsgPort
  XREF _LVOCreateIORequest
  XREF _LVODeleteIORequest
  XREF _LVOGetVPModeID
  XREF _LVODoIO
  XREF _LVODelay
  XREF _LVOOpenWindow
  XREF _LVOCloseWindow
  XREF _LVOWaitPort
  XREF _LVOGetMsg
  XREF _LVOReplyMsg
  XREF _LVOOpen
  XREF _LVOClose
  XREF _LVOWrite
  XREF _LVORead
  XREF _LVOWait
  XREF _LVOAllocSignal
  XREF _LVOFreeSignal
  XREF _LVOFindTask
  XREF _LVOSignal


JAM1				equ 0
WBENCHSCREEN			equ 1
PRD_PRTCOMMAND			equ $a
io_Device			equ 20
io_Unit				equ 24
io_Command			equ 28
io_PrtCommand			equ 32
io_Parm0			equ 34
io_Data				equ 40
is_Pri				equ 9
is_Name				equ 10
is_Data				equ 14
is_Code				equ 18
ie_Class			equ 4
ie_Code				equ 6
ie_Qualifier			equ 8
IND_ADDHANDLER			equ 9
IND_REMHANDLER			equ 10
IECLASS_NULL			equ 0
IECLASS_RAWKEY			equ 1
IEQUALIFIER_LSHIFT		equ 0
IEQUALIFIER_RSHIFT		equ 1
IEQUALIFIER_LALT		equ 4
IEQUALIFIER_RALT		equ 5
pr_MsgPort			equ 92
pr_CLI				equ 172
GFLG_GADGHIMAGE			equ $0002
GFLG_GADGIMAGE			equ $0004
GFLG_SELECTED			equ $0080
GACT_RELVERIFY			equ $0001
GACT_TOGGLESELECT		equ $0100
GTYP_BOOLGADGET			equ $0001
IDCMP_GADGETUP			equ $00000040
IDCMP_CLOSEWINDOW		equ $00000200
WFLG_DRAGBAR			equ $00000002
WFLG_DEPTHGADGET		equ $00000004
WFLG_CLOSEGADGET		equ $00000008
WFLG_SIMPLE_REFRESH		equ $00000040
WFLG_ACTIVATE			equ $00001000
WFLG_RMBTRAP			equ $00010000
WFLG_NOCAREREFRESH		equ $00020000


PrtSc
  move.l  4,a6
  sub.l   a1,a1
  jsr     _LVOFindTask(a6)
  move.l  d0,MyTask
  move.l  d0,a4
  tst.l   pr_CLI(a4)
  bne.s   NoWorkbench
  lea     pr_MsgPort(a4),a0
  jsr     _LVOWaitPort(a6)			; Wait for message
  lea     pr_MsgPort(a4),a0
  jsr     _LVOGetMsg(a6)			; Get it
  move.l  d0,WorkbenchMsg			; Store it
NoWorkbench

  moveq.l #0,d0
  lea     IntuitionName(pc),a1
  jsr     _LVOOpenLibrary(a6)
  move.l  d0,IntuitionBase
  tst.l   d0
  beq     Quit
  moveq.l #36,d0
  lea     GfxName(pc),a1
  jsr     _LVOOpenLibrary(a6)
  move.l  d0,GfxBase
  tst.l   d0
  beq     NoGfx36
  moveq.l #0,d0
  lea     DosName(pc),a1
  jsr     _LVOOpenLibrary(a6)
  move.l  d0,DosBase
  tst.l   d0
  beq     NoDos

  jsr     _LVOCreateMsgPort(a6)
  move.l  d0,MsgPort
  tst.l   d0
  beq     NoMsgPort
  move.l  d0,a0
  moveq.l #62,d0
  jsr     _LVOCreateIORequest(a6)		; IODRPReq
  move.l  d0,Request
  tst.l   d0
  beq     NoRequest
  move.l  MsgPort(pc),a0
  moveq.l #38,d0
  jsr     _LVOCreateIORequest(a6)		; IOPrtCmdReq
  move.l  d0,Request3
  tst.l   d0
  beq     NoRequest

  jsr     _LVOCreateMsgPort(a6)
  move.l  d0,MsgPort2
  tst.l   d0
  beq     NoMsgPort
  move.l  d0,a0
  moveq.l #48,d0
  jsr     _LVOCreateIORequest(a6)		; IOStdReq
  move.l  d0,Request2
  tst.l   d0
  beq     NoRequest

  lea     InputName(pc),a0
  move.l  Request2(pc),a1
  moveq.l #0,d0					; unit 0
  moveq.l #0,d1
  jsr     _LVOOpenDevice(a6)
  tst.l   d0
  bne     Quit

  move.l  4,a6
  moveq.l #-1,d0
  jsr     _LVOAllocSignal(a6)
  move.l  d0,PrintSignal
  cmp.b   #-1,d0
  beq     NoSignal
  moveq.l #-1,d0
  jsr     _LVOAllocSignal(a6)
  move.l  d0,WindowSignal
  cmp.b   #-1,d0
  beq     NoSignal

  bsr     LoadConfig				; Load the configuration!

  lea     Interrupt,a0
  move.l  #MyHandler,is_Code(a0)
  move.l  #0,is_Data(a0)
  move.b  #100,is_Pri(a0)
  move.l  #MyHandlerName,is_Name(a0)

  move.l  4,a6
  move.l  Request2(pc),a1
  move.l  #Interrupt,io_Data(a1)
  move.w  #IND_ADDHANDLER,io_Command(a1)
  jsr     _LVODoIO(a6)

  moveq.l #0,d0
  move.l  PrintSignal(pc),d1
  bset    d1,d0
  move.l  WindowSignal(pc),d1
  bset    d1,d0
  move.l  d0,SignalMask

  clr.b   QuitFlag
GetKey
  tst.b   QuitFlag
  bne.s   GetKey4
  move.l  4,a6
  move.l  SignalMask(pc),d0
  jsr     _LVOWait(a6)
  move.l  d0,d7
  move.l  PrintSignal(pc),d1
  btst    d1,d7
  bne.s   GetKey2
  move.l  WindowSignal(pc),d1
  btst    d1,d7
  bne.s   GetKey3
  bra.s   GetKey
GetKey2
  bsr     DoTheDump			; Shift+PrtSc pressed
  bra.s   GetKey
GetKey3
  bsr     GetFlags			; Alt+PrtSc pressed
  bra.s   GetKey
GetKey4

RemoveHandler
  move.l  4,a6
  move.l  Request2(pc),a1
  move.l  #Interrupt,io_Data(a1)
  move.w  #IND_REMHANDLER,io_Command(a1)
  jsr     _LVODoIO(a6)

Quit					; Ctrl+Esc pressed, exit program
  move.l  4,a6
  cmp.l   #-1,PrintSignal
  beq.s   Quit11
  move.l  PrintSignal(pc),d0
  jsr     _LVOFreeSignal(a6)
Quit11
  cmp.l   #-1,WindowSignal
  beq.s   Quit10
  move.l  WindowSignal(pc),d0
  jsr     _LVOFreeSignal(a6)
Quit10
  tst.l   DosBase
  beq.s   Quit9
  move.l  DosBase(pc),a1
  jsr     _LVOCloseLibrary(a6)
Quit9
  tst.l   Request2
  beq.s   Quit8
  move.l  Request2(pc),a1
  jsr     _LVOCloseDevice(a6)
  move.l  Request2(pc),a0
  jsr     _LVODeleteIORequest(a6)
Quit8
  tst.l   Request3
  beq.s   Quit7
  move.l  Request3(pc),a0
  jsr     _LVODeleteIORequest(a6)
Quit7
  tst.l   MsgPort2
  beq.s   Quit6
  move.l  MsgPort2(pc),a0
  jsr     _LVODeleteMsgPort(a6)
Quit6
  tst.l   Request
  beq.s   Quit5
  move.l  Request(pc),a0
  jsr     _LVODeleteIORequest(a6)
Quit5
  tst.l   MsgPort
  beq.s   Quit4
  move.l  MsgPort(pc),a0
  jsr     _LVODeleteMsgPort(a6)
Quit4
  tst.l   GfxBase
  beq.s   Quit3
  move.l  GfxBase(pc),a1
  jsr     _LVOCloseLibrary(a6)
Quit3
  tst.l   IntuitionBase
  beq.s   Quit2
  move.l  IntuitionBase(pc),a1
  jsr     _LVOCloseLibrary(a6)
Quit2
  tst.l   WorkbenchMsg
  bne.s   WBQuit			; We were started from WB
  moveq.l #0,d0
  rts					; Exit to CLI
WBQuit
  move.l  4,a6
  move.l  WorkbenchMsg(pc),a1
  jsr     _LVOReplyMsg(a6)
  moveq.l #0,d0
  rts					; Exit to WB



DoTheDump
  move.l  4,a6
  lea     PrinterName(pc),a0
  move.l  Request(pc),a1
  moveq.l #0,d0				; unit 0
  moveq.l #0,d1
  jsr     _LVOOpenDevice(a6)
  tst.l   d0
  bne     DoTheDump3

  move.l  Request(pc),a0
  move.l  Request3(pc),a1
  move.l  io_Device(a0),io_Device(a1)		; Copy device to Request3
  move.l  io_Unit(a0),io_Unit(a1)		; Copy unit to Request3

  tst.b   ResetBeforeFlag
  beq.s   DoTheDump1.1
  bsr     ResetIt
DoTheDump1.1

  move.l  IntuitionBase(pc),a5
  move.l  56(a5),a4			; ActiveScreen
  tst.b   ActiveScreenFlag
  beq.s   DoTheDump1.15
  move.l  60(a5),a4			; FirstScreen
DoTheDump1.15
  move.l  a4,ActiveScreen
  add.l   #44,a4
  move.l  a4,ActiveVPort
  add.l   #40,a4
  move.l  a4,ActiveRPort
  move.l  GfxBase(pc),a6
  move.l  ActiveVPort(pc),a0
  jsr     _LVOGetVPModeID(a6)

  move.l  Request(pc),a5
  move.l  d0,40(a5)			; io_Modes
  move.l  ActiveRPort(pc),32(a5)	; io_RastPort
  move.l  ActiveScreen(pc),a4
  move.w  8(a4),44(a5)			; io_ScrX
  move.w  10(a4),46(a5)			; io_ScrY
  move.w  12(a4),48(a5)			; io_ScrWidth
  move.w  12(a4),d0
  swap    d0
  move.l  d0,52(a5)			; io_DestCols
  move.w  14(a4),50(a5)			; io_ScrHeight
  move.w  14(a4),d0
  swap    d0
  move.l  d0,56(a5)			; io_DestRows
  move.l  ActiveVPort(pc),a4
  move.l  4(a4),36(a5)			; io_ColorMap
  move.w  SpecialFlags,60(a5)		; io_Special = ASPECT+NOFORMFEED
  move.w  #$b,io_Command(a5)		; io_Command = PRD_DUMPRPORT

  move.l  4,a6
  move.l  a5,a1
  jsr     _LVODoIO(a6)			; Dump it!

  tst.b   ResetAfterFlag
  beq.s   DoTheDump1.2
  bsr     ResetIt
DoTheDump1.2

  move.l  Request(pc),a1
  jsr     _LVOCloseDevice(a6)
DoTheDump2
  rts
DoTheDump3
  lea     NoPrinterText(pc),a0
  bsr.s   ShowAlert
  bra.s   DoTheDump2


NoDos
  lea     NoDosText(pc),a0
  bra.s   OpenAlert

NoRequest
  lea     NoRequestText(pc),a0
  bra.s   OpenAlert

NoMsgPort
  lea     NoMsgPortText(pc),a0
  bra.s   OpenAlert

NoGfx36
  lea     NoGfx36Text(pc),a0
  bra.s   OpenAlert

NoSignal
  lea     NoSignalText(pc),a0
  bra.s   OpenAlert
  nop

OpenAlert
  move.l  IntuitionBase(pc),a6
  moveq.l #0,d0
  moveq.l #24,d1
  jsr     _LVODisplayAlert(a6)
  bra     Quit

ShowAlert
  move.l  IntuitionBase(pc),a6
  moveq.l #0,d0
  moveq.l #24,d1
  jsr     _LVODisplayAlert(a6)
  rts

NoWindow
  lea     NoWindowText(pc),a0
  bsr.s   ShowAlert
  move.b  #1,QuitFlag
  rts


GetFlags
  move.l  IntuitionBase(pc),a6
  lea     NewWindow(pc),a0
  jsr     _LVOOpenWindow(a6)
  move.l  d0,MyWindow
  tst.l   d0
  beq.s   NoWindow

  move.l  d0,a0
  move.l  86(a0),MyUserPort

WaitForMessage
  tst.b   QuitFlag
  bne     GetFlags2

  move.l  4,a6
  move.l  MyUserPort(pc),a0
  jsr     _LVOWaitPort(a6)
WaitForMessage2
  move.l  4,a6
  move.l  MyUserPort(pc),a0
  jsr     _LVOGetMsg(a6)
  tst.l   d0
  beq.s   WaitForMessage
  move.l  d0,a1
  move.l  20(a1),Class
  move.w  24(a1),Code
  move.w  26(a1),Qualifier
  move.l  28(a1),IAddress
  jsr     _LVOReplyMsg(a6)
  cmp.l   #IDCMP_CLOSEWINDOW,Class
  bne.s   WaitForMessage3
  bra.s   GetFlags2
WaitForMessage3
  cmp.l   #IDCMP_GADGETUP,Class
  bne.s   WaitForMessage4
  move.l  IAddress(pc),a0
  tst.l   40(a0)
  beq.s   WaitForMessage4
  move.l  IntuitionBase(pc),a6
  move.l  40(a0),a0
  jsr     (a0)
WaitForMessage4
  bra     WaitForMessage2
GetFlags2
  move.l  IntuitionBase(pc),a6
  move.l  MyWindow(pc),a0
  jsr     _LVOCloseWindow(a6)
  rts


SetQuitFlag
  move.b  #1,QuitFlag
  rts

SaveConfig
  move.l  DosBase(pc),a6
  move.l  #ConfigFile,d1
  move.l  #1006,d2
  jsr     _LVOOpen(a6)
  move.l  d0,d7
  tst.l   d0
  beq.s   SaveConfig2

  move.l  d7,d1
  move.l  #SpecialFlags,d2
  moveq.l #5,d3
  jsr     _LVOWrite(a6)

  move.l  d7,d1
  jsr     _LVOClose(a6)
SaveConfig2
  rts

LoadConfig
  move.l  DosBase(pc),a6
  move.l  #ConfigFile,d1
  move.l  #1005,d2
  jsr     _LVOOpen(a6)
  move.l  d0,d7
  tst.l   d0
  beq.s   LoadConfig2

  move.l  d7,d1
  move.l  #SpecialFlags,d2
  moveq.l #5,d3
  jsr     _LVORead(a6)

  bsr     CheckGadgets

  move.l  d7,d1
  jsr     _LVOClose(a6)
LoadConfig2
  rts


CheckGadgets
  tst.b   ResetBeforeFlag
  beq.s   CheckGadgets2
  or.w    #GFLG_SELECTED,ResetBeforeGadgetFlags
CheckGadgets2
  tst.b   ResetAfterFlag
  beq.s   CheckGadgets3
  or.w    #GFLG_SELECTED,ResetAfterGadgetFlags
CheckGadgets3
  tst.b   ActiveScreenFlag
  beq.s   CheckGadgets4
  or.w    #GFLG_SELECTED,ScreenGadgetFlags
CheckGadgets4
  move.w  SpecialFlags(pc),d1
  move.w  d1,d0
  and.w   #$0080,d0
  beq.s   CheckGadgets5
  or.w    #GFLG_SELECTED,AspectGadgetFlags
CheckGadgets5
  move.w  d1,d0
  and.w   #$0040,d0
  beq.s   CheckGadgets6
  or.w    #GFLG_SELECTED,CenterGadgetFlags
CheckGadgets6
  move.w  d1,d0
  and.w   #$0800,d0
  beq.s   CheckGadgets7
  or.w    #GFLG_SELECTED,NoFormfeedGadgetFlags
CheckGadgets7
  move.w  d1,d0
  and.w   #$0004,d0
  beq.s   CheckGadgets8
  or.w    #GFLG_SELECTED,FullColsGadgetFlags
CheckGadgets8
  move.w  d1,d0
  and.w   #$0008,d0
  beq.s   CheckGadgets9
  or.w    #GFLG_SELECTED,FullRowsGadgetFlags
CheckGadgets9
  rts


ResetBefore
  bchg    #0,ResetBeforeFlag
  rts

ResetAfter
  bchg    #0,ResetAfterFlag
  rts

SetScreenFlag
  bchg    #0,ActiveScreenFlag
  rts

SetAspectFlag
  bchg    #7,SpecialFlags2
  rts

SetCenterFlag
  bchg    #6,SpecialFlags2
  rts

SetNoFormfeedFlag
  bchg    #3,SpecialFlags
  rts

SetFullColsFlag
  bchg    #2,SpecialFlags2
  rts

SetFullRowsFlag
  bchg    #3,SpecialFlags2
  rts

ResetIt				; Reset the printer
  move.l  Request3(pc),a1
  move.w  #PRD_PRTCOMMAND,io_Command(a1)
  move.w  #0,io_PrtCommand(a1)
  move.l  #0,io_Parm0(a1)
  jsr     _LVODoIO(a6)
  rts



MyHandler			; The handler itself
  move.l  a0,-(sp)			; Store event list
CheckLoop
  cmp.b   #IECLASS_RAWKEY,ie_Class(a0)	; Is this a key event?
  bne.s   CheckNext			; No, get the next event
  cmp.w   #$5d,ie_Code(a0)		; NumPad '*' pressed?
  bne.s   CheckNext			; No, get the next event
  move.w  ie_Qualifier(a0),d0		; Get the qualifiers
  btst    #IEQUALIFIER_LSHIFT,d0	; Left Shift?
  bne.s   SendPrintSignal		; Yes
  btst    #IEQUALIFIER_RSHIFT,d0	; Right Shift?
  bne.s   SendPrintSignal		; Yes
  btst    #IEQUALIFIER_LALT,d0		; Left Alt?
  bne.s   SendWindowSignal		; Yes
  btst    #IEQUALIFIER_RALT,d0		; Right Alt?
  bne.s   SendWindowSignal		; Yes
  bra.s   CheckNext
EatIt
  move.b  #IECLASS_NULL,ie_Class(a0)	; Nobody knows anything about any key event...
CheckNext
  move.l  (a0),d0			; Get next event
  move.l  d0,a0				; Into a0
  bne.s   CheckLoop			; If there is a next one, check it

  move.l  (sp)+,d0			; Restore event list
  rts
SendPrintSignal
  movem.l d0-d1/a0-a1/a6,-(sp)
  move.l  4,a6
  moveq.l #0,d0
  move.l  PrintSignal(pc),d1
  bset    d1,d0
  move.l  MyTask(pc),a1
  jsr     _LVOSignal(a6)
  movem.l (sp)+,d0-d1/a0-a1/a6
  bra.s   EatIt
SendWindowSignal
  movem.l d0-d1/a0-a1/a6,-(sp)
  move.l  4,a6
  moveq.l #0,d0
  move.l  WindowSignal(pc),d1
  bset    d1,d0
  move.l  MyTask(pc),a1
  jsr     _LVOSignal(a6)
  movem.l (sp)+,d0-d1/a0-a1/a6
  bra.s   EatIt


IntuitionBase		dc.l 0
GfxBase			dc.l 0
DosBase			dc.l 0
MsgPort			dc.l 0
Request			dc.l 0
Request3		dc.l 0
ActiveScreen		dc.l 0
ActiveVPort		dc.l 0
ActiveRPort		dc.l 0
MsgPort2		dc.l 0
Request2		dc.l 0
MyWindow		dc.l 0
MyUserPort		dc.l 0
PrintSignal		dc.l 0
WindowSignal		dc.l 0
SignalMask		dc.l 0
MyTask			dc.l 0
WorkbenchMsg		dc.l 0

Class			dc.l 0
IAddress		dc.l 0
Code			dc.w 0
Qualifier		dc.w 0


NewWindow
  dc.w 160,40,320,120
  dc.b 1,2
  dc.l IDCMP_GADGETUP!IDCMP_CLOSEWINDOW
  dc.l WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_ACTIVATE!WFLG_RMBTRAP!WFLG_NOCAREREFRESH!WFLG_SIMPLE_REFRESH
  dc.l QuitGadget,0,WindowTitle,0,0
  dc.w 320,120,320,120,WBENCHSCREEN

QuitGadget
  dc.l SaveFlagsGadget
  dc.w 170,95,130,16,GFLG_GADGHIMAGE,GACT_RELVERIFY,GTYP_BOOLGADGET
  dc.l QuitBorder,QuitBorder3,QuitIText,0,0
  dc.w 0
  dc.l SetQuitFlag

QuitIText
  dc.b 1,2,JAM1,0
  dc.w 25,5
  dc.l Font0,QuitText,0

QuitBorder
  dc.w 0,0
  dc.b 2,3,JAM1,3
  dc.l QuitVectors,QuitBorder2

QuitBorder2
  dc.w 0,0
  dc.b 1,2,JAM1,3
  dc.l QuitVectors2,0

QuitBorder3
  dc.w 0,0
  dc.b 2,3,JAM1,3
  dc.l QuitVectors2,QuitBorder4

QuitBorder4
  dc.w 0,0
  dc.b 1,2,JAM1,3
  dc.l QuitVectors,0

QuitVectors
  dc.w 0,16,0,0,130,0

QuitVectors2
  dc.w 0,16,130,16,130,0

SaveFlagsGadget
  dc.l ResetBeforeGadget
  dc.w 20,95,130,16,GFLG_GADGHIMAGE,GACT_RELVERIFY,GTYP_BOOLGADGET
  dc.l QuitBorder,QuitBorder3,SaveFlagsIText,0,0
  dc.w 0
  dc.l SaveConfig

SaveFlagsIText
  dc.b 1,2,JAM1,0
  dc.w 21,5
  dc.l Font0,SaveFlagsText,0

ResetBeforeGadget
  dc.l ResetAfterGadget
  dc.w 138,20,16,10
ResetBeforeGadgetFlags
  dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  dc.l CheckBoxImage,CheckBoxImage2,ResetBeforeIText,0,0
  dc.w 0
  dc.l ResetBefore

ResetBeforeIText
  dc.b 1,2,JAM1,0
  dc.w -104,1
  dc.l Font0,ResetBeforeText,0

CheckBoxImage
  dc.w 0,0,16,10,2
  dc.l CheckBoxImageData
  dc.b 3,0
  dc.l 0

CheckBoxImage2
  dc.w 0,0,16,10,2
  dc.l CheckBoxImageData2
  dc.b 3,0
  dc.l 0

ResetAfterGadget
  dc.l ScreenGadget
  dc.w 204,20,16,10
ResetAfterGadgetFlags
  dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  dc.l CheckBoxImage,CheckBoxImage2,ResetAfterIText,0,0
  dc.w 0
  dc.l ResetAfter

ResetAfterIText
  dc.b 1,2,JAM1,0
  dc.w -44,1
  dc.l Font0,ResetAfterText,0

ScreenGadget
  dc.l AspectGadget
  dc.w 204,40,16,9
ScreenGadgetFlags
  dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  dc.l ArrowsImage,ArrowsImage2,ScreenIText,0,0
  dc.w 0
  dc.l SetScreenFlag

ScreenIText
  dc.b 1,2,JAM1,0
  dc.w -100,1
  dc.l Font0,ScreenText,0

ArrowsImage
  dc.w 0,0,16,9,2
  dc.l ArrowsImageData
  dc.b 3,0
  dc.l 0

ArrowsImage2
  dc.w 0,0,16,9,2
  dc.l ArrowsImageData2
  dc.b 3,0
  dc.l 0

AspectGadget
  dc.l CenterGadget
  dc.w 20,40,16,10
AspectGadgetFlags
  dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  dc.l CheckBoxImage,CheckBoxImage2,AspectIText,0,0
  dc.w 0
  dc.l SetAspectFlag

AspectIText
  dc.b 1,2,JAM1,0
  dc.w 20,1
  dc.l Font0,AspectText,0

CenterGadget
  dc.l NoFormfeedGadget
  dc.w 20,58,16,10
CenterGadgetFlags
  dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  dc.l CheckBoxImage,CheckBoxImage2,CenterIText,0,0
  dc.w 0
  dc.l SetCenterFlag

CenterIText
  dc.b 1,2,JAM1,0
  dc.w 20,1
  dc.l Font0,CenterText,0

NoFormfeedGadget
  dc.l FullColsGadget
  dc.w 184,58,16,10
NoFormfeedGadgetFlags
  dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  dc.l CheckBoxImage,CheckBoxImage2,NoFormfeedIText,0,0
  dc.w 0
  dc.l SetNoFormfeedFlag

NoFormfeedIText
  dc.b 1,2,JAM1,0
  dc.w 20,1
  dc.l Font0,NoFormfeedText,0

FullColsGadget
  dc.l FullRowsGadget
  dc.w 20,76,16,10
FullColsGadgetFlags
  dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  dc.l CheckBoxImage,CheckBoxImage2,FullColsIText,0,0
  dc.w 0
  dc.l SetFullColsFlag

FullColsIText
  dc.b 1,2,JAM1,0
  dc.w 20,1
  dc.l Font0,FullColsText,0

FullRowsGadget
  dc.l 0
  dc.w 184,76,16,10
FullRowsGadgetFlags
  dc.w GFLG_GADGHIMAGE!GFLG_GADGIMAGE,GACT_RELVERIFY!GACT_TOGGLESELECT,GTYP_BOOLGADGET
  dc.l CheckBoxImage,CheckBoxImage2,FullRowsIText,0,0
  dc.w 0
  dc.l SetFullRowsFlag

FullRowsIText
  dc.b 1,2,JAM1,0
  dc.w 20,1
  dc.l Font0,FullRowsText,0


Font0
  dc.l Font0Name
  dc.w 8
  dc.b 0,1


SpecialFlags		dc.b 0			; 1
SpecialFlags2		dc.b 0			; 2
ResetBeforeFlag		dc.b 0			; 3
ResetAfterFlag		dc.b 0			; 4
ActiveScreenFlag	dc.b 0			; 5 bytes
QuitFlag		dc.b 0

IntuitionName		dc.b 'intuition.library',0
GfxName			dc.b 'graphics.library',0
DosName			dc.b 'dos.library',0
PrinterName		dc.b 'printer.device',0
InputName		dc.b 'input.device',0
Font0Name		dc.b 'topaz.font',0

NoGfx36Text		dc.b 0,170,14,'Can''t open graphics.library V36+',0,0
NoDosText		dc.b 0,210,14,'Can''t open dos.library',0,0
NoMsgPortText		dc.b 0,198,14,'Can''t create message port',0,0
NoRequestText		dc.b 0,210,14,'Can''t create IORequest',0,0
NoPrinterText		dc.b 0,210,14,'Can''t open printer.device',0,0
NoWindowText		dc.b 0,202,14,'Can''t open window, quitting',0,0
NoSignalText		dc.b 0,214,14,'Can''t allocate signal',0,0
VersionString		dc.b '$VER: PrintScreen V1.52 (13.10.93) ©1993 Jan Hagqvist',10,0

QuitText		dc.b 'Quit PrtSc',0
SaveFlagsText		dc.b 'Save config',0
ResetBeforeText		dc.b 'Reset before',0
ResetAfterText		dc.b 'after   dumping',0
ScreenText		dc.b 'ActiveScreen   FirstScreen',0
AspectText		dc.b 'Aspect',0
CenterText		dc.b 'Center picture',0
NoFormfeedText		dc.b 'No formfeed',0
FullColsText		dc.b 'Full columns',0
FullRowsText		dc.b 'Full rows',0
ConfigFile		dc.b 's:PrtSc.cfg',0
MyHandlerName		dc.b 'PrtSc-key eater',0
WindowTitle		dc.b 'PrtSc V1.52, Freeware.',0

  SECTION 2,data,chip

Interrupt		dcb.b 22,0

CheckBoxImageData
  dc.w %0000000000000000
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0011111111111111

  dc.w %1111111111111111
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000


CheckBoxImageData2
  dc.w %1111111111111111
  dc.w %1100000000000000
  dc.w %1100110000110000
  dc.w %1100011001100000
  dc.w %1100001111000000
  dc.w %1100001111000000
  dc.w %1100011001100000
  dc.w %1100110000110000
  dc.w %1100000000000000
  dc.w %1100000000000000

  dc.w %0000000000000000
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0011111111111111


ArrowsImageData
  dc.w %0000000000000000
  dc.w %0000000000000011
  dc.w %0000001100000011
  dc.w %0000011000000011
  dc.w %0000111111110011
  dc.w %0000011000000011
  dc.w %0000001100000011
  dc.w %0000000000000011
  dc.w %0011111111111111

  dc.w %1111111111111111
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000
  dc.w %1100000000000000


ArrowsImageData2
  dc.w %1111111111111111
  dc.w %1100000000000000
  dc.w %1100000011000000
  dc.w %1100000001100000
  dc.w %1100111111110000
  dc.w %1100000001100000
  dc.w %1100000011000000
  dc.w %1100000000000000
  dc.w %1100000000000000

  dc.w %0000000000000000
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0000000000000011
  dc.w %0011111111111111

  END
