;RINGS - Ein Public-Domain-Spiel
;frei kopierbar, solange nichts verändert wird

;von Claus Brunzema
;    Gräfin-Theda-Str.2
;    2970 Emden

execbase       equ     4
FindTask       equ     -294
WaitPort       equ     -384
GetMsg         equ     -372
ReplyMsg       equ     -378
Forbid         equ     -132
OpenLib        equ     -408
CloseLib       equ     -414
OpenWindow     equ     -204
CloseWindow    equ     -72
SetAPen        equ     -342
RectFill       equ     -306
PrintIText     equ     -216
DrawImage      equ     -114
Delay          equ     -198
;
; dieses Macro erstellt eine IntuiText-Struktur
Intuitext:     MACRO
               EVEN
               dc.b    1,0             ;Farben
               dc.b    1               ;JAM2
               dc.b    0               ;pad

               IFEQ NARG-1             ;1 Argument ?
                 dc.w    0,0           ;xpos,ypos
               ENDC
               IFGE NARG-3             ;3 oder 4 Argumente ?
                 dc.w    \2,\3         ;(xpos),(ypos)
               ENDC

               dc.l    0               ;ITextFont
               dc.l    txt\@           ;Itext

               IFEQ NARG-4             ;4 Argumente ?
                 dc.l    \4            ;NextText
               ENDC
               IFLT NARG-4             ;weniger als 4 Argumente ?
                 dc.l    0             ;kein weiter Text
               ENDC

txt\@:         dc.b    '\1',0
               EVEN
               ENDM
;
;
               move.w  #1,cli
               sub.l   a1,a1
               move.l  execbase,a6
               jsr     FindTask(a6)
               move.l  d0,a5
               tst.l   $ac(a5)
               bne.s   CLIstart
               clr.w   cli
               lea     $5c(a5),a0
               jsr     WaitPort(a6)
               lea     $5c(a5),a0
               jsr     GetMsg(a6)
               move.l  d0,message

CLIstart:      lea     dosname(pc),a1
               jsr     OpenLib(a6)
               move.l  d0,dosbase
               beq     nodos
               lea     intname(pc),a1
               jsr     OpenLib(a6)
               move.l  d0,intbase
               beq     noint
               lea     gfxname(pc),a1
               jsr     OpenLib(a6)
               move.l  d0,gfxbase
               beq     nogfx
               lea     winstruct(pc),a0
               move.l  intbase(pc),a6
               jsr     OpenWindow(a6)
               move.l  d0,windowhd
               beq     nowindow
               move.l  d0,a0
               move.l  50(a0),rport
;
init:          lea     stmap(pc),a0
               lea     map(pc),a1
               moveq   #48,d0
mapcopy:       move.b  (a0)+,(a1)+
               dbra    d0,mapcopy
               clr.b   oben
               clr.b   unten

               move.l  #300,d5
mixloop:       subq.l  #1,d5
               beq.s   exitmix
               move.w  $dff006,d0
               andi.w  #$0007,d0
               bne.s   mix1
               bsr     hoch
               bra     mixloop
mix1:          cmpi.w  #1,d0
               bne.s   mix2
               bsr     runter
               bra     mixloop
mix2:          cmpi.w  #2,d0
               bne.s   mix3
               moveq   #0,d0
               bsr     links
               bra     mixloop
mix3:          cmpi.w  #3,d0
               bne.s   mix4
               moveq   #0,d0
               bsr     rechts
               bra     mixloop
mix4:          cmpi.w  #4,d0
               bne.s   mix5
               moveq   #1,d0
               bsr     links
               bra     mixloop
mix5:          cmpi.w  #5,d0
               bne.s   mix6
               moveq   #1,d0
               bsr     rechts
               bra     mixloop
mix6:          cmpi.w  #6,d0
               bne.s   mix7
               moveq   #2,d0
               bsr     links
               bra     mixloop
mix7:          moveq   #2,d0
               bsr     rechts
               bra     mixloop

exitmix:       clr.w   anzmoves
;
gameloop:      bsr     show
               moveq   #48,d0
               lea     stmap(pc),a0
               lea     map(pc),a1
cmploop:       cmp.b   (a0)+,(a1)+
               bne.s   nomatch
               dbra    d0,cmploop
               move.l  rport(pc),a0
               lea     fertigtext(pc),a1
               moveq   #18,d0
               moveq   #71,d1
               move.l  intbase,a6
               jsr     PrintIText(a6)
               move.l  #250,d1
               move.l  dosbase(pc),a6
               jsr     Delay(a6)
               move.l  rport(pc),a1
               moveq   #0,d0
               move.l  gfxbase,a6
               jsr     SetAPen(a6)
               move.l  rport(pc),a1
               moveq   #3,d0
               moveq   #45,d1
               move.l  #142,d2
               move.l  #124,d3
               jsr     RectFill(a6)
               bra     init

nomatch:       move.l  windowhd(pc),a0
               move.l  86(a0),a0
               move.l  a0,a5                   ;UserPort
               move.l  execbase,a6
               jsr     WaitPort(a6)
               move.l  a5,a0
               jsr     GetMsg(a6)
               tst.l   d0                      ;zur Sicherheit
               beq     gameloop
               move.l  d0,a0
               move.l  20(a0),d6               ;IDCMP
               move.l  28(a0),a0               ;IAddress
               move.w  38(a0),d7               ;Gadget ID
               move.l  d0,a1                   ;Msgadr
               jsr     ReplyMsg(a6)
               btst    #9,d6
               bne     exit
               btst    #6,d6
               beq     gameloop

               cmpi.w  #1,d7
               bne.s   gad2
               moveq   #0,d0
               bsr     links
               bra     gameloop
gad2:          cmpi.w  #2,d7
               bne.s   gad3
               moveq   #0,d0
               bsr     rechts
               bra     gameloop
gad3:          cmpi.w  #3,d7
               bne.s   gad4
               moveq   #1,d0
               bsr     links
               bra     gameloop
gad4:          cmpi.w  #4,d7
               bne.s   gad5
               moveq   #1,d0
               bsr     rechts
               bra     gameloop
gad5:          cmpi.w  #5,d7
               bne.s   gad6
               moveq   #2,d0
               bsr     links
               bra     gameloop
gad6:          cmpi.w  #6,d7
               bne.s   gad7
               moveq   #2,d0
               bsr     rechts
               bra     gameloop
gad7:          cmpi.w  #7,d7
               bne.s   gad8
               bsr     hoch
               bra     gameloop
gad8:          cmpi.w  #8,d7
               bne.s   gad9
               bsr     runter
               bra     gameloop
gad9:          cmpi.w  #9,d7
               bne     gameloop
;
               lea     infowindow(pc),a0
               move.l  intbase(pc),a6
               jsr     OpenWindow(a6)
               move.l  d0,infohd
               beq.s   noinfowin
               move.l  d0,a0
               move.l  50(a0),a0
               lea     infotxt(pc),a1
               moveq   #3,d0
               moveq   #12,d1
               jsr     PrintIText(a6)
               move.l  infohd(pc),a0
               move.l  50(a0),a0
               lea     oimage(pc),a1
               move.l  #130,d0
               moveq   #66,d1
               jsr     DrawImage(a6)

infowait:      move.l  infohd(pc),a0
               move.l  86(a0),a0
               move.l  a0,a5                   ;UserPort
               move.l  execbase,a6
               jsr     WaitPort(a6)
               move.l  a5,a0
               jsr     GetMsg(a6)
               tst.l   d0                      ;zur Sicherheit
               beq.s   infowait
               move.l  d0,a1
               move.l  20(a1),d7               ;IDCMP
               jsr     ReplyMsg(a6)
               btst    #9,d7
               beq     infowait

               move.l  infohd(pc),a0
               move.l  intbase,a6
               jsr     CloseWindow(a6)
noinfowin:     bra     gameloop
;
exit:          move.l  windowhd(pc),a0
               move.l  intbase(pc),a6
               jsr     CloseWindow(a6)
nowindow:      move.l  gfxbase(pc),a1
               move.l  execbase,a6
               jsr     CloseLib(a6)
nogfx:         move.l  intbase(pc),a1
               move.l  execbase,a6
               jsr     CloseLib(a6)
noint:         move.l  dosbase(pc),a1
               move.l  execbase,a6
               jsr     CloseLib(a6)
nodos:         tst.w   cli
               bne.s   ex
               move.l  execbase,a6             ;Forbid(), damit die Wbench
               jsr     Forbid(a6)              ;kein UnLoadSeg() aufruft,
               move.l  message,a1              ;bevor wir fertig sind. Ohne
               jsr     ReplyMsg(a6)            ;ein Permit() vielleicht
ex:            moveq   #0,d0                   ;nicht die feine englische
               rts                             ;Art, aber im originalen
;                                              ;Astartup.asm wird es auch so
;                                              ;gemacht.
;+++ aktuellen Stand anzeigen
show:          move.l  rport(pc),a1
               moveq   #0,d0
               move.b  oben,d0
               move.l  gfxbase,a6
               jsr     SetAPen(a6)
               move.l  rport(pc),a1
               moveq   #64,d0
               moveq   #35,d1
               moveq   #81,d2
               moveq   #43,d3
               jsr     RectFill(a6)

               lea     map(pc),a5
               moveq   #6,d6
rows:          moveq   #6,d7
blocks:        move.l  rport(pc),a1
               move.l  d6,d1
               mulu    #7,d1
               add.l   d7,d1
               moveq   #0,d0
               move.b  (a5,d1),d0
               jsr     SetAPen(a6)
               move.l  rport(pc),a1
               move.l  d7,d0
               mulu    #20,d0
               addi.l  #4,d0
               move.l  d6,d1
               mulu    #10,d1
               addi.l  #45,d1
               move.l  d0,d2
               addi.l  #17,d2
               move.l  d1,d3
               addi.l  #8,d3
               jsr     RectFill(a6)
               dbra    d7,blocks
               dbra    d6,rows

               move.l  rport(pc),a1
               moveq   #0,d0
               move.b  unten,d0
               jsr     SetAPen(a6)
               move.l  rport(pc),a1
               moveq   #64,d0
               moveq   #115,d1
               moveq   #81,d2
               moveq   #123,d3
               jsr     RectFill(a6)

               move.w  anzmoves(pc),d0
               andi.w  #$000f,d0
               move.b  d0,mtxt+2
               move.w  anzmoves(pc),d0
               andi.w  #$00f0,d0
               lsr.w   #4,d0
               move.b  d0,mtxt+1
               move.b  anzmoves(pc),mtxt
               addi.b  #48,mtxt
               addi.b  #48,mtxt+1
               addi.b  #48,mtxt+2
               move.l  rport(pc),a0
               lea     movestxt(pc),a1
               moveq   #111,d0
               moveq   #34,d1
               move.l  intbase(pc),a6
               jsr     PrintIText(a6)
               rts
;
;+++ rechtsherum drehen, Tiefe in d0
rechts:        bsr     addmove
               lea     map(pc),a0
               move.l  d0,d1
               mulu    #7,d1
               addi.l  #6,d1
               sub.l   d0,d1
               move.b  (a0,d1),d6      ;d6->hilfe1

               moveq   #6,d2
               sub.l   d0,d2
               move.l  d0,d3
               mulu    #7,d3
rloop1:        move.l  d3,d1
               add.l   d2,d1
               move.b  -1(a0,d1),(a0,d1)
               subq.l  #1,d2
               cmp.l   d0,d2
               bhi.s   rloop1

               moveq   #6,d1
               sub.l   d0,d1
               mulu    #7,d1
               add.l   d0,d1           ;d1=d0+7*(6-d0)
               move.b  (a0,d1),d7      ;d7->hilfe2

               move.l  d0,d2
               moveq   #6,d3
               sub.l   d0,d3
               mulu    #7,d3
               moveq   #6,d4
               sub.l   d0,d4
rloop2:        move.l  d3,d1
               add.l   d2,d1
               move.b  1(a0,d1),(a0,d1)
               addq.l  #1,d2
               cmp.l   d4,d2
               blo.s   rloop2

               moveq   #6,d2
               sub.l   d0,d2
               move.l  d2,d3
               move.l  d0,d4
               addq.l  #1,d4
rloop3:        move.l  d2,d1
               mulu    #7,d1
               add.l   d3,d1
               move.b  -7(a0,d1),(a0,d1)
               subq.l  #1,d2
               cmp.l   d4,d2
               bhi.s   rloop3

               move.l  d0,d1
               addq.l  #1,d1
               mulu    #7,d1
               add.l   #6,d1
               sub.l   d0,d1
               move.b  d6,(a0,d1)

               move.l  d0,d2
               moveq   #4,d4
               sub.l   d0,d4
rloop4:        move.l  d2,d1
               mulu    #7,d1
               add.l   d0,d1
               move.b  7(a0,d1),(a0,d1)
               addq.l  #1,d2
               cmp.l   d4,d2
               bls.s   rloop4

               moveq   #5,d1
               sub.l   d0,d1
               mulu    #7,d1
               add.l   d0,d1
               move.b  d7,(a0,d1)
               rts
;
;+++ linksherum drehen, Tiefe in d0
links:         bsr     addmove
               lea     map(pc),a0
               move.l  d0,d1
               mulu    #7,d1
               add.l   d0,d1
               move.b  (a0,d1),d6      ;hilfe1

               move.l  d0,d2
               moveq   #5,d4
               sub.l   d0,d4
lloop1:        move.l  d0,d1
               mulu    #7,d1
               add.l   d2,d1
               move.b  1(a0,d1),(a0,d1)
               addq.l  #1,d2
               cmp.l   d4,d2
               bls.s   lloop1

               moveq   #6,d1
               sub.l   d0,d1
               mulu    #7,d1
               add.l   #6,d1
               sub.l   d0,d1
               move.b  (a0,d1),d7      ;hilfe2

               moveq   #6,d2
               sub.l   d0,d2
               move.l  d2,d3
               mulu    #7,d3
lloop2:        move.l  d3,d1
               add.l   d2,d1
               move.b  -1(a0,d1),(a0,d1)
               subq.l  #1,d2
               cmp.l   d0,d2
               bhi.s   lloop2

               move.l  d0,d2
               moveq   #4,d4
               sub.l   d0,d4
               moveq   #6,d3
               sub.l   d0,d3
lloop3:        move.l  d2,d1
               mulu    #7,d1
               add.l   d3,d1
               move.b  7(a0,d1),(a0,d1)
               addq.l  #1,d2
               cmp.l   d4,d2
               bls.s   lloop3

               moveq   #5,d1
               sub.l   d0,d1
               mulu    #7,d1
               addi.l  #6,d1
               sub.l   d0,d1
               move.b  d7,(a0,d1)

               moveq   #6,d2
               sub.l   d0,d2
               move.l  d0,d4
               addq.l  #1,d4
lloop4:        move.l  d2,d1
               mulu    #7,d1
               add.l   d0,d1
               move.b  -7(a0,d1),(a0,d1)
               subq.l  #1,d2
               cmp.l   d4,d2
               bhi.s   lloop4

               move.l  d0,d1
               mulu    #8,d1
               addi.l  #7,d1
               move.b  d6,(a0,d1)

               rts
;
;+++ mittlere Spalte hoch
hoch:          tst.b   oben
               bne.s   exoben
               bsr.s   addmove
               lea     map(pc),a0
               move.b  3(a0),oben
               moveq   #3,d2
hloop:         move.b  7(a0,d2),(a0,d2)
               addi.l  #7,d2
               cmpi.l  #45,d2
               blo.s   hloop
               move.b  unten,45(a0)
               clr.b   unten
exoben:        rts
;
;+++ mittlere Spalte runter
runter:        tst.b   unten
               bne.s   exunten
               bsr.s   addmove
               lea     map(pc),a0
               move.b  45(a0),unten
               moveq   #45,d2
rloop:         move.b  -7(a0,d2),(a0,d2)
               subi.l  #7,d2
               cmpi.l  #3,d2
               bhi.s   rloop
               move.b  oben,3(a0)
               clr.b   oben
exunten:       rts
;
;Anzahl der Züge erhöhen, BCD-Addition
addmove:       sub.l   d1,d1                   ;X-Flag clear
               moveq   #1,d2
               move.b  anzmoves+1,d1
               abcd    d2,d1
               move.b  d1,anzmoves+1
               moveq   #0,d2
               move.b  anzmoves,d1
               abcd    d2,d1
               move.b  d1,anzmoves
               rts
;
message:       dc.l    0
cli:           dc.w    0
dosbase:       dc.l    0
intbase:       dc.l    0
gfxbase:       dc.l    0
windowhd:      dc.l    0
rport:         dc.l    0
anzmoves:      dc.w    0
infohd:        dc.l    0
;
movestxt:      dc.b    1,0                     ;cols
               dc.b    1                       ;DrMd
               dc.b    0
               dc.w    0,0                     ;pos
               dc.l    0                       ;font
               dc.l    mtxt
               dc.l    0
mtxt:          dc.b    "000",0
;
stmap:         dc.b    1,1,1,1,1,1,1
               dc.b    1,2,2,2,2,2,1
               dc.b    1,2,3,3,3,2,1
               dc.b    1,2,3,0,3,2,1
               dc.b    1,2,3,3,3,2,1
               dc.b    1,2,2,2,2,2,1
               dc.b    1,1,1,1,1,1,1
;
map:           blk.b   49
oben:          dc.b    0
unten:         dc.b    0
;
dosname:       dc.b    "dos.library",0
intname:       dc.b    "intuition.library",0
gfxname:       dc.b    "graphics.library",0
wname:         dc.b    "RINGS",0
infwname:      dc.b    "RINGS-Info",0
;
               even
winstruct:     dc.w    0                               ;xpos
               dc.w    0                               ;ypos
               dc.w    146                             ;Breite
               dc.w    126                             ;Höhe
               dc.b    -1                              ;detail_pen
               dc.b    -1                              ;block_pen
               dc.l    %00000000001001000000           ;IDCMP
               dc.l    %0000000100001000000001110      ;flags
               dc.l    gadget1                         ;gadgets
               dc.l    0                               ;checkmark
               dc.l    wname
               dc.l    0                               ;screen
               dc.l    0                               ;bitmap
               dc.w    10                              ;minBreite
               dc.w    10                              ;minHöhe
               dc.w    600                             ;maxBreite
               dc.w    220                             ;maxHöhe
               dc.w    1                               ;screentype
;
gadget1:       dc.l    gadget2                         ;next
               dc.w    4,11                            ;pos
               dc.w    25,10                           ;hitbox
               dc.w    4                               ;flags
               dc.w    1                               ;actiflags
               dc.w    1                               ;Typ
               dc.l    leftimage
               dc.l    0                               ;sec
               dc.l    0                               ;text
               dc.l    0                               ;exclude
               dc.l    0                               ;specialinfo
               dc.w    1                               ;ID
               dc.l    0                               ;userdata
;
gadget2:       dc.l    gadget3                         ;next
               dc.w    31,11                           ;pos
               dc.w    25,10                           ;hitbox
               dc.w    4                               ;flags
               dc.w    1                               ;actiflags
               dc.w    1                               ;Typ
               dc.l    rightimage
               dc.l    0                               ;sec
               dc.l    0                               ;text
               dc.l    0                               ;exclude
               dc.l    0                               ;specialinfo
               dc.w    2                               ;ID
               dc.l    0                               ;userdata
;
gadget3:       dc.l    gadget4                         ;next
               dc.w    4,22                            ;pos
               dc.w    25,10                           ;hitbox
               dc.w    4                               ;flags
               dc.w    1                               ;actiflags
               dc.w    1                               ;Typ
               dc.l    leftimage
               dc.l    0                               ;sec
               dc.l    0                               ;text
               dc.l    0                               ;exclude
               dc.l    0                               ;specialinfo
               dc.w    3                               ;ID
               dc.l    0                               ;userdata
;
gadget4:       dc.l    gadget5                         ;next
               dc.w    31,22                           ;pos
               dc.w    25,10                           ;hitbox
               dc.w    4                               ;flags
               dc.w    1                               ;actiflags
               dc.w    1                               ;Typ
               dc.l    rightimage
               dc.l    0                               ;sec
               dc.l    0                               ;text
               dc.l    0                               ;exclude
               dc.l    0                               ;specialinfo
               dc.w    4                               ;ID
               dc.l    0                               ;userdata
;
gadget5:       dc.l    gadget6                         ;next
               dc.w    4,33                            ;pos
               dc.w    25,10                           ;hitbox
               dc.w    4                               ;flags
               dc.w    1                               ;actiflags
               dc.w    1                               ;Typ
               dc.l    leftimage
               dc.l    0                               ;sec
               dc.l    0                               ;text
               dc.l    0                               ;exclude
               dc.l    0                               ;specialinfo
               dc.w    5                               ;ID
               dc.l    0                               ;userdata
;
gadget6:       dc.l    gadget7                         ;next
               dc.w    31,33                           ;pos
               dc.w    25,10                           ;hitbox
               dc.w    4                               ;flags
               dc.w    1                               ;actiflags
               dc.w    1                               ;Typ
               dc.l    rightimage
               dc.l    0                               ;sec
               dc.l    0                               ;text
               dc.l    0                               ;exclude
               dc.l    0                               ;specialinfo
               dc.w    6                               ;ID
               dc.l    0                               ;userdata
;
gadget7:       dc.l    gadget8                         ;next
               dc.w    89,11                           ;pos
               dc.w    16,15                           ;hitbox
               dc.w    4                               ;flags
               dc.w    1                               ;actiflags
               dc.w    1                               ;Typ
               dc.l    upimage
               dc.l    0                               ;sec
               dc.l    0                               ;text
               dc.l    0                               ;exclude
               dc.l    0                               ;specialinfo
               dc.w    7                               ;ID
               dc.l    0                               ;userdata
;
gadget8:       dc.l    gadget9                         ;next
               dc.w    89,28                           ;pos
               dc.w    16,15                           ;hitbox
               dc.w    4                               ;flags
               dc.w    1                               ;actiflags
               dc.w    1                               ;Typ
               dc.l    downimage
               dc.l    0                               ;sec
               dc.l    0                               ;text
               dc.l    0                               ;exclude
               dc.l    0                               ;specialinfo
               dc.w    8                               ;ID
               dc.l    0                               ;userdata
;
gadget9:       dc.l    0                               ;next
               dc.w    112,16                          ;pos
               dc.w    24,12                           ;hitbox
               dc.w    4                               ;flags
               dc.w    1                               ;actiflags
               dc.w    1                               ;Typ
               dc.l    qimage
               dc.l    0                               ;sec
               dc.l    0                               ;text
               dc.l    0                               ;exclude
               dc.l    0                               ;specialinfo
               dc.w    9                               ;ID
               dc.l    0                               ;userdata
;
leftimage:     dc.w    0,0                             ;pos
               dc.w    25,10                           ;size
               dc.w    1                               ;planes
               dc.l    leftdata
               dc.b    1                               ;planepick
               dc.b    0                               ;planeonoff
               dc.l    0                               ;next
;
leftdata:      dc.l    %11111111111111111111111110000000
               dc.l    %10000000000000000000000010000000
               dc.l    %10000000011100000000000010000000
               dc.l    %10000001111100000000000010000000
               dc.l    %10001111111111111111100010000000
               dc.l    %10001111111111111111100010000000
               dc.l    %10000001111100000000000010000000
               dc.l    %10000000011100000000000010000000
               dc.l    %10000000000000000000000010000000
               dc.l    %11111111111111111111111110000000
;
rightimage:    dc.w    0,0                             ;pos
               dc.w    25,10                           ;size
               dc.w    1                               ;planes
               dc.l    rightdata
               dc.b    1                               ;planepick
               dc.b    0                               ;planeonoff
               dc.l    0                               ;next
;
rightdata:     dc.l    %11111111111111111111111110000000
               dc.l    %10000000000000000000000010000000
               dc.l    %10000000000001110000000010000000
               dc.l    %10000000000001111100000010000000
               dc.l    %10001111111111111111100010000000
               dc.l    %10001111111111111111100010000000
               dc.l    %10000000000001111100000010000000
               dc.l    %10000000000001110000000010000000
               dc.l    %10000000000000000000000010000000
               dc.l    %11111111111111111111111110000000
;
upimage:       dc.w    0,0                             ;pos
               dc.w    16,15                           ;size
               dc.w    1                               ;planes
               dc.l    updata
               dc.b    1                               ;planepick
               dc.b    0                               ;planeonoff
               dc.l    0                               ;next
;
updata:        dc.w    %1111111111111111
               dc.w    %1000000000000001
               dc.w    %1000000000000001
               dc.w    %1000000110000001
               dc.w    %1000001111000001
               dc.w    %1000011111100001
               dc.w    %1000111111110001
               dc.w    %1000000110000001
               dc.w    %1000000110000001
               dc.w    %1000000110000001
               dc.w    %1000000110000001
               dc.w    %1000000110000001
               dc.w    %1000000000000001
               dc.w    %1000000000000001
               dc.w    %1111111111111111
;
downimage:     dc.w    0,0                             ;pos
               dc.w    16,15                           ;size
               dc.w    1                               ;planes
               dc.l    downdata
               dc.b    1                               ;planepick
               dc.b    0                               ;planeonoff
               dc.l    0                               ;next
;
downdata:      dc.w    %1111111111111111
               dc.w    %1000000000000001
               dc.w    %1000000000000001
               dc.w    %1000000110000001
               dc.w    %1000000110000001
               dc.w    %1000000110000001
               dc.w    %1000000110000001
               dc.w    %1000000110000001
               dc.w    %1000111111110001
               dc.w    %1000011111100001
               dc.w    %1000001111000001
               dc.w    %1000000110000001
               dc.w    %1000000000000001
               dc.w    %1000000000000001
               dc.w    %1111111111111111

qimage:        dc.w    0,0                             ;pos
               dc.w    24,12                           ;size
               dc.w    1                               ;planes
               dc.l    qdata
               dc.b    1                               ;planepick
               dc.l    0                               ;next
               dc.b    0                               ;planeonoff
               dc.l    0                               ;next
;
qdata:         dc.l    %11111111111111111111111100000000
               dc.l    %10000000000000000000000100000000
               dc.l    %10000000111111100000000100000000
               dc.l    %10000011110000111000000100000000
               dc.l    %10000000000000111000000100000000
               dc.l    %10000000000011100000000100000000
               dc.l    %10000000000111000000000100000000
               dc.l    %10000000000000000000000100000000
               dc.l    %10000000000111000000000100000000
               dc.l    %10000000000111000000000100000000
               dc.l    %10000000000000000000000100000000
               dc.l    %11111111111111111111111100000000
;
infowindow:    dc.w    148                             ;xpos
               dc.w    0                               ;ypos
               dc.w    310                             ;Breite
               dc.w    126                             ;Höhe
               dc.b    -1                              ;detail_pen
               dc.b    -1                              ;block_pen
               dc.l    %00000000001000000000           ;IDCMP
               dc.l    %0000000100001000000001110      ;flags
               dc.l    0                               ;gadgets
               dc.l    0                               ;checkmark
               dc.l    infwname
               dc.l    0                               ;screen
               dc.l    0                               ;bitmap
               dc.w    10                              ;minBreite
               dc.w    10                              ;minHöhe
               dc.w    600                             ;maxBreite
               dc.w    200                             ;maxHöhe
               dc.w    1                               ;Custom-Screen
;
infotxt:       Intuitext <RINGS - Ein Public-Domain-Spiel>,3,3,inftxt1
inftxt1:       Intuitext <Versuchen Sie, durch Drehen der Ringe>,3,17,inftxt2
inftxt2:       Intuitext <und Verschieben der Mittelspalte,>,3,27,inftxt3
inftxt3:       Intuitext <folgende Ordnung zu erreichen:>,3,37,inftxt4
inftxt4:       Intuitext <Von Claus Brunzema>,3,77,inftxt5
inftxt5:       Intuitext <Gräfin-Theda-Str. 2>,33,87,inftxt6
inftxt6:       Intuitext <2970 Emden>,33,97

       even
oimage:        dc.w    0,0                             ;pos
               dc.w    28,14                           ;size
               dc.w    2                               ;planes
               dc.l    odata
               dc.b    3                               ;planepick
               dc.l    0                               ;next
               dc.b    0                               ;planeonoff
               dc.l    0                               ;next
;
odata:         dc.l    %11111111111111111111111111110000
               dc.l    %11111111111111111111111111110000
               dc.l    %11110000000000000000000011110000
               dc.l    %11110000000000000000000011110000
               dc.l    %11110000111111111111000011110000
               dc.l    %11110000111111111111000011110000
               dc.l    %11110000111100001111000011110000
               dc.l    %11110000111100001111000011110000
               dc.l    %11110000111111111111000011110000
               dc.l    %11110000111111111111000011110000
               dc.l    %11110000000000000000000011110000
               dc.l    %11110000000000000000000011110000
               dc.l    %11111111111111111111111111110000
               dc.l    %11111111111111111111111111110000

               dc.l    %00000000000000000000000000000000
               dc.l    %00000000000000000000000000000000
               dc.l    %00001111111111111111111100000000
               dc.l    %00001111111111111111111100000000
               dc.l    %00001111111111111111111100000000
               dc.l    %00001111111111111111111100000000
               dc.l    %00001111111100001111111100000000
               dc.l    %00001111111100001111111100000000
               dc.l    %00001111111111111111111100000000
               dc.l    %00001111111111111111111100000000
               dc.l    %00001111111111111111111100000000
               dc.l    %00001111111111111111111100000000
               dc.l    %00000000000000000000000000000000
               dc.l    %00000000000000000000000000000000
;
fertigtext:    Intuitext <Phantastisch !>

       end

