changeset 2945:582b5b7232c0

pacos9: Rename assembler files to .as and port makefile to lwtools And build pacos9 by default again. Nowadays .a files are library archive files. According to rules.mak, as. files are to be built as object files for later linking with lwlink, similar to old RMA/RLINK.
author Tormod Volden <debian.tormod@gmail.com>
date Sat, 08 Feb 2014 01:03:26 +0100
parents ab3f9eb5fc5c
children 06508da42c98
files 3rdparty/packages/pacos9/board90.a 3rdparty/packages/pacos9/board90.as 3rdparty/packages/pacos9/caged90.a 3rdparty/packages/pacos9/caged90.as 3rdparty/packages/pacos9/check90.a 3rdparty/packages/pacos9/check90.as 3rdparty/packages/pacos9/ghosts90.a 3rdparty/packages/pacos9/ghosts90.as 3rdparty/packages/pacos9/main90.a 3rdparty/packages/pacos9/main90.as 3rdparty/packages/pacos9/makefile 3rdparty/packages/pacos9/movpac90.a 3rdparty/packages/pacos9/movpac90.as 3rdparty/packages/pacos9/score90.a 3rdparty/packages/pacos9/score90.as 3rdparty/packages/pacos9/scrns90.a 3rdparty/packages/pacos9/scrns90.as 3rdparty/packages/pacos9/setup90.a 3rdparty/packages/pacos9/setup90.as
diffstat 19 files changed, 5852 insertions(+), 5854 deletions(-) [+]
line wrap: on
line diff
--- a/3rdparty/packages/pacos9/board90.a	Mon Jan 27 23:49:14 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1248 +0,0 @@
-
-
-         NAM    BOARD
-         TTL    Routine to draw playing board
-
-*     Program segment to be compiled using Level II RMA
-*          This is not a mainline program segment
-*                 Written by Larry Olson
-
-         IFP1
-*         use    /h0/defs/os9defs.a
-         ENDc
-
-STACK    EQU    100
-
-         PSECT    BOARD,0,0,0,STACK,BOARDC
- 
-         VSECT
-
-*   Local variables
-
-XTEMP    RMB      2
-
-         RMB      STACK
-
-
-         ENDSECT
-
-
-*     These are the FCB's for board #1
-
-B1STRT   fcb    $1b,$32,1
-         fcb    $1b,$40,0,36,0,83,$1b,$46,0,36,0,8
-         fcb    $1b,$46,2,88,0,8,$1b,$46,2,88,0,83
-         fcb    $1b,$46,2,18,0,83,$1b,$46,2,18,0,69
-         fcb    $1b,$46,2,82,0,69,$1b,$46,2,82,0,11
-         fcb    $1b,$46,1,106,0,11,$1b,$46,1,106,0,29
-         fcb    $1b,$46,1,18,0,29,$1b,$46,1,18,0,11
-         fcb    $1b,$46,0,42,0,11,$1b,$46,0,42,0,69
-         fcb    $1b,$46,0,106,0,69,$1b,$46,0,106,0,83
-         fcb    $1b,$46,0,36,0,83
-
-         fcb    $1b,$40,0,36,0,96,$1b,$46,0,36,0,180
-         fcb    $1b,$46,2,88,0,180,$1b,$46,2,88,0,96
-         fcb    $1b,$46,2,18,0,96,$1b,$46,2,18,0,110
-         fcb    $1b,$46,2,82,0,110,$1b,$46,2,82,0,177
-         fcb    $1b,$46,0,42,0,177,$1b,$46,0,42,0,110
-         fcb    $1b,$46,0,106,0,110,$1b,$46,0,106,0,96
-         fcb    $1b,$46,0,36,0,96
-
-B11      fcb    $1b,$40,0,66,0,24,$1b,$48,0,138,0,38
-
-B12      fcb    $1b,$40,0,162,0,24,$1b,$48,0,250,0,29
-
-B14      fcb    $1b,$40,1,130,0,24,$1b,$48,1,218,0,29
-
-B15      fcb    $1b,$40,1,242,0,24,$1b,$48,2,58,0,38
-
-B16      fcb    $1b,$40,0,66,0,51,$1b,$48,0,138,0,56
-
-B17      fcb    $1b,$40,0,162,0,42,$1b,$46,0,202,0,42
-         fcb    $1b,$46,0,202,0,60,$1b,$46,0,250,0,60
-         fcb    $1b,$46,0,250,0,65,$1b,$46,0,202,0,65
-         fcb    $1b,$46,0,202,0,83,$1b,$46,0,130,0,83
-         fcb    $1b,$46,0,130,0,69,$1b,$46,0,162,0,69
-         fcb    $1b,$46,0,162,0,42
-
-B18      fcb    $1b,$40,0,226,0,42,$1b,$46,1,154,0,42
-         fcb    $1b,$46,1,154,0,47,$1b,$46,1,106,0,47
-         fcb    $1b,$46,1,106,0,65,$1b,$46,1,18,0,65
-         fcb    $1b,$46,1,18,0,47,$1b,$46,0,226,0,47
-         fcb    $1b,$46,0,226,0,42
-
-B19      fcb    $1b,$40,1,178,0,42,$1b,$46,1,218,0,42
-         fcb    $1b,$46,1,218,0,69,$1b,$46,1,250,0,69
-         fcb    $1b,$46,1,250,0,83,$1b,$46,1,178,0,83
-         fcb    $1b,$46,1,178,0,65,$1b,$46,1,130,0,65
-         fcb    $1b,$46,1,130,0,60,$1b,$46,1,178,0,60
-         fcb    $1b,$46,1,178,0,42
-
-B110     fcb    $1b,$40,1,242,0,51,$1b,$48,2,58,0,56
-
-B112     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
-
-B115     fcb    $1b,$40,0,130,0,96,$1b,$48,0,202,0,110
-
-B116     fcb    $1b,$40,1,178,0,96,$1b,$48,1,250,0,110
-
-B118     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
-         fcb    $1b,$46,0,138,0,128,$1b,$46,0,90,0,128
-         fcb    $1b,$46,0,90,0,146,$1b,$46,0,66,0,146
-         fcb    $1b,$46,0,66,0,123
-
-B119     fcb    $1b,$40,0,162,0,123,$1b,$48,0,250,0,128
-
-B120     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
-         fcb    $1b,$46,1,154,0,110,$1b,$46,1,106,0,110
-         fcb    $1b,$46,1,106,0,128,$1b,$46,1,18,0,128
-         fcb    $1b,$46,1,18,0,110,$1b,$46,0,226,0,110
-         fcb    $1b,$46,0,226,0,105
-
-B121     fcb    $1b,$40,1,130,0,123,$1b,$48,1,218,0,128
-
-B122     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
-         fcb    $1b,$46,2,58,0,146,$1b,$46,2,34,0,146
-         fcb    $1b,$46,2,34,0,128,$1b,$46,1,242,0,128
-         fcb    $1b,$46,1,242,0,123
-
-B123     fcb    $1b,$40,0,66,0,159,$1b,$46,0,114,0,159
-         fcb    $1b,$46,0,114,0,141,$1b,$46,0,202,0,141
-         fcb    $1b,$46,0,202,0,159,$1b,$46,0,250,0,159
-         fcb    $1b,$46,0,250,0,164,$1b,$46,0,66,0,164
-         fcb    $1b,$46,0,66,0,159
-
-B124     fcb    $1b,$40,0,226,0,141,$1b,$46,1,154,0,141
-         fcb    $1b,$46,1,154,0,146,$1b,$46,1,106,0,146
-         fcb    $1b,$46,1,106,0,164,$1b,$46,1,18,0,164
-         fcb    $1b,$46,1,18,0,146,$1b,$46,0,226,0,146
-         fcb    $1b,$46,0,226,0,141
-
-B125     fcb    $1b,$40,1,178,0,141,$1b,$46,2,10,0,141
-         fcb    $1b,$46,2,10,0,159,$1b,$46,2,58,0,159
-         fcb    $1b,$46,2,58,0,164,$1b,$46,1,130,0,164
-         fcb    $1b,$46,1,130,0,159,$1b,$46,1,178,0,159
-         fcb    $1b,$46,1,178,0,141
-
-B1END    equ    *-B1STRT
-
-*    (board #2)
-B2STRT   fcb    $1b,$32,1
-         fcb    $1b,$40,1,42,0,8,$1b,$46,0,36,0,8
-         fcb    $1b,$46,0,36,0,180,$1b,$46,1,58,0,180
-         fcb    $1b,$46,1,58,0,177,$1b,$46,0,42,0,177
-         fcb    $1b,$46,0,42,0,146,$1b,$46,0,74,0,146
-         fcb    $1b,$46,0,74,0,141,$1b,$46,0,42,0,141
-         fcb    $1b,$46,0,42,0,11,$1b,$46,0,162,0,11
-         fcb    $1b,$46,0,162,0,20,$1b,$46,1,42,0,20
-         fcb    $1b,$46,1,42,0,8
-
-         fcb    $1b,$40,1,66,0,8,$1b,$46,2,88,0,8
-         fcb    $1b,$46,2,88,0,180,$1b,$46,1,82,0,180
-         fcb    $1b,$46,1,82,0,177,$1b,$46,2,82,0,177
-         fcb    $1b,$46,2,82,0,146,$1b,$46,2,50,0,146
-         fcb    $1b,$46,2,50,0,141,$1b,$46,2,82,0,141
-         fcb    $1b,$46,2,82,0,11,$1b,$46,1,218,0,11
-         fcb    $1b,$46,1,218,0,20,$1b,$46,1,66,0,20
-         fcb    $1b,$46,1,66,0,8
-
-B21      fcb    $1b,$40,0,66,0,24,$1b,$48,0,138,0,29
-
-B22      fcb    $1b,$40,0,66,0,42,$1b,$48,0,138,0,47
-
-B23      fcb    $1b,$40,0,66,0,60,$1b,$46,0,162,0,60
-         fcb    $1b,$46,0,162,0,33,$1b,$46,0,202,0,33
-         fcb    $1b,$46,0,202,0,60,$1b,$46,1,26,0,60
-         fcb    $1b,$46,1,26,0,65,$1b,$46,0,202,0,65
-         fcb    $1b,$46,0,202,0,83,$1b,$46,0,162,0,83
-         fcb    $1b,$46,0,162,0,65,$1b,$46,0,66,0,65
-         fcb    $1b,$46,0,66,0,60
-
-B24      fcb    $1b,$40,0,226,0,33,$1b,$46,1,154,0,33
-         fcb    $1b,$46,1,154,0,47,$1b,$46,1,74,0,47
-         fcb    $1b,$46,1,74,0,65,$1b,$46,1,50,0,65
-         fcb    $1b,$46,1,50,0,47,$1b,$46,0,226,0,47
-         fcb    $1b,$46,0,226,0,33
-
-B25      fcb    $1b,$40,1,98,0,60,$1b,$46,1,178,0,60
-         fcb    $1b,$46,1,178,0,33,$1b,$46,1,218,0,33
-         fcb    $1b,$46,1,218,0,60,$1b,$46,2,58,0,60
-         fcb    $1b,$46,2,58,0,65,$1b,$46,1,218,0,65
-         fcb    $1b,$46,1,218,0,83,$1b,$46,1,178,0,83
-         fcb    $1b,$46,1,178,0,65,$1b,$46,1,98,0,65
-         fcb    $1b,$46,1,98,0,60
-
-B26      fcb    $1b,$40,1,242,0,24,$1b,$48,2,58,0,29
-
-B27      fcb    $1b,$40,1,242,0,42,$1b,$48,2,58,0,47
-
-B28      fcb    $1b,$40,0,66,0,78,$1b,$48,0,90,0,110
-
-B29      fcb    $1b,$40,0,114,0,78,$1b,$48,0,138,0,110
-
-B210     fcb    $1b,$40,0,162,0,96,$1b,$48,0,202,0,110
-
-B211     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
-
-B212     fcb    $1b,$40,1,178,0,96,$1b,$48,1,218,0,110
-
-B213     fcb    $1b,$40,1,242,0,78,$1b,$48,2,10,0,110
-
-B214     fcb    $1b,$40,2,34,0,78,$1b,$48,2,58,0,110
-
-B215     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
-         fcb    $1b,$46,0,138,0,146,$1b,$46,0,98,0,146
-         fcb    $1b,$46,0,98,0,128,$1b,$46,0,66,0,128
-         fcb    $1b,$46,0,66,0,123
-
-B216     fcb    $1b,$40,0,162,0,123,$1b,$48,1,26,0,128
-
-B217     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
-         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
-         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
-         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
-         fcb    $1b,$46,0,226,0,105
-
-B218     fcb    $1b,$40,1,98,0,123,$1b,$48,1,218,0,128
-
-B219     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
-         fcb    $1b,$46,2,58,0,128,$1b,$46,2,26,0,128
-         fcb    $1b,$46,2,26,0,146,$1b,$46,1,242,0,146
-         fcb    $1b,$46,1,242,0,123
-
-B220     fcb    $1b,$40,0,66,0,159,$1b,$46,0,162,0,159
-         fcb    $1b,$46,0,162,0,141,$1b,$46,0,202,0,141
-         fcb    $1b,$46,0,202,0,159,$1b,$46,1,58,0,159
-         fcb    $1b,$46,1,58,0,164,$1b,$46,0,66,0,164
-         fcb    $1b,$46,0,66,0,159
-
-B221     fcb    $1b,$40,0,226,0,141,$1b,$48,1,154,0,146
-
-B222     fcb    $1b,$40,1,82,0,159,$1b,$46,1,178,0,159
-         fcb    $1b,$46,1,178,0,141,$1b,$46,1,218,0,141
-         fcb    $1b,$46,1,218,0,159,$1b,$46,2,58,0,159
-         fcb    $1b,$46,2,58,0,164,$1b,$46,1,82,0,164
-         fcb    $1b,$46,1,82,0,159
-
-B2END    equ    *-B2STRT
-
-
-*     These draw commands for borad #3
-
-B3STRT   fcb    $1b,$32,1              *  TOPBRD
-         fcb    $1b,$40,0,36,0,83,$1b,$46,0,36,0,80
-         fcb    $1b,$46,0,132,0,80,$1b,$46,0,132,0,72
-         fcb    $1b,$46,0,36,0,72,$1b,$46,0,36,0,8
-         fcb    $1b,$46,2,89,0,8,$1b,$46,2,89,0,72
-         fcb    $1b,$46,1,248,0,72,$1b,$46,1,248,0,80
-         fcb    $1b,$46,2,89,0,80,$1b,$46,2,89,0,83
-         fcb    $1b,$46,1,242,0,83,$1b,$46,1,242,0,69
-         fcb    $1b,$46,2,83,0,69,$1b,$46,2,83,0,11
-         fcb    $1b,$46,1,74,0,11,$1b,$46,1,74,0,29
-         fcb    $1b,$46,1,50,0,29,$1b,$46,1,50,0,11
-         fcb    $1b,$46,0,42,0,11,$1b,$46,0,42,0,69
-         fcb    $1b,$46,0,138,0,69,$1b,$46,0,138,0,83
-         fcb    $1b,$46,0,36,0,83
-*
-         fcb    $1b,$40,0,36,0,96,$1b,$46,0,138,0,96
-         fcb    $1b,$46,0,138,0,110,$1b,$46,0,42,0,110
-         fcb    $1b,$46,0,42,0,141,$1b,$46,0,74,0,141
-         fcb    $1b,$46,0,74,0,146,$1b,$46,0,42,0,146
-         fcb    $1b,$46,0,42,0,177,$1b,$46,2,83,0,177
-         fcb    $1b,$46,2,83,0,146,$1b,$46,2,50,0,146
-         fcb    $1b,$46,2,50,0,141,$1b,$46,2,83,0,141
-         fcb    $1b,$46,2,83,0,110,$1b,$46,1,242,0,110
-         fcb    $1b,$46,1,242,0,96,$1b,$46,2,89,0,96
-         fcb    $1b,$46,2,89,0,99,$1b,$46,1,248,0,99
-         fcb    $1b,$46,1,248,0,107,$1b,$46,2,89,0,107
-         fcb    $1b,$46,2,89,0,180,$1b,$46,0,36,0,180
-         fcb    $1b,$46,0,36,0,107,$1b,$46,0,132,0,107
-         fcb    $1b,$46,0,132,0,99,$1b,$46,0,36,0,99
-         fcb    $1b,$46,0,36,0,96
-
-B31      fcb    $1b,$40,0,66,0,24,$1b,$48,0,138,0,38
-
-B32      fcb    $1b,$40,0,162,0,24,$1b,$48,1,26,0,29
-
-B33      fcb    $1b,$40,1,98,0,24,$1b,$48,1,218,0,29
-
-B34      fcb    $1b,$40,1,242,0,24,$1b,$48,2,58,0,38
-
-B35      fcb    $1b,$40,0,66,0,51,$1b,$48,0,138,0,56
-
-B36      fcb    $1b,$40,0,162,0,42,$1b,$46,0,202,0,42
-         fcb    $1b,$46,0,202,0,60,$1b,$46,1,26,0,60
-         fcb    $1b,$46,1,26,0,65,$1b,$46,0,202,0,65
-         fcb    $1b,$46,0,202,0,83,$1b,$46,0,162,0,83
-         fcb    $1b,$46,0,162,0,42
-
-B37      fcb    $1b,$40,0,226,0,42,$1b,$46,1,154,0,42
-         fcb    $1b,$46,1,154,0,47,$1b,$46,1,74,0,47
-         fcb    $1b,$46,1,74,0,65,$1b,$46,1,50,0,65
-         fcb    $1b,$46,1,50,0,47,$1b,$46,0,226,0,47
-         fcb    $1b,$46,0,226,0,42
-
-B38      fcb    $1b,$40,1,98,0,60,$1b,$46,1,178,0,60
-         fcb    $1b,$46,1,178,0,42,$1b,$46,1,218,0,42
-         fcb    $1b,$46,1,218,0,83,$1b,$46,1,178,0,83
-         fcb    $1b,$46,1,178,0,65,$1b,$46,1,98,0,65
-         fcb    $1b,$46,1,98,0,60
-
-B39      fcb    $1b,$40,1,242,0,51,$1b,$48,2,58,0,56
-
-B310     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
-
-B311     fcb    $1b,$40,0,162,0,96,$1b,$48,0,202,0,110
-
-B312     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
-         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
-         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
-         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
-         fcb    $1b,$46,0,226,0,105
-
-B313     fcb    $1b,$40,1,178,0,96,$1b,$48,1,218,0,110
-
-B314     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
-         fcb    $1b,$46,0,138,0,146,$1b,$46,0,98,0,146
-         fcb    $1b,$46,0,98,0,128,$1b,$46,0,66,0,128
-         fcb    $1b,$46,0,66,0,123
-
-B315     fcb    $1b,$40,0,162,0,123,$1b,$48,1,26,0,128
-
-B316     fcb    $1b,$40,1,98,0,123,$1b,$48,1,218,0,128
-
-B317     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
-         fcb    $1b,$46,2,58,0,128,$1b,$46,2,26,0,128
-         fcb    $1b,$46,2,26,0,146,$1b,$46,1,242,0,146
-         fcb    $1b,$46,1,242,0,123
-
-B318     fcb    $1b,$40,0,66,0,159,$1b,$46,0,162,0,159
-         fcb    $1b,$46,0,162,0,141,$1b,$46,0,202,0,141
-         fcb    $1b,$46,0,202,0,159,$1b,$46,1,26,0,159
-         fcb    $1b,$46,1,26,0,164,$1b,$46,0,66,0,164
-         fcb    $1b,$46,0,66,0,159
-
-B319     fcb    $1b,$40,0,226,0,141,$1b,$46,1,154,0,141
-         fcb    $1b,$46,1,154,0,146,$1b,$46,1,74,0,146
-         fcb    $1b,$46,1,74,0,164,$1b,$46,1,50,0,164
-         fcb    $1b,$46,1,50,0,146,$1b,$46,0,226,0,146
-         fcb    $1b,$46,0,226,0,141
-
-B320     fcb    $1b,$40,1,98,0,159,$1b,$46,1,178,0,159
-         fcb    $1b,$46,1,178,0,141,$1b,$46,1,218,0,141
-         fcb    $1b,$46,1,218,0,159,$1b,$46,2,58,0,159
-         fcb    $1b,$46,2,58,0,164,$1b,$46,1,98,0,164
-         fcb    $1b,$46,1,98,0,159
-
-B3END    equ    *-B3STRT
-
-
-*       These are the FCB's for board #4
-
-B4STRT   fcb    $1b,$32,1
-         fcb    $1b,$40,1,42,0,8,$1b,$46,0,36,0,8
-         fcb    $1b,$46,0,36,0,180,$1b,$46,1,58,0,180
-         fcb    $1b,$46,1,58,0,177,$1b,$46,0,42,0,177
-         fcb    $1b,$46,0,42,0,146,$1b,$46,0,90,0,146
-         fcb    $1b,$46,0,90,0,141,$1b,$46,0,42,0,141
-         fcb    $1b,$46,0,42,0,110,$1b,$46,0,138,0,110
-         fcb    $1b,$46,0,138,0,105,$1b,$46,0,58,0,105
-         fcb    $1b,$46,0,58,0,74,$1b,$46,0,138,0,74
-         fcb    $1b,$46,0,138,0,69,$1b,$46,0,42,0,69
-         fcb    $1b,$46,0,42,0,11,$1b,$46,1,42,0,11
-         fcb    $1b,$46,1,42,0,8
-
-         fcb    $1b,$40,1,66,0,8,$1b,$46,2,88,0,8
-         fcb    $1b,$46,2,88,0,180,$1b,$46,1,82,0,180
-         fcb    $1b,$46,1,82,0,177,$1b,$46,2,82,0,177
-         fcb    $1b,$46,2,82,0,146,$1b,$46,2,34,0,146
-         fcb    $1b,$46,2,34,0,141,$1b,$46,2,82,0,141
-         fcb    $1b,$46,2,82,0,110,$1b,$46,1,242,0,110
-         fcb    $1b,$46,1,242,0,105,$1b,$46,2,66,0,105
-         fcb    $1b,$46,2,66,0,74,$1b,$46,1,242,0,74
-         fcb    $1b,$46,1,242,0,69,$1b,$46,2,82,0,69
-         fcb    $1b,$46,2,82,0,11,$1b,$46,1,66,0,11
-         fcb    $1b,$46,1,66,0,8
-
-
-B41      fcb    $1b,$40,0,66,0,24,$1b,$48,0,90,0,38
-
-B42      fcb    $1b,$40,0,114,0,24,$1b,$48,0,138,0,38
-
-B43      fcb    $1b,$40,0,162,0,24,$1b,$46,0,202,0,24
-         fcb    $1b,$46,0,202,0,42,$1b,$46,0,234,0,42
-         fcb    $1b,$46,0,234,0,47,$1b,$46,0,162,0,47
-         fcb    $1b,$46,0,162,0,24
-
-B44      fcb    $1b,$40,0,226,0,24,$1b,$48,1,42,0,29
-
-B45      fcb    $1b,$40,1,66,0,24,$1b,$48,1,154,0,29
-
-B46      fcb    $1b,$40,1,2,0,42,$1b,$48,1,122,0,47
-
-B47      fcb    $1b,$40,1,178,0,24,$1b,$46,1,218,0,24
-         fcb    $1b,$46,1,218,0,47,$1b,$46,1,146,0,47
-         fcb    $1b,$46,1,146,0,42,$1b,$46,1,178,0,42
-         fcb    $1b,$46,1,178,0,24
-
-B48      fcb    $1b,$40,1,242,0,24,$1b,$48,2,10,0,38
-
-B49      fcb    $1b,$40,2,34,0,24,$1b,$48,2,58,0,38
-
-B410     fcb    $1b,$40,0,66,0,51,$1b,$48,0,138,0,56
-
-B411     fcb    $1b,$40,1,242,0,51,$1b,$48,2,58,0,56
-
-B412     fcb    $1b,$40,0,162,0,60,$1b,$46,1,42,0,60
-         fcb    $1b,$46,1,42,0,65,$1b,$46,0,202,0,65
-         fcb    $1b,$46,0,202,0,83,$1b,$46,0,162,0,83
-         fcb    $1b,$46,0,162,0,60
-
-B413     fcb    $1b,$40,1,66,0,60,$1b,$46,1,218,0,60
-         fcb    $1b,$46,1,218,0,83,$1b,$46,1,178,0,83
-         fcb    $1b,$46,1,178,0,65,$1b,$46,1,66,0,65
-         fcb    $1b,$46,1,66,0,60
-
-B414     fcb    $1b,$40,0,82,0,87,$1b,$48,0,138,0,92
-
-B415     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
-
-B416     fcb    $1b,$40,1,242,0,87,$1b,$48,2,42,0,92
-
-B417     fcb    $1b,$40,0,162,0,96,$1b,$48,0,202,0,110
-
-B418     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
-         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
-         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
-         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
-         fcb    $1b,$46,0,226,0,105
-
-B419     fcb    $1b,$40,1,178,0,96,$1b,$48,1,218,0,110
-
-B420     fcb    $1b,$40,0,66,0,123,$1b,$48,0,138,0,128
-
-B421     fcb    $1b,$40,0,226,0,123,$1b,$48,1,26,0,128
-
-B422     fcb    $1b,$40,1,98,0,123,$1b,$48,1,154,0,128
-
-B423     fcb    $1b,$40,1,242,0,123,$1b,$48,2,58,0,128
-
-B424     fcb    $1b,$40,0,162,0,123,$1b,$46,0,202,0,123
-         fcb    $1b,$46,0,202,0,164,$1b,$46,0,162,0,164
-         fcb    $1b,$46,0,162,0,146,$1b,$46,0,114,0,146
-         fcb    $1b,$46,0,114,0,141,$1b,$46,0,162,0,141
-         fcb    $1b,$46,0,162,0,123
-
-B425     fcb    $1b,$40,1,178,0,123,$1b,$46,1,218,0,123
-         fcb    $1b,$46,1,218,0,141,$1b,$46,2,10,0,141
-         fcb    $1b,$46,2,10,0,146,$1b,$46,1,218,0,146
-         fcb    $1b,$46,1,218,0,164,$1b,$46,1,178,0,164
-         fcb    $1b,$46,1,178,0,123
-
-B426     fcb    $1b,$40,0,226,0,141,$1b,$48,1,154,0,146
-
-B427     fcb    $1b,$40,0,66,0,159,$1b,$48,0,138,0,164
-
-B428     fcb    $1b,$40,0,226,0,159,$1b,$48,1,58,0,164
-
-B429     fcb    $1b,$40,1,82,0,159,$1b,$48,1,154,0,164
-
-B430     fcb    $1b,$40,1,242,0,159,$1b,$48,2,58,0,164
-
-B4END    equ    *-B4STRT
-
-
-
-*    (board #5)
-B5STRT   fcb    $1b,$32,1
-         fcb    $1b,$40,0,36,0,83,$1b,$46,0,36,0,8
-         fcb    $1b,$46,2,88,0,8,$1b,$46,2,88,0,83
-         fcb    $1b,$46,1,242,0,83,$1b,$46,1,242,0,78
-         fcb    $1b,$46,2,82,0,78,$1b,$46,2,82,0,11
-
-         fcb    $1b,$46,1,74,0,11,$1b,$46,1,74,0,29
-         fcb    $1b,$46,1,50,0,29,$1b,$46,1,50,0,11
-
-         fcb    $1b,$46,0,42,0,11,$1b,$46,0,42,0,78
-         fcb    $1b,$46,0,138,0,78,$1b,$46,0,138,0,83
-         fcb    $1b,$46,0,36,0,83
-*   Bottom half of board
-         fcb    $1b,$40,0,36,0,96,$1b,$46,0,36,0,180
-         fcb    $1b,$46,2,88,0,180,$1b,$46,2,88,0,96
-         fcb    $1b,$46,2,34,0,96,$1b,$46,2,34,0,101
-         fcb    $1b,$46,2,82,0,101,$1b,$46,2,82,0,177
-
-         fcb    $1b,$46,1,74,0,177,$1b,$46,1,74,0,159
-
-         fcb    $1b,$46,1,50,0,159,$1b,$46,1,50,0,177
-         fcb    $1b,$46,0,42,0,177,$1b,$46,0,42,0,101
-         fcb    $1b,$46,0,90,0,101,$1b,$46,0,90,0,96
-         fcb    $1b,$46,0,36,0,96
-
-B51      fcb    $1b,$40,0,114,0,24,$1b,$48,1,26,0,29
-
-B52      fcb    $1b,$40,1,98,0,24,$1b,$48,2,10,0,29
-
-B53      fcb    $1b,$40,0,66,0,24,$1b,$46,0,90,0,24
-         fcb    $1b,$46,0,90,0,42,$1b,$46,0,138,0,42
-         fcb    $1b,$46,0,138,0,47,$1b,$46,0,90,0,47
-         fcb    $1b,$46,0,90,0,65,$1b,$46,0,66,0,65
-         fcb    $1b,$46,0,66,0,24
-
-B54      fcb    $1b,$40,0,114,0,60,$1b,$46,0,162,0,60
-         fcb    $1b,$46,0,162,0,42,$1b,$46,0,202,0,42
-         fcb    $1b,$46,0,202,0,60,$1b,$46,1,26,0,60
-         fcb    $1b,$46,1,26,0,65,$1b,$46,0,202,0,65
-         fcb    $1b,$46,0,202,0,74,$1b,$46,0,162,0,74
-         fcb    $1b,$46,0,162,0,65,$1b,$46,0,114,0,65
-         fcb    $1b,$46,0,114,0,60
-
-B55      fcb    $1b,$40,1,98,0,60,$1b,$46,1,178,0,60
-         fcb    $1b,$46,1,178,0,42,$1b,$46,1,218,0,42
-         fcb    $1b,$46,1,218,0,60,$1b,$46,2,10,0,60
-         fcb    $1b,$46,2,10,0,65,$1b,$46,1,218,0,65
-         fcb    $1b,$46,1,218,0,74,$1b,$46,1,178,0,74
-         fcb    $1b,$46,1,178,0,65,$1b,$46,1,98,0,65
-         fcb    $1b,$46,1,98,0,60
-
-B56      fcb    $1b,$40,1,242,0,42,$1b,$46,2,34,0,42
-         fcb    $1b,$46,2,34,0,24,$1b,$46,2,58,0,24
-         fcb    $1b,$46,2,58,0,65,$1b,$46,2,34,0,65
-         fcb    $1b,$46,2,34,0,47,$1b,$46,1,242,0,47
-         fcb    $1b,$46,1,242,0,42
-
-B57      fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
-
-B58      fcb    $1b,$40,0,114,0,96,$1b,$48,0,138,0,110
-
-
-B59      fcb    $1b,$40,0,66,0,114,$1b,$46,0,90,0,114
-         fcb    $1b,$46,0,90,0,141,$1b,$46,0,138,0,141
-         fcb    $1b,$46,0,138,0,146,$1b,$46,0,66,0,146
-         fcb    $1b,$46,0,66,0,114
-
-B510     fcb    $1b,$40,0,114,0,123,$1b,$46,0,162,0,123
-         fcb    $1b,$46,0,162,0,87,$1b,$46,0,202,0,87
-         fcb    $1b,$46,0,202,0,105,$1b,$46,0,250,0,105
-         fcb    $1b,$46,0,250,0,110,$1b,$46,0,202,0,110
-         fcb    $1b,$46,0,202,0,146,$1b,$46,0,162,0,146
-         fcb    $1b,$46,0,162,0,128,$1b,$46,0,114,0,128
-         fcb    $1b,$46,0,114,0,123
-
-B511     fcb    $1b,$40,0,226,0,123,$1b,$46,1,18,0,123
-         fcb    $1b,$46,1,18,0,105,$1b,$46,1,106,0,105
-         fcb    $1b,$46,1,106,0,123,$1b,$46,1,154,0,123
-         fcb    $1b,$46,1,154,0,128,$1b,$46,1,98,0,128
-         fcb    $1b,$46,1,98,0,110,$1b,$46,1,26,0,110
-         fcb    $1b,$46,1,26,0,128,$1b,$46,0,226,0,128
-         fcb    $1b,$46,0,226,0,123
-
-B512     fcb    $1b,$40,1,130,0,105,$1b,$46,1,178,0,105
-         fcb    $1b,$46,1,178,0,87,$1b,$46,1,218,0,87
-         fcb    $1b,$46,1,218,0,123,$1b,$46,2,10,0,123
-         fcb    $1b,$46,2,10,0,128,$1b,$46,1,218,0,128
-         fcb    $1b,$46,1,218,0,146,$1b,$46,1,178,0,146
-         fcb    $1b,$46,1,178,0,110,$1b,$46,1,130,0,110
-         fcb    $1b,$46,1,130,0,105
-
-
-B513     fcb    $1b,$40,1,242,0,96,$1b,$48,2,10,0,110
-
-B514     fcb    $1b,$40,1,242,0,141,$1b,$46,2,34,0,141
-         fcb    $1b,$46,2,34,0,114,$1b,$46,2,58,0,114
-         fcb    $1b,$46,2,58,0,146,$1b,$46,1,242,0,146
-         fcb    $1b,$46,1,242,0,141
-
-B515     fcb    $1b,$40,0,66,0,159,$1b,$48,1,26,0,164
-
-B516     fcb    $1b,$40,1,98,0,159,$1b,$48,2,58,0,164
-
-B517     fcb    $1b,$40,0,226,0,42,$1b,$46,1,154,0,42
-         fcb    $1b,$46,1,154,0,47,$1b,$46,1,74,0,47
-         fcb    $1b,$46,1,74,0,65,$1b,$46,1,50,0,65
-         fcb    $1b,$46,1,50,0,47,$1b,$46,0,226,0,47
-         fcb    $1b,$46,0,226,0,42
-
-B518     fcb    $1b,$40,0,226,0,141,$1b,$46,1,50,0,141
-         fcb    $1b,$46,1,50,0,123,$1b,$46,1,74,0,123
-         fcb    $1b,$46,1,74,0,141,$1b,$46,1,154,0,141
-         fcb    $1b,$46,1,154,0,146,$1b,$46,0,226,0,146
-         fcb    $1b,$46,0,226,0,141
-
-B5END    equ    *-B5STRT
-
-
-
-*     These fcb's are for board #6
-
-B6STRT   fcb    $1b,$32,1
-         fcb    $1b,$40,1,42,0,8,$1b,$46,0,36,0,8
-         fcb    $1b,$46,0,36,0,180,$1b,$46,1,58,0,180
-         fcb    $1b,$46,1,58,0,177,$1b,$46,0,42,0,177
-         fcb    $1b,$46,0,42,0,11,$1b,$46,1,42,0,11
-         fcb    $1b,$46,1,42,0,8
-
-         fcb    $1b,$40,1,66,0,8,$1b,$46,2,88,0,8
-         fcb    $1b,$46,2,88,0,180,$1b,$46,1,82,0,180
-         fcb    $1b,$46,1,82,0,177,$1b,$46,2,82,0,177
-         fcb    $1b,$46,2,82,0,11,$1b,$46,1,66,0,11
-         fcb    $1b,$46,1,66,0,8
-
-B61      fcb    $1b,$40,0,66,0,24,$1b,$46,0,138,0,24
-         fcb    $1b,$46,0,138,0,47,$1b,$46,0,114,0,47
-         fcb    $1b,$46,0,114,0,29,$1b,$46,0,66,0,29
-         fcb    $1b,$46,0,66,0,24
-
-B62      fcb    $1b,$40,0,162,0,24,$1b,$46,0,234,0,24
-         fcb    $1b,$46,0,234,0,29,$1b,$46,0,186,0,29
-         fcb    $1b,$46,0,186,0,47,$1b,$46,0,162,0,47
-         fcb    $1b,$46,0,162,0,24
-
-B63      fcb    $1b,$40,1,2,0,24,$1b,$48,1,42,0,29
-
-B64      fcb    $1b,$40,1,66,0,24,$1b,$48,1,122,0,29
-
-B65      fcb    $1b,$40,1,146,0,24,$1b,$46,1,218,0,24
-         fcb    $1b,$46,1,218,0,47,$1b,$46,1,194,0,47
-         fcb    $1b,$46,1,194,0,29,$1b,$46,1,146,0,29
-         fcb    $1b,$46,1,146,0,24
-
-B66      fcb    $1b,$40,1,242,0,24,$1b,$46,2,58,0,24
-         fcb    $1b,$46,2,58,0,29,$1b,$46,2,10,0,29
-         fcb    $1b,$46,2,10,0,47,$1b,$46,1,242,0,47
-         fcb    $1b,$46,1,242,0,24
-
-B67      fcb    $1b,$40,0,66,0,42,$1b,$46,0,90,0,42
-         fcb    $1b,$46,0,90,0,60,$1b,$46,0,138,0,60
-         fcb    $1b,$46,0,138,0,65,$1b,$46,0,66,0,65
-         fcb    $1b,$46,0,66,0,42
-
-B68      fcb    $1b,$40,0,210,0,42,$1b,$46,0,234,0,42
-         fcb    $1b,$46,0,234,0,65,$1b,$46,0,162,0,65
-         fcb    $1b,$46,0,162,0,60,$1b,$46,0,210,0,60
-         fcb    $1b,$46,0,210,0,42
-
-B69      fcb    $1b,$40,1,2,0,42,$1b,$46,1,122,0,42
-         fcb    $1b,$46,1,122,0,47,$1b,$46,1,74,0,47
-         fcb    $1b,$46,1,74,0,65,$1b,$46,1,50,0,65
-         fcb    $1b,$46,1,50,0,47,$1b,$46,1,2,0,47
-         fcb    $1b,$46,1,2,0,42
-
-B610     fcb    $1b,$40,1,2,0,60,$1b,$48,1,26,0,65
-
-B611     fcb    $1b,$40,1,98,0,60,$1b,$48,1,122,0,65
-
-B612     fcb    $1b,$40,1,146,0,42,$1b,$46,1,170,0,42
-         fcb    $1b,$46,1,170,0,60,$1b,$46,1,218,0,60
-         fcb    $1b,$46,1,218,0,65,$1b,$46,1,146,0,65
-         fcb    $1b,$46,1,146,0,42
-
-B613     fcb    $1b,$40,2,34,0,42,$1b,$46,2,58,0,42
-         fcb    $1b,$46,2,58,0,65,$1b,$46,1,242,0,65
-         fcb    $1b,$46,1,242,0,60,$1b,$46,2,34,0,60
-         fcb    $1b,$46,2,34,0,42
-
-B614     fcb    $1b,$40,0,66,0,78,$1b,$48,0,90,0,83
-
-B615     fcb    $1b,$40,0,114,0,78,$1b,$46,0,202,0,78
-         fcb    $1b,$46,0,202,0,83,$1b,$46,0,154,0,83
-         fcb    $1b,$46,0,154,0,92,$1b,$46,0,114,0,92
-         fcb    $1b,$46,0,114,0,78
-
-B616     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
-
-B617     fcb    $1b,$40,1,178,0,78,$1b,$46,2,10,0,78
-         fcb    $1b,$46,2,10,0,92,$1b,$46,1,226,0,92
-         fcb    $1b,$46,1,226,0,83,$1b,$46,1,178,0,83
-         fcb    $1b,$46,1,178,0,78
-
-B618     fcb    $1b,$40,2,34,0,78,$1b,$48,2,58,0,83
-
-B619     fcb    $1b,$40,0,66,0,96,$1b,$48,0,90,0,110
-
-B620     fcb    $1b,$40,0,114,0,105,$1b,$46,0,178,0,105
-         fcb    $1b,$46,0,178,0,96,$1b,$46,0,202,0,96
-         fcb    $1b,$46,0,202,0,110,$1b,$46,0,114,0,110
-         fcb    $1b,$46,0,114,0,105
-
-B621     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
-         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
-         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
-         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
-         fcb    $1b,$46,0,226,0,105
-
-B622     fcb    $1b,$40,1,178,0,96,$1b,$46,1,202,0,96
-         fcb    $1b,$46,1,202,0,105,$1b,$46,2,10,0,105
-         fcb    $1b,$46,2,10,0,110,$1b,$46,1,178,0,110
-         fcb    $1b,$46,1,178,0,96
-
-B623     fcb    $1b,$40,2,34,0,96,$1b,$48,2,58,0,110
-
-B624     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
-         fcb    $1b,$46,0,138,0,128,$1b,$46,0,90,0,128
-         fcb    $1b,$46,0,90,0,146,$1b,$46,0,66,0,146
-         fcb    $1b,$46,0,66,0,123
-
-B625     fcb    $1b,$40,0,162,0,123,$1b,$46,0,234,0,123
-         fcb    $1b,$46,0,234,0,146,$1b,$46,0,210,0,146
-         fcb    $1b,$46,0,210,0,128,$1b,$46,0,162,0,128
-         fcb    $1b,$46,0,162,0,123
-
-B626     fcb    $1b,$40,1,2,0,123,$1b,$48,1,26,0,128
-
-B627     fcb    $1b,$40,1,98,0,123,$1b,$48,1,122,0,128
-
-B628     fcb    $1b,$40,1,146,0,123,$1b,$46,1,218,0,123
-         fcb    $1b,$46,1,218,0,128,$1b,$46,1,170,0,128
-         fcb    $1b,$46,1,170,0,146,$1b,$46,1,146,0,146
-         fcb    $1b,$46,1,146,0,123
-
-B629     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
-         fcb    $1b,$46,2,58,0,146,$1b,$46,2,34,0,146
-         fcb    $1b,$46,2,34,0,128,$1b,$46,1,242,0,128
-         fcb    $1b,$46,1,242,0,123
-
-B630     fcb    $1b,$40,0,66,0,159,$1b,$46,0,114,0,159
-         fcb    $1b,$46,0,114,0,141,$1b,$46,0,138,0,141
-         fcb    $1b,$46,0,138,0,164,$1b,$46,0,66,0,164
-         fcb    $1b,$46,0,66,0,159
-
-B631     fcb    $1b,$40,0,162,0,141,$1b,$46,0,186,0,141
-         fcb    $1b,$46,0,186,0,159,$1b,$46,0,234,0,159
-         fcb    $1b,$46,0,234,0,164,$1b,$46,0,162,0,164
-         fcb    $1b,$46,0,162,0,141
-
-B632     fcb    $1b,$40,1,2,0,141,$1b,$48,1,122,0,146
-
-B633     fcb    $1b,$40,1,2,0,159,$1b,$48,1,58,0,164
-
-B634     fcb    $1b,$40,1,82,0,159,$1b,$48,1,122,0,164
-
-B635     fcb    $1b,$40,1,146,0,159,$1b,$46,1,194,0,159
-         fcb    $1b,$46,1,194,0,141,$1b,$46,1,218,0,141
-         fcb    $1b,$46,1,218,0,164,$1b,$46,1,146,0,164
-         fcb    $1b,$46,1,146,0,159
-
-B636     fcb    $1b,$40,1,242,0,141,$1b,$46,2,10,0,141
-         fcb    $1b,$46,2,10,0,159,$1b,$46,2,58,0,159
-         fcb    $1b,$46,2,58,0,164,$1b,$46,1,242,0,164
-         fcb    $1b,$46,1,242,0,141
-
-B6END    equ    *-B6STRT
-
-
-*    (board #7)
-B7STRT   fcb    $1b,$32,1
-         fcb    $1b,$40,0,36,0,83,$1b,$46,0,36,0,8
-         fcb    $1b,$46,2,88,0,8,$1b,$46,2,88,0,83
-         fcb    $1b,$46,2,50,0,83,$1b,$46,2,50,0,74
-         fcb    $1b,$46,2,18,0,74,$1b,$46,2,18,0,69
-         fcb    $1b,$46,2,82,0,69,$1b,$46,2,82,0,11
-         fcb    $1b,$46,1,90,0,11,$1b,$46,1,90,0,29
-         fcb    $1b,$46,1,34,0,29,$1b,$46,1,34,0,11
-         fcb    $1b,$46,0,42,0,11,$1b,$46,0,42,0,69
-         fcb    $1b,$46,0,106,0,69,$1b,$46,0,106,0,74
-         fcb    $1b,$46,0,74,0,74,$1b,$46,0,74,0,83
-         fcb    $1b,$46,0,36,0,83
-*    Bottom half of board
-         fcb    $1b,$40,0,36,0,96,$1b,$46,0,36,0,180
-         fcb    $1b,$46,2,88,0,180,$1b,$46,2,88,0,96
-         fcb    $1b,$46,2,50,0,96,$1b,$46,2,50,0,105
-         fcb    $1b,$46,2,18,0,105,$1b,$46,2,18,0,110
-         fcb    $1b,$46,2,82,0,110,$1b,$46,2,82,0,177
-
-
-         fcb    $1b,$46,0,42,0,177,$1b,$46,0,42,0,110
-         fcb    $1b,$46,0,106,0,110,$1b,$46,0,106,0,105
-         fcb    $1b,$46,0,74,0,105,$1b,$46,0,74,0,96
-         fcb    $1b,$46,0,36,0,96
-
-B71      fcb    $1b,$40,0,66,0,24,$1b,$46,0,106,0,24
-         fcb    $1b,$46,0,106,0,38,$1b,$46,0,74,0,38
-         fcb    $1b,$46,0,74,0,56,$1b,$46,0,66,0,56
-         fcb    $1b,$46,0,66,0,24
-
-B72      fcb    $1b,$40,0,130,0,24,$1b,$46,0,138,0,24
-         fcb    $1b,$46,0,138,0,56,$1b,$46,0,98,0,56
-         fcb    $1b,$46,0,98,0,51,$1b,$46,0,130,0,51
-         fcb    $1b,$46,0,130,0,24
-
-B73      fcb    $1b,$40,0,162,0,24,$1b,$46,1,10,0,24
-         fcb    $1b,$46,1,10,0,29,$1b,$46,0,202,0,29
-         fcb    $1b,$46,0,202,0,38,$1b,$46,0,162,0,38
-         fcb    $1b,$46,0,162,0,24
-
-B74      fcb    $1b,$40,1,114,0,24,$1b,$46,1,218,0,24
-         fcb    $1b,$46,1,218,0,38,$1b,$46,1,178,0,38
-         fcb    $1b,$46,1,178,0,29,$1b,$46,1,114,0,29
-         fcb    $1b,$46,1,114,0,24
-
-B75      fcb    $1b,$40,1,242,0,24,$1b,$46,1,250,0,24
-         fcb    $1b,$46,1,250,0,51,$1b,$46,2,26,0,51
-         fcb    $1b,$46,2,26,0,56,$1b,$46,1,242,0,56
-         fcb    $1b,$46,1,242,0,24
-
-B76      fcb    $1b,$40,2,18,0,24,$1b,$46,2,58,0,24
-         fcb    $1b,$46,2,58,0,56,$1b,$46,2,50,0,56
-         fcb    $1b,$46,2,50,0,38,$1b,$46,2,18,0,38
-         fcb    $1b,$46,2,18,0,24
-
-B77      fcb    $1b,$40,0,162,0,51,$1b,$46,0,202,0,51
-         fcb    $1b,$46,0,202,0,60,$1b,$46,1,10,0,60
-         fcb    $1b,$46,1,10,0,65,$1b,$46,0,162,0,65
-         fcb    $1b,$46,0,162,0,51
-
-B78      fcb    $1b,$40,0,226,0,42,$1b,$46,1,154,0,42
-         fcb    $1b,$46,1,154,0,47,$1b,$46,1,90,0,47
-         fcb    $1b,$46,1,90,0,65,$1b,$46,1,34,0,65
-         fcb    $1b,$46,1,34,0,47,$1b,$46,0,226,0,47
-         fcb    $1b,$46,0,226,0,42
-
-B79      fcb    $1b,$40,1,114,0,60,$1b,$46,1,178,0,60
-         fcb    $1b,$46,1,178,0,51,$1b,$46,1,218,0,51
-         fcb    $1b,$46,1,218,0,65,$1b,$46,1,114,0,65
-         fcb    $1b,$46,1,114,0,60
-
-B710     fcb    $1b,$40,0,98,0,87,$1b,$46,0,130,0,87
-         fcb    $1b,$46,0,130,0,69,$1b,$46,0,138,0,69
-         fcb    $1b,$46,0,138,0,92,$1b,$46,0,98,0,92
-         fcb    $1b,$46,0,98,0,87
-
-B711     fcb    $1b,$40,0,162,0,78,$1b,$48,0,202,0,83
-
-B712     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
-
-B713     fcb    $1b,$40,1,178,0,78,$1b,$48,1,218,0,83
-
-B714     fcb    $1b,$40,1,242,0,69,$1b,$46,1,250,0,69
-         fcb    $1b,$46,1,250,0,87,$1b,$46,2,26,0,87
-         fcb    $1b,$46,2,26,0,92,$1b,$46,1,242,0,92
-         fcb    $1b,$46,1,242,0,69
-
-B715     fcb    $1b,$40,0,130,0,105,$1b,$46,0,162,0,105
-         fcb    $1b,$46,0,162,0,96,$1b,$46,0,202,0,96
-         fcb    $1b,$46,0,202,0,110,$1b,$46,0,130,0,110
-         fcb    $1b,$46,0,130,0,105
-
-B716     fcb    $1b,$40,1,178,0,96,$1b,$46,1,218,0,96
-         fcb    $1b,$46,1,218,0,105,$1b,$46,1,250,0,105
-         fcb    $1b,$46,1,250,0,110,$1b,$46,1,178,0,110
-         fcb    $1b,$46,1,178,0,96
-
-B717     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
-         fcb    $1b,$46,0,138,0,128,$1b,$46,0,90,0,128
-         fcb    $1b,$46,0,90,0,146,$1b,$46,0,66,0,146
-         fcb    $1b,$46,0,66,0,123
-
-B718     fcb    $1b,$40,0,162,0,123,$1b,$46,0,226,0,123
-         fcb    $1b,$46,0,226,0,105,$1b,$46,0,250,0,105
-         fcb    $1b,$46,0,250,0,123,$1b,$46,1,26,0,123
-         fcb    $1b,$46,1,26,0,128,$1b,$46,0,162,0,128
-         fcb    $1b,$46,0,162,0,123
-
-B719     fcb    $1b,$40,1,98,0,123,$1b,$46,1,130,0,123
-         fcb    $1b,$46,1,130,0,105,$1b,$46,1,154,0,105
-         fcb    $1b,$46,1,154,0,123,$1b,$46,1,218,0,123
-         fcb    $1b,$46,1,218,0,128,$1b,$46,1,98,0,128
-         fcb    $1b,$46,1,98,0,123
-
-B720     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
-         fcb    $1b,$46,2,58,0,146,$1b,$46,2,34,0,146
-         fcb    $1b,$46,2,34,0,128,$1b,$46,1,242,0,128
-         fcb    $1b,$46,1,242,0,123
-
-B721     fcb    $1b,$40,0,66,0,159,$1b,$46,0,114,0,159
-         fcb    $1b,$46,0,114,0,141,$1b,$46,0,154,0,141
-         fcb    $1b,$46,0,154,0,164,$1b,$46,0,66,0,164
-         fcb    $1b,$46,0,66,0,159
-
-B722     fcb    $1b,$40,0,178,0,141,$1b,$46,0,202,0,141
-         fcb    $1b,$46,0,202,0,159,$1b,$46,1,26,0,159
-         fcb    $1b,$46,1,26,0,164,$1b,$46,0,178,0,164
-         fcb    $1b,$46,0,178,0,141
-
-B723     fcb    $1b,$40,1,98,0,159,$1b,$46,1,178,0,159
-         fcb    $1b,$46,1,178,0,141,$1b,$46,1,202,0,141
-         fcb    $1b,$46,1,202,0,164,$1b,$46,1,98,0,164
-         fcb    $1b,$46,1,98,0,159
-
-B724     fcb    $1b,$40,1,226,0,141,$1b,$46,2,10,0,141
-         fcb    $1b,$46,2,10,0,159,$1b,$46,2,58,0,159
-         fcb    $1b,$46,2,58,0,164,$1b,$46,1,226,0,164
-         fcb    $1b,$46,1,226,0,141
-
-B725     fcb    $1b,$40,1,74,0,164,$1b,$46,1,74,0,146
-         fcb    $1b,$46,1,154,0,146,$1b,$46,1,154,0,141
-         fcb    $1b,$46,1,74,0,141,$1b,$46,1,74,0,123
-         fcb    $1b,$46,1,50,0,123,$1b,$46,1,50,0,141
-         fcb    $1b,$46,0,226,0,141,$1b,$46,0,226,0,146
-         fcb    $1b,$46,1,50,0,146,$1b,$46,1,50,0,164
-         fcb    $1b,$46,1,74,0,164
-
-B726     fcb    $1b,$40,1,18,0,105,$1b,$48,1,106,0,110
-
-B7END    equ    *-B7STRT
-
-B8STRT   fcb    $1b,$32,1
-         fcb    $1b,$40,1,42,0,8,$1b,$46,0,36,0,8
-         fcb    $1b,$46,0,36,0,180,$1b,$46,1,58,0,180
-         fcb    $1b,$46,1,58,0,159,$1b,$46,1,50,0,159
-         fcb    $1b,$46,1,50,0,177,$1b,$46,0,42,0,177
-         fcb    $1b,$46,0,42,0,146,$1b,$46,0,90,0,146
-         fcb    $1b,$46,0,90,0,141,$1b,$46,0,42,0,141
-         fcb    $1b,$46,0,42,0,11,$1b,$46,1,34,0,11
-         fcb    $1b,$46,1,34,0,29,$1b,$46,1,42,0,29
-         fcb    $1b,$46,1,42,0,8
-
-         fcb    $1b,$40,1,66,0,8,$1b,$46,2,88,0,8
-         fcb    $1b,$46,2,88,0,180,$1b,$46,1,82,0,180
-         fcb    $1b,$46,1,82,0,159,$1b,$46,1,90,0,159
-         fcb    $1b,$46,1,90,0,177,$1b,$46,2,82,0,177
-         fcb    $1b,$46,2,82,0,146,$1b,$46,2,34,0,146
-         fcb    $1b,$46,2,34,0,141,$1b,$46,2,82,0,141
-         fcb    $1b,$46,2,82,0,11,$1b,$46,1,74,0,11
-         fcb    $1b,$46,1,74,0,29,$1b,$46,1,66,0,29
-         fcb    $1b,$46,1,66,0,8
-
-B81      fcb    $1b,$40,0,66,0,24,$1b,$48,0,90,0,38
-
-B82      fcb    $1b,$40,0,114,0,24,$1b,$48,0,138,0,29
-
-B83      fcb    $1b,$40,0,242,0,24,$1b,$46,1,10,0,24
-         fcb    $1b,$46,1,10,0,42,$1b,$46,1,42,0,42
-         fcb    $1b,$46,1,42,0,47,$1b,$46,0,210,0,47
-         fcb    $1b,$46,0,210,0,42,$1b,$46,0,242,0,42
-         fcb    $1b,$46,0,242,0,24
-
-B84      fcb    $1b,$40,1,98,0,24,$1b,$46,1,122,0,24
-         fcb    $1b,$46,1,122,0,42,$1b,$46,1,154,0,42
-         fcb    $1b,$46,1,154,0,47,$1b,$46,1,66,0,47
-         fcb    $1b,$46,1,66,0,42,$1b,$46,1,98,0,42
-         fcb    $1b,$46,1,98,0,24
-
-B85      fcb    $1b,$40,1,242,0,24,$1b,$48,2,10,0,29
-
-B86      fcb    $1b,$40,2,34,0,24,$1b,$48,2,58,0,38
-
-B87      fcb    $1b,$40,0,66,0,51,$1b,$48,0,90,0,56
-
-B88      fcb    $1b,$40,0,114,0,42,$1b,$48,0,138,0,56
-
-B89      fcb    $1b,$40,0,162,0,24,$1b,$46,0,218,0,24
-         fcb    $1b,$46,0,218,0,29,$1b,$46,0,186,0,29
-         fcb    $1b,$46,0,186,0,60,$1b,$46,0,234,0,60
-         fcb    $1b,$46,0,234,0,65,$1b,$46,0,162,0,65
-         fcb    $1b,$46,0,162,0,24
-
-B810     fcb    $1b,$40,1,2,0,60,$1b,$48,1,106,0,65
-
-B811     fcb    $1b,$40,1,146,0,24,$1b,$46,1,218,0,24
-         fcb    $1b,$46,1,218,0,65,$1b,$46,1,130,0,65
-         fcb    $1b,$46,1,130,0,60,$1b,$46,1,178,0,60
-         fcb    $1b,$46,1,178,0,29,$1b,$46,1,146,0,29
-         fcb    $1b,$46,1,146,0,24
-
-B812     fcb    $1b,$40,1,242,0,42,$1b,$48,2,10,0,56
-
-B813     fcb    $1b,$40,2,34,0,51,$1b,$48,2,58,0,56
-
-B814     fcb    $1b,$40,0,66,0,87,$1b,$48,0,106,0,92
-
-B815     fcb    $1b,$40,0,66,0,69,$1b,$46,0,138,0,69
-         fcb    $1b,$46,0,138,0,110,$1b,$46,0,66,0,110
-         fcb    $1b,$46,0,66,0,105,$1b,$46,0,130,0,105
-         fcb    $1b,$46,0,130,0,74,$1b,$46,0,66,0,74
-         fcb    $1b,$46,0,66,0,69
-
-B816     fcb    $1b,$40,0,162,0,78,$1b,$48,0,202,0,83
-
-B817     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
-
-B818     fcb    $1b,$40,1,178,0,78,$1b,$48,1,218,0,83
-
-B819     fcb    $1b,$40,1,242,0,69,$1b,$46,2,58,0,69
-         fcb    $1b,$46,2,58,0,74,$1b,$46,1,250,0,74
-         fcb    $1b,$46,1,250,0,105,$1b,$46,2,58,0,105
-         fcb    $1b,$46,2,58,0,110,$1b,$46,1,242,0,110
-         fcb    $1b,$46,1,242,0,69
-
-B820     fcb    $1b,$40,2,18,0,87,$1b,$48,2,58,0,92
-
-B821     fcb    $1b,$40,0,162,0,96,$1b,$48,0,202,0,110
-
-B822     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
-         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
-         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
-         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
-         fcb    $1b,$46,0,226,0,105
-
-B823     fcb    $1b,$40,1,178,0,96,$1b,$48,1,218,0,110
-
-B824     fcb    $1b,$40,0,66,0,123,$1b,$48,0,138,0,128
-
-B825     fcb    $1b,$40,1,242,0,123,$1b,$48,2,58,0,128
-
-B826     fcb    $1b,$40,0,114,0,141,$1b,$46,0,162,0,141
-         fcb    $1b,$46,0,162,0,123,$1b,$46,1,26,0,123
-         fcb    $1b,$46,1,26,0,128,$1b,$46,0,202,0,128
-         fcb    $1b,$46,0,202,0,159,$1b,$46,0,234,0,159
-         fcb    $1b,$46,0,234,0,164,$1b,$46,0,162,0,164
-         fcb    $1b,$46,0,162,0,146,$1b,$46,0,114,0,146
-         fcb    $1b,$46,0,114,0,141
-
-B827     fcb    $1b,$40,0,226,0,141,$1b,$46,1,58,0,141
-         fcb    $1b,$46,1,58,0,146,$1b,$46,1,26,0,146
-         fcb    $1b,$46,1,26,0,164,$1b,$46,1,2,0,164
-         fcb    $1b,$46,1,2,0,146,$1b,$46,0,226,0,146
-         fcb    $1b,$46,0,226,0,141
-
-B828     fcb    $1b,$40,1,82,0,141,$1b,$46,1,170,0,141
-         fcb    $1b,$46,1,170,0,146,$1b,$46,1,138,0,146
-         fcb    $1b,$46,1,138,0,164,$1b,$46,1,114,0,164
-         fcb    $1b,$46,1,114,0,146,$1b,$46,1,82,0,146
-         fcb    $1b,$46,1,82,0,141
-
-B829     fcb    $1b,$40,1,98,0,123,$1b,$46,1,218,0,123
-         fcb    $1b,$46,1,218,0,141,$1b,$46,2,10,0,141
-         fcb    $1b,$46,2,10,0,146,$1b,$46,1,218,0,146
-         fcb    $1b,$46,1,218,0,164,$1b,$46,1,162,0,164
-         fcb    $1b,$46,1,162,0,159,$1b,$46,1,194,0,159
-         fcb    $1b,$46,1,194,0,128,$1b,$46,1,98,0,128
-         fcb    $1b,$46,1,98,0,123
-
-B830     fcb    $1b,$40,0,66,0,159,$1b,$48,0,138,0,164
-
-B831     fcb    $1b,$40,1,242,0,159,$1b,$48,2,58,0,164
-
-B8END    equ    *-B8STRT
-
-*     These fcb bytes are transfered to the score RMB's in MAIN
-*       they are used to fill SCRPOS,SCRASC,SCORE,POINTS,SHCNT,
-*       SCRPO2,SCRAS2 and SCORE2.
-
-SCRSET   fcb    2,64,32
-         fcb    32,32,32,32,32,48
-         fcb    0,0,0,0,0,0,0
-         fcb    2,66,32
-         fcb    32,32,32,32,32,48
-         fcb    0,0,0
-
-SCNSET   fcb    $1b,$32,9
-         fcb    2,70,35,76,118
-         fcb    2,71,36,32
-*
-*           Start of BOARD routines
-*     Using current board number, point to
-*     board draw fcb's and output them
-*
-BOARDB:  lda    BRDNUM      Get board number
-         deca
-         bne    SEL2
-         leax   B1STRT,pcr
-         ldy    #B1END
-         bra    BRDOUT
-SEL2     deca
-         bne    SEL3
-         leax   B2STRT,pcr
-         ldy    #B2END
-         bra    BRDOUT
-SEL3     deca
-         bne    SEL4
-         leax   B3STRT,pcr
-         ldy    #B3END
-         bra    BRDOUT
-SEL4     deca
-         bne    SEL5
-         leax   B4STRT,pcr
-         ldy    #B4END
-         bra    BRDOUT
-SEL5     deca
-         bne    SEL6
-         leax   B5STRT,pcr
-         ldy    #B5END
-         bra    BRDOUT
-SEL6     deca
-         bne    SEL7
-         leax   B6STRT,pcr
-         ldy    #B6END
-         bra    BRDOUT
-SEL7     deca
-         bne    SEL8
-         leax   B7STRT,pcr
-         ldy    #B7END
-         bra    BRDOUT
-SEL8     leax   B8STRT,pcr
-         ldy    #B8END
-
-BRDOUT   lda    PATH,U
-         os9    I$Write
-         lbcs   ERR1
-
-*   Now put board number at bottom of screen
-
-SCNUMB   lda    BRDNUM      Get current board #
-         adda   #48         Convert to ascii
-         leax   SCNNUM,U    Point to string
-         sta    11,X        Put board# in string
-         ldy    #12         Output 12 bytes
-         lbsr   OUTSTR
-
-         rts
-
-*   These routines are used at start of game, after
-*   being used once then BOARDB is used.
-
-BOARDC:  nop
-         leax   FSCORE,U    Point to high score array
-         leax   15,X        Point to highest score
-         leay   HSCASC,U
-         ldb    #6
-HLOOP    lda    ,X+         Transfer file high score
-         sta    ,Y+
-         decb
-         bne    HLOOP
-
-*    These 9 bytes are used to put the board
-*         number on screen
-
-SETSCN   leax   SCNSET,pcr
-         leay   SCNNUM,U
-         ldb    #12         Transfer 12 bytes
-SELOOP   lda    ,X+         Get a byte
-         sta    ,Y+         Transfer it
-         decb
-         bne    SELOOP      Loop till done
-
-         lbsr   BOARDB      Go select start screen
-
-*     Transfer score set bytes to the rmb's in MAIN
-
-SETSCR   leax   SCRSET,pcr  Point to bytes to transfer
-         leay   SCRPOS,U    Point to where bytes go
-         ldb    #28         Transfer 28 bytes
-SLOOP    lda    ,X+         Get a byte
-         sta    ,Y+         Store it
-         decb               Decrement counter
-         bne    SLOOP       Loop till done
-
-*     This routine will place the DOTS and POWER PILLS on the screen
-*      This routine will also be used to reset the screen when
-*      pacman gets caught by the ghosts.
-
-PDOTS:   leax   ARRAY,U     Point to start of array
-         leax   70,X        Set X reg. to first dot location
-         stx    XTEMP,U     Save offset
-         ldd    #52
-         std    PXLOC,U
-         ldd    #16
-         std    PYLOC
-DOTLOP   ldx    XTEMP,U     Get offset from start of array
-         ldb    #56         Prepare to setup for buffer #56
-         lda    ,X          Get a byte from the array
-         beq    STORIT 
-         bmi    MOVE
-         cmpa   #1          Is it an intersection ?
-         beq    STORIT
-         ldb    #40
-         bita   #2          Is it a regular dot ?
-         bne    STORIT
-         bita   #4          Is it a power dot ?
-         beq    MOVE        If not, then just move on
-         ldb    #50         Set for buffer # 50
-STORIT   stb    PBFN,U      Store appropriate Putblk buff #
-         cmpb   #49         Is it a power dot ?
-         bls    NOPOW
-         ldd    PXLOC,U     Get screen X location
-         subd   #2          Subtract 2 from it
-         std    PXLOC,U     put it back
-NOPOW    lbsr   PUTBLK      Go output putblk code
-         lda    PBFN,U
-         cmpa   #49         Did we write a power dot ?
-         bls    MOVE
-         ldd    PXLOC,U
-         addd   #2          Return to original count
-         std    PXLOC,U
-MOVE     ldx    XTEMP,U     Get current array position
-         cmpx   #ARREND-71  Are we done yet ?
-         bge    PUTGHST     If so then leave this routine
-         leax   2,X         Add 2 to offset
-         stx    XTEMP,U     Save new offset
-         ldd    PXLOC,U     Get current screen X location
-         addd   #16         Add 16 to it
-         cmpd   #596        Have we gone past 580 yet ?
-         bne    NOVERT      If not, then go store PXLOC
-         ldx    XTEMP,U
-         leax   139,X
-         stx    XTEMP,U
-         ldd    PYLOC,U     Get current screen Y location
-         addd   #9          Add 9 to it
-         std    PYLOC,U     Save new screen Y location
-         ldd    #52         Reset X location to 52
-NOVERT   std    PXLOC,U     Store new screen X location
-         lbra   DOTLOP      Keep looping
-
-*     Put ghosts on the screen
-PUTGHST  leax   G1OFST,U    Point to ghost #1 table
-         lda    11,X        Get buff #
-         sta    PGBFN,U     Give buffer # to PUTGH
-         ldd    4,X         Get screen Y location
-         std    PGYLOC,U    Set screen Y location
-         ldd    2,X         Get screen X location
-         std    PGXLOC,U    Set screen X location
-         lbsr   PUTGHT      Go do putght
-         leax   G2OFST,U    Point to ghost #2 table
-         lda    11,X        Get buff #
-         sta    PGBFN,U     Set buffer
-         ldd    2,X
-         std    PGXLOC,U    Set screen X location
-         lbsr   PUTGHT      Go do putght
-         leax   G3OFST,U    Point to ghost #3 table
-         lda    11,X        Get buff #
-         sta    PGBFN,U     Set buffer
-         ldd    2,X
-         std    PGXLOC,U    Set screen X location
-         lbsr   PUTGHT      Go do putght
-         leax   G4OFST,U    Point to ghost #4 table
-         lda    11,X        Get buff #
-         sta    PGBFN,U     Set buffer
-         ldd    2,X
-         std    PGXLOC,U    Set screen X location
-         lbsr   PUTGHT      Go do putght
-
-*     Put pacman and extra men on screen
-PUTPAC   ldd    #181
-         std    PYLOC,U     Set screen Y location
-         lda    #37         Buff# for blank pacman
-         sta    PBFN,U      Set up buffer # for PUTBLK
-         ldd    #450        Set left most extra pacman -30
-         std    PXLOC,U         position
-         lda    #5          Set counter
-         ldb    PACMAN      Get # of men left for player
-         pshs   A           Save count
-         pshs   B           Save for later
-PUTLOP   puls   B           Get count
-         incb               Increment it
-         cmpb   #6          
-         bne    FLIPON
-         lda    #28         Set for left facing pacman
-         sta    PBFN,U
-FLIPON   puls   A
-         deca
-         beq    PUTPC2
-         pshs   A
-         pshs   B           Save new count
-         ldd    PXLOC,U     Get last X screen location
-         addd   #30         Move right 30 pixels
-         std    PXLOC,U     Give new value to PUTBLK
-         lbsr   PUTBLK      Go do putblk
-         bra    PUTLOP
-
-PUTPC2   ldd    #94
-         std    PYLOC,U     Set screen Y location
-         ldd    #308
-         std    PXLOC,U     Set screen X location
-         lbsr   PUTBLK      Go do putblk
-
-         rts                Return to main
-
-         ENDSECT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/pacos9/board90.as	Sat Feb 08 01:03:26 2014 +0100
@@ -0,0 +1,1248 @@
+
+
+         NAM    BOARD
+         TTL    Routine to draw playing board
+
+*     Program segment to be compiled using Level II RMA
+*          This is not a mainline program segment
+*                 Written by Larry Olson
+
+         IFP1
+*         use    /h0/defs/os9defs.a
+         ENDc
+
+STACK    EQU    100
+
+         PSECT    BOARD,0,0,0,STACK,BOARDC
+ 
+         VSECT
+
+*   Local variables
+
+XTEMP    RMB      2
+
+         RMB      STACK
+
+
+         ENDSECT
+
+
+*     These are the FCB's for board #1
+
+B1STRT   fcb    $1b,$32,1
+         fcb    $1b,$40,0,36,0,83,$1b,$46,0,36,0,8
+         fcb    $1b,$46,2,88,0,8,$1b,$46,2,88,0,83
+         fcb    $1b,$46,2,18,0,83,$1b,$46,2,18,0,69
+         fcb    $1b,$46,2,82,0,69,$1b,$46,2,82,0,11
+         fcb    $1b,$46,1,106,0,11,$1b,$46,1,106,0,29
+         fcb    $1b,$46,1,18,0,29,$1b,$46,1,18,0,11
+         fcb    $1b,$46,0,42,0,11,$1b,$46,0,42,0,69
+         fcb    $1b,$46,0,106,0,69,$1b,$46,0,106,0,83
+         fcb    $1b,$46,0,36,0,83
+
+         fcb    $1b,$40,0,36,0,96,$1b,$46,0,36,0,180
+         fcb    $1b,$46,2,88,0,180,$1b,$46,2,88,0,96
+         fcb    $1b,$46,2,18,0,96,$1b,$46,2,18,0,110
+         fcb    $1b,$46,2,82,0,110,$1b,$46,2,82,0,177
+         fcb    $1b,$46,0,42,0,177,$1b,$46,0,42,0,110
+         fcb    $1b,$46,0,106,0,110,$1b,$46,0,106,0,96
+         fcb    $1b,$46,0,36,0,96
+
+B11      fcb    $1b,$40,0,66,0,24,$1b,$48,0,138,0,38
+
+B12      fcb    $1b,$40,0,162,0,24,$1b,$48,0,250,0,29
+
+B14      fcb    $1b,$40,1,130,0,24,$1b,$48,1,218,0,29
+
+B15      fcb    $1b,$40,1,242,0,24,$1b,$48,2,58,0,38
+
+B16      fcb    $1b,$40,0,66,0,51,$1b,$48,0,138,0,56
+
+B17      fcb    $1b,$40,0,162,0,42,$1b,$46,0,202,0,42
+         fcb    $1b,$46,0,202,0,60,$1b,$46,0,250,0,60
+         fcb    $1b,$46,0,250,0,65,$1b,$46,0,202,0,65
+         fcb    $1b,$46,0,202,0,83,$1b,$46,0,130,0,83
+         fcb    $1b,$46,0,130,0,69,$1b,$46,0,162,0,69
+         fcb    $1b,$46,0,162,0,42
+
+B18      fcb    $1b,$40,0,226,0,42,$1b,$46,1,154,0,42
+         fcb    $1b,$46,1,154,0,47,$1b,$46,1,106,0,47
+         fcb    $1b,$46,1,106,0,65,$1b,$46,1,18,0,65
+         fcb    $1b,$46,1,18,0,47,$1b,$46,0,226,0,47
+         fcb    $1b,$46,0,226,0,42
+
+B19      fcb    $1b,$40,1,178,0,42,$1b,$46,1,218,0,42
+         fcb    $1b,$46,1,218,0,69,$1b,$46,1,250,0,69
+         fcb    $1b,$46,1,250,0,83,$1b,$46,1,178,0,83
+         fcb    $1b,$46,1,178,0,65,$1b,$46,1,130,0,65
+         fcb    $1b,$46,1,130,0,60,$1b,$46,1,178,0,60
+         fcb    $1b,$46,1,178,0,42
+
+B110     fcb    $1b,$40,1,242,0,51,$1b,$48,2,58,0,56
+
+B112     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
+
+B115     fcb    $1b,$40,0,130,0,96,$1b,$48,0,202,0,110
+
+B116     fcb    $1b,$40,1,178,0,96,$1b,$48,1,250,0,110
+
+B118     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
+         fcb    $1b,$46,0,138,0,128,$1b,$46,0,90,0,128
+         fcb    $1b,$46,0,90,0,146,$1b,$46,0,66,0,146
+         fcb    $1b,$46,0,66,0,123
+
+B119     fcb    $1b,$40,0,162,0,123,$1b,$48,0,250,0,128
+
+B120     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
+         fcb    $1b,$46,1,154,0,110,$1b,$46,1,106,0,110
+         fcb    $1b,$46,1,106,0,128,$1b,$46,1,18,0,128
+         fcb    $1b,$46,1,18,0,110,$1b,$46,0,226,0,110
+         fcb    $1b,$46,0,226,0,105
+
+B121     fcb    $1b,$40,1,130,0,123,$1b,$48,1,218,0,128
+
+B122     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
+         fcb    $1b,$46,2,58,0,146,$1b,$46,2,34,0,146
+         fcb    $1b,$46,2,34,0,128,$1b,$46,1,242,0,128
+         fcb    $1b,$46,1,242,0,123
+
+B123     fcb    $1b,$40,0,66,0,159,$1b,$46,0,114,0,159
+         fcb    $1b,$46,0,114,0,141,$1b,$46,0,202,0,141
+         fcb    $1b,$46,0,202,0,159,$1b,$46,0,250,0,159
+         fcb    $1b,$46,0,250,0,164,$1b,$46,0,66,0,164
+         fcb    $1b,$46,0,66,0,159
+
+B124     fcb    $1b,$40,0,226,0,141,$1b,$46,1,154,0,141
+         fcb    $1b,$46,1,154,0,146,$1b,$46,1,106,0,146
+         fcb    $1b,$46,1,106,0,164,$1b,$46,1,18,0,164
+         fcb    $1b,$46,1,18,0,146,$1b,$46,0,226,0,146
+         fcb    $1b,$46,0,226,0,141
+
+B125     fcb    $1b,$40,1,178,0,141,$1b,$46,2,10,0,141
+         fcb    $1b,$46,2,10,0,159,$1b,$46,2,58,0,159
+         fcb    $1b,$46,2,58,0,164,$1b,$46,1,130,0,164
+         fcb    $1b,$46,1,130,0,159,$1b,$46,1,178,0,159
+         fcb    $1b,$46,1,178,0,141
+
+B1END    equ    *-B1STRT
+
+*    (board #2)
+B2STRT   fcb    $1b,$32,1
+         fcb    $1b,$40,1,42,0,8,$1b,$46,0,36,0,8
+         fcb    $1b,$46,0,36,0,180,$1b,$46,1,58,0,180
+         fcb    $1b,$46,1,58,0,177,$1b,$46,0,42,0,177
+         fcb    $1b,$46,0,42,0,146,$1b,$46,0,74,0,146
+         fcb    $1b,$46,0,74,0,141,$1b,$46,0,42,0,141
+         fcb    $1b,$46,0,42,0,11,$1b,$46,0,162,0,11
+         fcb    $1b,$46,0,162,0,20,$1b,$46,1,42,0,20
+         fcb    $1b,$46,1,42,0,8
+
+         fcb    $1b,$40,1,66,0,8,$1b,$46,2,88,0,8
+         fcb    $1b,$46,2,88,0,180,$1b,$46,1,82,0,180
+         fcb    $1b,$46,1,82,0,177,$1b,$46,2,82,0,177
+         fcb    $1b,$46,2,82,0,146,$1b,$46,2,50,0,146
+         fcb    $1b,$46,2,50,0,141,$1b,$46,2,82,0,141
+         fcb    $1b,$46,2,82,0,11,$1b,$46,1,218,0,11
+         fcb    $1b,$46,1,218,0,20,$1b,$46,1,66,0,20
+         fcb    $1b,$46,1,66,0,8
+
+B21      fcb    $1b,$40,0,66,0,24,$1b,$48,0,138,0,29
+
+B22      fcb    $1b,$40,0,66,0,42,$1b,$48,0,138,0,47
+
+B23      fcb    $1b,$40,0,66,0,60,$1b,$46,0,162,0,60
+         fcb    $1b,$46,0,162,0,33,$1b,$46,0,202,0,33
+         fcb    $1b,$46,0,202,0,60,$1b,$46,1,26,0,60
+         fcb    $1b,$46,1,26,0,65,$1b,$46,0,202,0,65
+         fcb    $1b,$46,0,202,0,83,$1b,$46,0,162,0,83
+         fcb    $1b,$46,0,162,0,65,$1b,$46,0,66,0,65
+         fcb    $1b,$46,0,66,0,60
+
+B24      fcb    $1b,$40,0,226,0,33,$1b,$46,1,154,0,33
+         fcb    $1b,$46,1,154,0,47,$1b,$46,1,74,0,47
+         fcb    $1b,$46,1,74,0,65,$1b,$46,1,50,0,65
+         fcb    $1b,$46,1,50,0,47,$1b,$46,0,226,0,47
+         fcb    $1b,$46,0,226,0,33
+
+B25      fcb    $1b,$40,1,98,0,60,$1b,$46,1,178,0,60
+         fcb    $1b,$46,1,178,0,33,$1b,$46,1,218,0,33
+         fcb    $1b,$46,1,218,0,60,$1b,$46,2,58,0,60
+         fcb    $1b,$46,2,58,0,65,$1b,$46,1,218,0,65
+         fcb    $1b,$46,1,218,0,83,$1b,$46,1,178,0,83
+         fcb    $1b,$46,1,178,0,65,$1b,$46,1,98,0,65
+         fcb    $1b,$46,1,98,0,60
+
+B26      fcb    $1b,$40,1,242,0,24,$1b,$48,2,58,0,29
+
+B27      fcb    $1b,$40,1,242,0,42,$1b,$48,2,58,0,47
+
+B28      fcb    $1b,$40,0,66,0,78,$1b,$48,0,90,0,110
+
+B29      fcb    $1b,$40,0,114,0,78,$1b,$48,0,138,0,110
+
+B210     fcb    $1b,$40,0,162,0,96,$1b,$48,0,202,0,110
+
+B211     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
+
+B212     fcb    $1b,$40,1,178,0,96,$1b,$48,1,218,0,110
+
+B213     fcb    $1b,$40,1,242,0,78,$1b,$48,2,10,0,110
+
+B214     fcb    $1b,$40,2,34,0,78,$1b,$48,2,58,0,110
+
+B215     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
+         fcb    $1b,$46,0,138,0,146,$1b,$46,0,98,0,146
+         fcb    $1b,$46,0,98,0,128,$1b,$46,0,66,0,128
+         fcb    $1b,$46,0,66,0,123
+
+B216     fcb    $1b,$40,0,162,0,123,$1b,$48,1,26,0,128
+
+B217     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
+         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
+         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
+         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
+         fcb    $1b,$46,0,226,0,105
+
+B218     fcb    $1b,$40,1,98,0,123,$1b,$48,1,218,0,128
+
+B219     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
+         fcb    $1b,$46,2,58,0,128,$1b,$46,2,26,0,128
+         fcb    $1b,$46,2,26,0,146,$1b,$46,1,242,0,146
+         fcb    $1b,$46,1,242,0,123
+
+B220     fcb    $1b,$40,0,66,0,159,$1b,$46,0,162,0,159
+         fcb    $1b,$46,0,162,0,141,$1b,$46,0,202,0,141
+         fcb    $1b,$46,0,202,0,159,$1b,$46,1,58,0,159
+         fcb    $1b,$46,1,58,0,164,$1b,$46,0,66,0,164
+         fcb    $1b,$46,0,66,0,159
+
+B221     fcb    $1b,$40,0,226,0,141,$1b,$48,1,154,0,146
+
+B222     fcb    $1b,$40,1,82,0,159,$1b,$46,1,178,0,159
+         fcb    $1b,$46,1,178,0,141,$1b,$46,1,218,0,141
+         fcb    $1b,$46,1,218,0,159,$1b,$46,2,58,0,159
+         fcb    $1b,$46,2,58,0,164,$1b,$46,1,82,0,164
+         fcb    $1b,$46,1,82,0,159
+
+B2END    equ    *-B2STRT
+
+
+*     These draw commands for borad #3
+
+B3STRT   fcb    $1b,$32,1              *  TOPBRD
+         fcb    $1b,$40,0,36,0,83,$1b,$46,0,36,0,80
+         fcb    $1b,$46,0,132,0,80,$1b,$46,0,132,0,72
+         fcb    $1b,$46,0,36,0,72,$1b,$46,0,36,0,8
+         fcb    $1b,$46,2,89,0,8,$1b,$46,2,89,0,72
+         fcb    $1b,$46,1,248,0,72,$1b,$46,1,248,0,80
+         fcb    $1b,$46,2,89,0,80,$1b,$46,2,89,0,83
+         fcb    $1b,$46,1,242,0,83,$1b,$46,1,242,0,69
+         fcb    $1b,$46,2,83,0,69,$1b,$46,2,83,0,11
+         fcb    $1b,$46,1,74,0,11,$1b,$46,1,74,0,29
+         fcb    $1b,$46,1,50,0,29,$1b,$46,1,50,0,11
+         fcb    $1b,$46,0,42,0,11,$1b,$46,0,42,0,69
+         fcb    $1b,$46,0,138,0,69,$1b,$46,0,138,0,83
+         fcb    $1b,$46,0,36,0,83
+*
+         fcb    $1b,$40,0,36,0,96,$1b,$46,0,138,0,96
+         fcb    $1b,$46,0,138,0,110,$1b,$46,0,42,0,110
+         fcb    $1b,$46,0,42,0,141,$1b,$46,0,74,0,141
+         fcb    $1b,$46,0,74,0,146,$1b,$46,0,42,0,146
+         fcb    $1b,$46,0,42,0,177,$1b,$46,2,83,0,177
+         fcb    $1b,$46,2,83,0,146,$1b,$46,2,50,0,146
+         fcb    $1b,$46,2,50,0,141,$1b,$46,2,83,0,141
+         fcb    $1b,$46,2,83,0,110,$1b,$46,1,242,0,110
+         fcb    $1b,$46,1,242,0,96,$1b,$46,2,89,0,96
+         fcb    $1b,$46,2,89,0,99,$1b,$46,1,248,0,99
+         fcb    $1b,$46,1,248,0,107,$1b,$46,2,89,0,107
+         fcb    $1b,$46,2,89,0,180,$1b,$46,0,36,0,180
+         fcb    $1b,$46,0,36,0,107,$1b,$46,0,132,0,107
+         fcb    $1b,$46,0,132,0,99,$1b,$46,0,36,0,99
+         fcb    $1b,$46,0,36,0,96
+
+B31      fcb    $1b,$40,0,66,0,24,$1b,$48,0,138,0,38
+
+B32      fcb    $1b,$40,0,162,0,24,$1b,$48,1,26,0,29
+
+B33      fcb    $1b,$40,1,98,0,24,$1b,$48,1,218,0,29
+
+B34      fcb    $1b,$40,1,242,0,24,$1b,$48,2,58,0,38
+
+B35      fcb    $1b,$40,0,66,0,51,$1b,$48,0,138,0,56
+
+B36      fcb    $1b,$40,0,162,0,42,$1b,$46,0,202,0,42
+         fcb    $1b,$46,0,202,0,60,$1b,$46,1,26,0,60
+         fcb    $1b,$46,1,26,0,65,$1b,$46,0,202,0,65
+         fcb    $1b,$46,0,202,0,83,$1b,$46,0,162,0,83
+         fcb    $1b,$46,0,162,0,42
+
+B37      fcb    $1b,$40,0,226,0,42,$1b,$46,1,154,0,42
+         fcb    $1b,$46,1,154,0,47,$1b,$46,1,74,0,47
+         fcb    $1b,$46,1,74,0,65,$1b,$46,1,50,0,65
+         fcb    $1b,$46,1,50,0,47,$1b,$46,0,226,0,47
+         fcb    $1b,$46,0,226,0,42
+
+B38      fcb    $1b,$40,1,98,0,60,$1b,$46,1,178,0,60
+         fcb    $1b,$46,1,178,0,42,$1b,$46,1,218,0,42
+         fcb    $1b,$46,1,218,0,83,$1b,$46,1,178,0,83
+         fcb    $1b,$46,1,178,0,65,$1b,$46,1,98,0,65
+         fcb    $1b,$46,1,98,0,60
+
+B39      fcb    $1b,$40,1,242,0,51,$1b,$48,2,58,0,56
+
+B310     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
+
+B311     fcb    $1b,$40,0,162,0,96,$1b,$48,0,202,0,110
+
+B312     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
+         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
+         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
+         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
+         fcb    $1b,$46,0,226,0,105
+
+B313     fcb    $1b,$40,1,178,0,96,$1b,$48,1,218,0,110
+
+B314     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
+         fcb    $1b,$46,0,138,0,146,$1b,$46,0,98,0,146
+         fcb    $1b,$46,0,98,0,128,$1b,$46,0,66,0,128
+         fcb    $1b,$46,0,66,0,123
+
+B315     fcb    $1b,$40,0,162,0,123,$1b,$48,1,26,0,128
+
+B316     fcb    $1b,$40,1,98,0,123,$1b,$48,1,218,0,128
+
+B317     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
+         fcb    $1b,$46,2,58,0,128,$1b,$46,2,26,0,128
+         fcb    $1b,$46,2,26,0,146,$1b,$46,1,242,0,146
+         fcb    $1b,$46,1,242,0,123
+
+B318     fcb    $1b,$40,0,66,0,159,$1b,$46,0,162,0,159
+         fcb    $1b,$46,0,162,0,141,$1b,$46,0,202,0,141
+         fcb    $1b,$46,0,202,0,159,$1b,$46,1,26,0,159
+         fcb    $1b,$46,1,26,0,164,$1b,$46,0,66,0,164
+         fcb    $1b,$46,0,66,0,159
+
+B319     fcb    $1b,$40,0,226,0,141,$1b,$46,1,154,0,141
+         fcb    $1b,$46,1,154,0,146,$1b,$46,1,74,0,146
+         fcb    $1b,$46,1,74,0,164,$1b,$46,1,50,0,164
+         fcb    $1b,$46,1,50,0,146,$1b,$46,0,226,0,146
+         fcb    $1b,$46,0,226,0,141
+
+B320     fcb    $1b,$40,1,98,0,159,$1b,$46,1,178,0,159
+         fcb    $1b,$46,1,178,0,141,$1b,$46,1,218,0,141
+         fcb    $1b,$46,1,218,0,159,$1b,$46,2,58,0,159
+         fcb    $1b,$46,2,58,0,164,$1b,$46,1,98,0,164
+         fcb    $1b,$46,1,98,0,159
+
+B3END    equ    *-B3STRT
+
+
+*       These are the FCB's for board #4
+
+B4STRT   fcb    $1b,$32,1
+         fcb    $1b,$40,1,42,0,8,$1b,$46,0,36,0,8
+         fcb    $1b,$46,0,36,0,180,$1b,$46,1,58,0,180
+         fcb    $1b,$46,1,58,0,177,$1b,$46,0,42,0,177
+         fcb    $1b,$46,0,42,0,146,$1b,$46,0,90,0,146
+         fcb    $1b,$46,0,90,0,141,$1b,$46,0,42,0,141
+         fcb    $1b,$46,0,42,0,110,$1b,$46,0,138,0,110
+         fcb    $1b,$46,0,138,0,105,$1b,$46,0,58,0,105
+         fcb    $1b,$46,0,58,0,74,$1b,$46,0,138,0,74
+         fcb    $1b,$46,0,138,0,69,$1b,$46,0,42,0,69
+         fcb    $1b,$46,0,42,0,11,$1b,$46,1,42,0,11
+         fcb    $1b,$46,1,42,0,8
+
+         fcb    $1b,$40,1,66,0,8,$1b,$46,2,88,0,8
+         fcb    $1b,$46,2,88,0,180,$1b,$46,1,82,0,180
+         fcb    $1b,$46,1,82,0,177,$1b,$46,2,82,0,177
+         fcb    $1b,$46,2,82,0,146,$1b,$46,2,34,0,146
+         fcb    $1b,$46,2,34,0,141,$1b,$46,2,82,0,141
+         fcb    $1b,$46,2,82,0,110,$1b,$46,1,242,0,110
+         fcb    $1b,$46,1,242,0,105,$1b,$46,2,66,0,105
+         fcb    $1b,$46,2,66,0,74,$1b,$46,1,242,0,74
+         fcb    $1b,$46,1,242,0,69,$1b,$46,2,82,0,69
+         fcb    $1b,$46,2,82,0,11,$1b,$46,1,66,0,11
+         fcb    $1b,$46,1,66,0,8
+
+
+B41      fcb    $1b,$40,0,66,0,24,$1b,$48,0,90,0,38
+
+B42      fcb    $1b,$40,0,114,0,24,$1b,$48,0,138,0,38
+
+B43      fcb    $1b,$40,0,162,0,24,$1b,$46,0,202,0,24
+         fcb    $1b,$46,0,202,0,42,$1b,$46,0,234,0,42
+         fcb    $1b,$46,0,234,0,47,$1b,$46,0,162,0,47
+         fcb    $1b,$46,0,162,0,24
+
+B44      fcb    $1b,$40,0,226,0,24,$1b,$48,1,42,0,29
+
+B45      fcb    $1b,$40,1,66,0,24,$1b,$48,1,154,0,29
+
+B46      fcb    $1b,$40,1,2,0,42,$1b,$48,1,122,0,47
+
+B47      fcb    $1b,$40,1,178,0,24,$1b,$46,1,218,0,24
+         fcb    $1b,$46,1,218,0,47,$1b,$46,1,146,0,47
+         fcb    $1b,$46,1,146,0,42,$1b,$46,1,178,0,42
+         fcb    $1b,$46,1,178,0,24
+
+B48      fcb    $1b,$40,1,242,0,24,$1b,$48,2,10,0,38
+
+B49      fcb    $1b,$40,2,34,0,24,$1b,$48,2,58,0,38
+
+B410     fcb    $1b,$40,0,66,0,51,$1b,$48,0,138,0,56
+
+B411     fcb    $1b,$40,1,242,0,51,$1b,$48,2,58,0,56
+
+B412     fcb    $1b,$40,0,162,0,60,$1b,$46,1,42,0,60
+         fcb    $1b,$46,1,42,0,65,$1b,$46,0,202,0,65
+         fcb    $1b,$46,0,202,0,83,$1b,$46,0,162,0,83
+         fcb    $1b,$46,0,162,0,60
+
+B413     fcb    $1b,$40,1,66,0,60,$1b,$46,1,218,0,60
+         fcb    $1b,$46,1,218,0,83,$1b,$46,1,178,0,83
+         fcb    $1b,$46,1,178,0,65,$1b,$46,1,66,0,65
+         fcb    $1b,$46,1,66,0,60
+
+B414     fcb    $1b,$40,0,82,0,87,$1b,$48,0,138,0,92
+
+B415     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
+
+B416     fcb    $1b,$40,1,242,0,87,$1b,$48,2,42,0,92
+
+B417     fcb    $1b,$40,0,162,0,96,$1b,$48,0,202,0,110
+
+B418     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
+         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
+         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
+         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
+         fcb    $1b,$46,0,226,0,105
+
+B419     fcb    $1b,$40,1,178,0,96,$1b,$48,1,218,0,110
+
+B420     fcb    $1b,$40,0,66,0,123,$1b,$48,0,138,0,128
+
+B421     fcb    $1b,$40,0,226,0,123,$1b,$48,1,26,0,128
+
+B422     fcb    $1b,$40,1,98,0,123,$1b,$48,1,154,0,128
+
+B423     fcb    $1b,$40,1,242,0,123,$1b,$48,2,58,0,128
+
+B424     fcb    $1b,$40,0,162,0,123,$1b,$46,0,202,0,123
+         fcb    $1b,$46,0,202,0,164,$1b,$46,0,162,0,164
+         fcb    $1b,$46,0,162,0,146,$1b,$46,0,114,0,146
+         fcb    $1b,$46,0,114,0,141,$1b,$46,0,162,0,141
+         fcb    $1b,$46,0,162,0,123
+
+B425     fcb    $1b,$40,1,178,0,123,$1b,$46,1,218,0,123
+         fcb    $1b,$46,1,218,0,141,$1b,$46,2,10,0,141
+         fcb    $1b,$46,2,10,0,146,$1b,$46,1,218,0,146
+         fcb    $1b,$46,1,218,0,164,$1b,$46,1,178,0,164
+         fcb    $1b,$46,1,178,0,123
+
+B426     fcb    $1b,$40,0,226,0,141,$1b,$48,1,154,0,146
+
+B427     fcb    $1b,$40,0,66,0,159,$1b,$48,0,138,0,164
+
+B428     fcb    $1b,$40,0,226,0,159,$1b,$48,1,58,0,164
+
+B429     fcb    $1b,$40,1,82,0,159,$1b,$48,1,154,0,164
+
+B430     fcb    $1b,$40,1,242,0,159,$1b,$48,2,58,0,164
+
+B4END    equ    *-B4STRT
+
+
+
+*    (board #5)
+B5STRT   fcb    $1b,$32,1
+         fcb    $1b,$40,0,36,0,83,$1b,$46,0,36,0,8
+         fcb    $1b,$46,2,88,0,8,$1b,$46,2,88,0,83
+         fcb    $1b,$46,1,242,0,83,$1b,$46,1,242,0,78
+         fcb    $1b,$46,2,82,0,78,$1b,$46,2,82,0,11
+
+         fcb    $1b,$46,1,74,0,11,$1b,$46,1,74,0,29
+         fcb    $1b,$46,1,50,0,29,$1b,$46,1,50,0,11
+
+         fcb    $1b,$46,0,42,0,11,$1b,$46,0,42,0,78
+         fcb    $1b,$46,0,138,0,78,$1b,$46,0,138,0,83
+         fcb    $1b,$46,0,36,0,83
+*   Bottom half of board
+         fcb    $1b,$40,0,36,0,96,$1b,$46,0,36,0,180
+         fcb    $1b,$46,2,88,0,180,$1b,$46,2,88,0,96
+         fcb    $1b,$46,2,34,0,96,$1b,$46,2,34,0,101
+         fcb    $1b,$46,2,82,0,101,$1b,$46,2,82,0,177
+
+         fcb    $1b,$46,1,74,0,177,$1b,$46,1,74,0,159
+
+         fcb    $1b,$46,1,50,0,159,$1b,$46,1,50,0,177
+         fcb    $1b,$46,0,42,0,177,$1b,$46,0,42,0,101
+         fcb    $1b,$46,0,90,0,101,$1b,$46,0,90,0,96
+         fcb    $1b,$46,0,36,0,96
+
+B51      fcb    $1b,$40,0,114,0,24,$1b,$48,1,26,0,29
+
+B52      fcb    $1b,$40,1,98,0,24,$1b,$48,2,10,0,29
+
+B53      fcb    $1b,$40,0,66,0,24,$1b,$46,0,90,0,24
+         fcb    $1b,$46,0,90,0,42,$1b,$46,0,138,0,42
+         fcb    $1b,$46,0,138,0,47,$1b,$46,0,90,0,47
+         fcb    $1b,$46,0,90,0,65,$1b,$46,0,66,0,65
+         fcb    $1b,$46,0,66,0,24
+
+B54      fcb    $1b,$40,0,114,0,60,$1b,$46,0,162,0,60
+         fcb    $1b,$46,0,162,0,42,$1b,$46,0,202,0,42
+         fcb    $1b,$46,0,202,0,60,$1b,$46,1,26,0,60
+         fcb    $1b,$46,1,26,0,65,$1b,$46,0,202,0,65
+         fcb    $1b,$46,0,202,0,74,$1b,$46,0,162,0,74
+         fcb    $1b,$46,0,162,0,65,$1b,$46,0,114,0,65
+         fcb    $1b,$46,0,114,0,60
+
+B55      fcb    $1b,$40,1,98,0,60,$1b,$46,1,178,0,60
+         fcb    $1b,$46,1,178,0,42,$1b,$46,1,218,0,42
+         fcb    $1b,$46,1,218,0,60,$1b,$46,2,10,0,60
+         fcb    $1b,$46,2,10,0,65,$1b,$46,1,218,0,65
+         fcb    $1b,$46,1,218,0,74,$1b,$46,1,178,0,74
+         fcb    $1b,$46,1,178,0,65,$1b,$46,1,98,0,65
+         fcb    $1b,$46,1,98,0,60
+
+B56      fcb    $1b,$40,1,242,0,42,$1b,$46,2,34,0,42
+         fcb    $1b,$46,2,34,0,24,$1b,$46,2,58,0,24
+         fcb    $1b,$46,2,58,0,65,$1b,$46,2,34,0,65
+         fcb    $1b,$46,2,34,0,47,$1b,$46,1,242,0,47
+         fcb    $1b,$46,1,242,0,42
+
+B57      fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
+
+B58      fcb    $1b,$40,0,114,0,96,$1b,$48,0,138,0,110
+
+
+B59      fcb    $1b,$40,0,66,0,114,$1b,$46,0,90,0,114
+         fcb    $1b,$46,0,90,0,141,$1b,$46,0,138,0,141
+         fcb    $1b,$46,0,138,0,146,$1b,$46,0,66,0,146
+         fcb    $1b,$46,0,66,0,114
+
+B510     fcb    $1b,$40,0,114,0,123,$1b,$46,0,162,0,123
+         fcb    $1b,$46,0,162,0,87,$1b,$46,0,202,0,87
+         fcb    $1b,$46,0,202,0,105,$1b,$46,0,250,0,105
+         fcb    $1b,$46,0,250,0,110,$1b,$46,0,202,0,110
+         fcb    $1b,$46,0,202,0,146,$1b,$46,0,162,0,146
+         fcb    $1b,$46,0,162,0,128,$1b,$46,0,114,0,128
+         fcb    $1b,$46,0,114,0,123
+
+B511     fcb    $1b,$40,0,226,0,123,$1b,$46,1,18,0,123
+         fcb    $1b,$46,1,18,0,105,$1b,$46,1,106,0,105
+         fcb    $1b,$46,1,106,0,123,$1b,$46,1,154,0,123
+         fcb    $1b,$46,1,154,0,128,$1b,$46,1,98,0,128
+         fcb    $1b,$46,1,98,0,110,$1b,$46,1,26,0,110
+         fcb    $1b,$46,1,26,0,128,$1b,$46,0,226,0,128
+         fcb    $1b,$46,0,226,0,123
+
+B512     fcb    $1b,$40,1,130,0,105,$1b,$46,1,178,0,105
+         fcb    $1b,$46,1,178,0,87,$1b,$46,1,218,0,87
+         fcb    $1b,$46,1,218,0,123,$1b,$46,2,10,0,123
+         fcb    $1b,$46,2,10,0,128,$1b,$46,1,218,0,128
+         fcb    $1b,$46,1,218,0,146,$1b,$46,1,178,0,146
+         fcb    $1b,$46,1,178,0,110,$1b,$46,1,130,0,110
+         fcb    $1b,$46,1,130,0,105
+
+
+B513     fcb    $1b,$40,1,242,0,96,$1b,$48,2,10,0,110
+
+B514     fcb    $1b,$40,1,242,0,141,$1b,$46,2,34,0,141
+         fcb    $1b,$46,2,34,0,114,$1b,$46,2,58,0,114
+         fcb    $1b,$46,2,58,0,146,$1b,$46,1,242,0,146
+         fcb    $1b,$46,1,242,0,141
+
+B515     fcb    $1b,$40,0,66,0,159,$1b,$48,1,26,0,164
+
+B516     fcb    $1b,$40,1,98,0,159,$1b,$48,2,58,0,164
+
+B517     fcb    $1b,$40,0,226,0,42,$1b,$46,1,154,0,42
+         fcb    $1b,$46,1,154,0,47,$1b,$46,1,74,0,47
+         fcb    $1b,$46,1,74,0,65,$1b,$46,1,50,0,65
+         fcb    $1b,$46,1,50,0,47,$1b,$46,0,226,0,47
+         fcb    $1b,$46,0,226,0,42
+
+B518     fcb    $1b,$40,0,226,0,141,$1b,$46,1,50,0,141
+         fcb    $1b,$46,1,50,0,123,$1b,$46,1,74,0,123
+         fcb    $1b,$46,1,74,0,141,$1b,$46,1,154,0,141
+         fcb    $1b,$46,1,154,0,146,$1b,$46,0,226,0,146
+         fcb    $1b,$46,0,226,0,141
+
+B5END    equ    *-B5STRT
+
+
+
+*     These fcb's are for board #6
+
+B6STRT   fcb    $1b,$32,1
+         fcb    $1b,$40,1,42,0,8,$1b,$46,0,36,0,8
+         fcb    $1b,$46,0,36,0,180,$1b,$46,1,58,0,180
+         fcb    $1b,$46,1,58,0,177,$1b,$46,0,42,0,177
+         fcb    $1b,$46,0,42,0,11,$1b,$46,1,42,0,11
+         fcb    $1b,$46,1,42,0,8
+
+         fcb    $1b,$40,1,66,0,8,$1b,$46,2,88,0,8
+         fcb    $1b,$46,2,88,0,180,$1b,$46,1,82,0,180
+         fcb    $1b,$46,1,82,0,177,$1b,$46,2,82,0,177
+         fcb    $1b,$46,2,82,0,11,$1b,$46,1,66,0,11
+         fcb    $1b,$46,1,66,0,8
+
+B61      fcb    $1b,$40,0,66,0,24,$1b,$46,0,138,0,24
+         fcb    $1b,$46,0,138,0,47,$1b,$46,0,114,0,47
+         fcb    $1b,$46,0,114,0,29,$1b,$46,0,66,0,29
+         fcb    $1b,$46,0,66,0,24
+
+B62      fcb    $1b,$40,0,162,0,24,$1b,$46,0,234,0,24
+         fcb    $1b,$46,0,234,0,29,$1b,$46,0,186,0,29
+         fcb    $1b,$46,0,186,0,47,$1b,$46,0,162,0,47
+         fcb    $1b,$46,0,162,0,24
+
+B63      fcb    $1b,$40,1,2,0,24,$1b,$48,1,42,0,29
+
+B64      fcb    $1b,$40,1,66,0,24,$1b,$48,1,122,0,29
+
+B65      fcb    $1b,$40,1,146,0,24,$1b,$46,1,218,0,24
+         fcb    $1b,$46,1,218,0,47,$1b,$46,1,194,0,47
+         fcb    $1b,$46,1,194,0,29,$1b,$46,1,146,0,29
+         fcb    $1b,$46,1,146,0,24
+
+B66      fcb    $1b,$40,1,242,0,24,$1b,$46,2,58,0,24
+         fcb    $1b,$46,2,58,0,29,$1b,$46,2,10,0,29
+         fcb    $1b,$46,2,10,0,47,$1b,$46,1,242,0,47
+         fcb    $1b,$46,1,242,0,24
+
+B67      fcb    $1b,$40,0,66,0,42,$1b,$46,0,90,0,42
+         fcb    $1b,$46,0,90,0,60,$1b,$46,0,138,0,60
+         fcb    $1b,$46,0,138,0,65,$1b,$46,0,66,0,65
+         fcb    $1b,$46,0,66,0,42
+
+B68      fcb    $1b,$40,0,210,0,42,$1b,$46,0,234,0,42
+         fcb    $1b,$46,0,234,0,65,$1b,$46,0,162,0,65
+         fcb    $1b,$46,0,162,0,60,$1b,$46,0,210,0,60
+         fcb    $1b,$46,0,210,0,42
+
+B69      fcb    $1b,$40,1,2,0,42,$1b,$46,1,122,0,42
+         fcb    $1b,$46,1,122,0,47,$1b,$46,1,74,0,47
+         fcb    $1b,$46,1,74,0,65,$1b,$46,1,50,0,65
+         fcb    $1b,$46,1,50,0,47,$1b,$46,1,2,0,47
+         fcb    $1b,$46,1,2,0,42
+
+B610     fcb    $1b,$40,1,2,0,60,$1b,$48,1,26,0,65
+
+B611     fcb    $1b,$40,1,98,0,60,$1b,$48,1,122,0,65
+
+B612     fcb    $1b,$40,1,146,0,42,$1b,$46,1,170,0,42
+         fcb    $1b,$46,1,170,0,60,$1b,$46,1,218,0,60
+         fcb    $1b,$46,1,218,0,65,$1b,$46,1,146,0,65
+         fcb    $1b,$46,1,146,0,42
+
+B613     fcb    $1b,$40,2,34,0,42,$1b,$46,2,58,0,42
+         fcb    $1b,$46,2,58,0,65,$1b,$46,1,242,0,65
+         fcb    $1b,$46,1,242,0,60,$1b,$46,2,34,0,60
+         fcb    $1b,$46,2,34,0,42
+
+B614     fcb    $1b,$40,0,66,0,78,$1b,$48,0,90,0,83
+
+B615     fcb    $1b,$40,0,114,0,78,$1b,$46,0,202,0,78
+         fcb    $1b,$46,0,202,0,83,$1b,$46,0,154,0,83
+         fcb    $1b,$46,0,154,0,92,$1b,$46,0,114,0,92
+         fcb    $1b,$46,0,114,0,78
+
+B616     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
+
+B617     fcb    $1b,$40,1,178,0,78,$1b,$46,2,10,0,78
+         fcb    $1b,$46,2,10,0,92,$1b,$46,1,226,0,92
+         fcb    $1b,$46,1,226,0,83,$1b,$46,1,178,0,83
+         fcb    $1b,$46,1,178,0,78
+
+B618     fcb    $1b,$40,2,34,0,78,$1b,$48,2,58,0,83
+
+B619     fcb    $1b,$40,0,66,0,96,$1b,$48,0,90,0,110
+
+B620     fcb    $1b,$40,0,114,0,105,$1b,$46,0,178,0,105
+         fcb    $1b,$46,0,178,0,96,$1b,$46,0,202,0,96
+         fcb    $1b,$46,0,202,0,110,$1b,$46,0,114,0,110
+         fcb    $1b,$46,0,114,0,105
+
+B621     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
+         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
+         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
+         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
+         fcb    $1b,$46,0,226,0,105
+
+B622     fcb    $1b,$40,1,178,0,96,$1b,$46,1,202,0,96
+         fcb    $1b,$46,1,202,0,105,$1b,$46,2,10,0,105
+         fcb    $1b,$46,2,10,0,110,$1b,$46,1,178,0,110
+         fcb    $1b,$46,1,178,0,96
+
+B623     fcb    $1b,$40,2,34,0,96,$1b,$48,2,58,0,110
+
+B624     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
+         fcb    $1b,$46,0,138,0,128,$1b,$46,0,90,0,128
+         fcb    $1b,$46,0,90,0,146,$1b,$46,0,66,0,146
+         fcb    $1b,$46,0,66,0,123
+
+B625     fcb    $1b,$40,0,162,0,123,$1b,$46,0,234,0,123
+         fcb    $1b,$46,0,234,0,146,$1b,$46,0,210,0,146
+         fcb    $1b,$46,0,210,0,128,$1b,$46,0,162,0,128
+         fcb    $1b,$46,0,162,0,123
+
+B626     fcb    $1b,$40,1,2,0,123,$1b,$48,1,26,0,128
+
+B627     fcb    $1b,$40,1,98,0,123,$1b,$48,1,122,0,128
+
+B628     fcb    $1b,$40,1,146,0,123,$1b,$46,1,218,0,123
+         fcb    $1b,$46,1,218,0,128,$1b,$46,1,170,0,128
+         fcb    $1b,$46,1,170,0,146,$1b,$46,1,146,0,146
+         fcb    $1b,$46,1,146,0,123
+
+B629     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
+         fcb    $1b,$46,2,58,0,146,$1b,$46,2,34,0,146
+         fcb    $1b,$46,2,34,0,128,$1b,$46,1,242,0,128
+         fcb    $1b,$46,1,242,0,123
+
+B630     fcb    $1b,$40,0,66,0,159,$1b,$46,0,114,0,159
+         fcb    $1b,$46,0,114,0,141,$1b,$46,0,138,0,141
+         fcb    $1b,$46,0,138,0,164,$1b,$46,0,66,0,164
+         fcb    $1b,$46,0,66,0,159
+
+B631     fcb    $1b,$40,0,162,0,141,$1b,$46,0,186,0,141
+         fcb    $1b,$46,0,186,0,159,$1b,$46,0,234,0,159
+         fcb    $1b,$46,0,234,0,164,$1b,$46,0,162,0,164
+         fcb    $1b,$46,0,162,0,141
+
+B632     fcb    $1b,$40,1,2,0,141,$1b,$48,1,122,0,146
+
+B633     fcb    $1b,$40,1,2,0,159,$1b,$48,1,58,0,164
+
+B634     fcb    $1b,$40,1,82,0,159,$1b,$48,1,122,0,164
+
+B635     fcb    $1b,$40,1,146,0,159,$1b,$46,1,194,0,159
+         fcb    $1b,$46,1,194,0,141,$1b,$46,1,218,0,141
+         fcb    $1b,$46,1,218,0,164,$1b,$46,1,146,0,164
+         fcb    $1b,$46,1,146,0,159
+
+B636     fcb    $1b,$40,1,242,0,141,$1b,$46,2,10,0,141
+         fcb    $1b,$46,2,10,0,159,$1b,$46,2,58,0,159
+         fcb    $1b,$46,2,58,0,164,$1b,$46,1,242,0,164
+         fcb    $1b,$46,1,242,0,141
+
+B6END    equ    *-B6STRT
+
+
+*    (board #7)
+B7STRT   fcb    $1b,$32,1
+         fcb    $1b,$40,0,36,0,83,$1b,$46,0,36,0,8
+         fcb    $1b,$46,2,88,0,8,$1b,$46,2,88,0,83
+         fcb    $1b,$46,2,50,0,83,$1b,$46,2,50,0,74
+         fcb    $1b,$46,2,18,0,74,$1b,$46,2,18,0,69
+         fcb    $1b,$46,2,82,0,69,$1b,$46,2,82,0,11
+         fcb    $1b,$46,1,90,0,11,$1b,$46,1,90,0,29
+         fcb    $1b,$46,1,34,0,29,$1b,$46,1,34,0,11
+         fcb    $1b,$46,0,42,0,11,$1b,$46,0,42,0,69
+         fcb    $1b,$46,0,106,0,69,$1b,$46,0,106,0,74
+         fcb    $1b,$46,0,74,0,74,$1b,$46,0,74,0,83
+         fcb    $1b,$46,0,36,0,83
+*    Bottom half of board
+         fcb    $1b,$40,0,36,0,96,$1b,$46,0,36,0,180
+         fcb    $1b,$46,2,88,0,180,$1b,$46,2,88,0,96
+         fcb    $1b,$46,2,50,0,96,$1b,$46,2,50,0,105
+         fcb    $1b,$46,2,18,0,105,$1b,$46,2,18,0,110
+         fcb    $1b,$46,2,82,0,110,$1b,$46,2,82,0,177
+
+
+         fcb    $1b,$46,0,42,0,177,$1b,$46,0,42,0,110
+         fcb    $1b,$46,0,106,0,110,$1b,$46,0,106,0,105
+         fcb    $1b,$46,0,74,0,105,$1b,$46,0,74,0,96
+         fcb    $1b,$46,0,36,0,96
+
+B71      fcb    $1b,$40,0,66,0,24,$1b,$46,0,106,0,24
+         fcb    $1b,$46,0,106,0,38,$1b,$46,0,74,0,38
+         fcb    $1b,$46,0,74,0,56,$1b,$46,0,66,0,56
+         fcb    $1b,$46,0,66,0,24
+
+B72      fcb    $1b,$40,0,130,0,24,$1b,$46,0,138,0,24
+         fcb    $1b,$46,0,138,0,56,$1b,$46,0,98,0,56
+         fcb    $1b,$46,0,98,0,51,$1b,$46,0,130,0,51
+         fcb    $1b,$46,0,130,0,24
+
+B73      fcb    $1b,$40,0,162,0,24,$1b,$46,1,10,0,24
+         fcb    $1b,$46,1,10,0,29,$1b,$46,0,202,0,29
+         fcb    $1b,$46,0,202,0,38,$1b,$46,0,162,0,38
+         fcb    $1b,$46,0,162,0,24
+
+B74      fcb    $1b,$40,1,114,0,24,$1b,$46,1,218,0,24
+         fcb    $1b,$46,1,218,0,38,$1b,$46,1,178,0,38
+         fcb    $1b,$46,1,178,0,29,$1b,$46,1,114,0,29
+         fcb    $1b,$46,1,114,0,24
+
+B75      fcb    $1b,$40,1,242,0,24,$1b,$46,1,250,0,24
+         fcb    $1b,$46,1,250,0,51,$1b,$46,2,26,0,51
+         fcb    $1b,$46,2,26,0,56,$1b,$46,1,242,0,56
+         fcb    $1b,$46,1,242,0,24
+
+B76      fcb    $1b,$40,2,18,0,24,$1b,$46,2,58,0,24
+         fcb    $1b,$46,2,58,0,56,$1b,$46,2,50,0,56
+         fcb    $1b,$46,2,50,0,38,$1b,$46,2,18,0,38
+         fcb    $1b,$46,2,18,0,24
+
+B77      fcb    $1b,$40,0,162,0,51,$1b,$46,0,202,0,51
+         fcb    $1b,$46,0,202,0,60,$1b,$46,1,10,0,60
+         fcb    $1b,$46,1,10,0,65,$1b,$46,0,162,0,65
+         fcb    $1b,$46,0,162,0,51
+
+B78      fcb    $1b,$40,0,226,0,42,$1b,$46,1,154,0,42
+         fcb    $1b,$46,1,154,0,47,$1b,$46,1,90,0,47
+         fcb    $1b,$46,1,90,0,65,$1b,$46,1,34,0,65
+         fcb    $1b,$46,1,34,0,47,$1b,$46,0,226,0,47
+         fcb    $1b,$46,0,226,0,42
+
+B79      fcb    $1b,$40,1,114,0,60,$1b,$46,1,178,0,60
+         fcb    $1b,$46,1,178,0,51,$1b,$46,1,218,0,51
+         fcb    $1b,$46,1,218,0,65,$1b,$46,1,114,0,65
+         fcb    $1b,$46,1,114,0,60
+
+B710     fcb    $1b,$40,0,98,0,87,$1b,$46,0,130,0,87
+         fcb    $1b,$46,0,130,0,69,$1b,$46,0,138,0,69
+         fcb    $1b,$46,0,138,0,92,$1b,$46,0,98,0,92
+         fcb    $1b,$46,0,98,0,87
+
+B711     fcb    $1b,$40,0,162,0,78,$1b,$48,0,202,0,83
+
+B712     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
+
+B713     fcb    $1b,$40,1,178,0,78,$1b,$48,1,218,0,83
+
+B714     fcb    $1b,$40,1,242,0,69,$1b,$46,1,250,0,69
+         fcb    $1b,$46,1,250,0,87,$1b,$46,2,26,0,87
+         fcb    $1b,$46,2,26,0,92,$1b,$46,1,242,0,92
+         fcb    $1b,$46,1,242,0,69
+
+B715     fcb    $1b,$40,0,130,0,105,$1b,$46,0,162,0,105
+         fcb    $1b,$46,0,162,0,96,$1b,$46,0,202,0,96
+         fcb    $1b,$46,0,202,0,110,$1b,$46,0,130,0,110
+         fcb    $1b,$46,0,130,0,105
+
+B716     fcb    $1b,$40,1,178,0,96,$1b,$46,1,218,0,96
+         fcb    $1b,$46,1,218,0,105,$1b,$46,1,250,0,105
+         fcb    $1b,$46,1,250,0,110,$1b,$46,1,178,0,110
+         fcb    $1b,$46,1,178,0,96
+
+B717     fcb    $1b,$40,0,66,0,123,$1b,$46,0,138,0,123
+         fcb    $1b,$46,0,138,0,128,$1b,$46,0,90,0,128
+         fcb    $1b,$46,0,90,0,146,$1b,$46,0,66,0,146
+         fcb    $1b,$46,0,66,0,123
+
+B718     fcb    $1b,$40,0,162,0,123,$1b,$46,0,226,0,123
+         fcb    $1b,$46,0,226,0,105,$1b,$46,0,250,0,105
+         fcb    $1b,$46,0,250,0,123,$1b,$46,1,26,0,123
+         fcb    $1b,$46,1,26,0,128,$1b,$46,0,162,0,128
+         fcb    $1b,$46,0,162,0,123
+
+B719     fcb    $1b,$40,1,98,0,123,$1b,$46,1,130,0,123
+         fcb    $1b,$46,1,130,0,105,$1b,$46,1,154,0,105
+         fcb    $1b,$46,1,154,0,123,$1b,$46,1,218,0,123
+         fcb    $1b,$46,1,218,0,128,$1b,$46,1,98,0,128
+         fcb    $1b,$46,1,98,0,123
+
+B720     fcb    $1b,$40,1,242,0,123,$1b,$46,2,58,0,123
+         fcb    $1b,$46,2,58,0,146,$1b,$46,2,34,0,146
+         fcb    $1b,$46,2,34,0,128,$1b,$46,1,242,0,128
+         fcb    $1b,$46,1,242,0,123
+
+B721     fcb    $1b,$40,0,66,0,159,$1b,$46,0,114,0,159
+         fcb    $1b,$46,0,114,0,141,$1b,$46,0,154,0,141
+         fcb    $1b,$46,0,154,0,164,$1b,$46,0,66,0,164
+         fcb    $1b,$46,0,66,0,159
+
+B722     fcb    $1b,$40,0,178,0,141,$1b,$46,0,202,0,141
+         fcb    $1b,$46,0,202,0,159,$1b,$46,1,26,0,159
+         fcb    $1b,$46,1,26,0,164,$1b,$46,0,178,0,164
+         fcb    $1b,$46,0,178,0,141
+
+B723     fcb    $1b,$40,1,98,0,159,$1b,$46,1,178,0,159
+         fcb    $1b,$46,1,178,0,141,$1b,$46,1,202,0,141
+         fcb    $1b,$46,1,202,0,164,$1b,$46,1,98,0,164
+         fcb    $1b,$46,1,98,0,159
+
+B724     fcb    $1b,$40,1,226,0,141,$1b,$46,2,10,0,141
+         fcb    $1b,$46,2,10,0,159,$1b,$46,2,58,0,159
+         fcb    $1b,$46,2,58,0,164,$1b,$46,1,226,0,164
+         fcb    $1b,$46,1,226,0,141
+
+B725     fcb    $1b,$40,1,74,0,164,$1b,$46,1,74,0,146
+         fcb    $1b,$46,1,154,0,146,$1b,$46,1,154,0,141
+         fcb    $1b,$46,1,74,0,141,$1b,$46,1,74,0,123
+         fcb    $1b,$46,1,50,0,123,$1b,$46,1,50,0,141
+         fcb    $1b,$46,0,226,0,141,$1b,$46,0,226,0,146
+         fcb    $1b,$46,1,50,0,146,$1b,$46,1,50,0,164
+         fcb    $1b,$46,1,74,0,164
+
+B726     fcb    $1b,$40,1,18,0,105,$1b,$48,1,106,0,110
+
+B7END    equ    *-B7STRT
+
+B8STRT   fcb    $1b,$32,1
+         fcb    $1b,$40,1,42,0,8,$1b,$46,0,36,0,8
+         fcb    $1b,$46,0,36,0,180,$1b,$46,1,58,0,180
+         fcb    $1b,$46,1,58,0,159,$1b,$46,1,50,0,159
+         fcb    $1b,$46,1,50,0,177,$1b,$46,0,42,0,177
+         fcb    $1b,$46,0,42,0,146,$1b,$46,0,90,0,146
+         fcb    $1b,$46,0,90,0,141,$1b,$46,0,42,0,141
+         fcb    $1b,$46,0,42,0,11,$1b,$46,1,34,0,11
+         fcb    $1b,$46,1,34,0,29,$1b,$46,1,42,0,29
+         fcb    $1b,$46,1,42,0,8
+
+         fcb    $1b,$40,1,66,0,8,$1b,$46,2,88,0,8
+         fcb    $1b,$46,2,88,0,180,$1b,$46,1,82,0,180
+         fcb    $1b,$46,1,82,0,159,$1b,$46,1,90,0,159
+         fcb    $1b,$46,1,90,0,177,$1b,$46,2,82,0,177
+         fcb    $1b,$46,2,82,0,146,$1b,$46,2,34,0,146
+         fcb    $1b,$46,2,34,0,141,$1b,$46,2,82,0,141
+         fcb    $1b,$46,2,82,0,11,$1b,$46,1,74,0,11
+         fcb    $1b,$46,1,74,0,29,$1b,$46,1,66,0,29
+         fcb    $1b,$46,1,66,0,8
+
+B81      fcb    $1b,$40,0,66,0,24,$1b,$48,0,90,0,38
+
+B82      fcb    $1b,$40,0,114,0,24,$1b,$48,0,138,0,29
+
+B83      fcb    $1b,$40,0,242,0,24,$1b,$46,1,10,0,24
+         fcb    $1b,$46,1,10,0,42,$1b,$46,1,42,0,42
+         fcb    $1b,$46,1,42,0,47,$1b,$46,0,210,0,47
+         fcb    $1b,$46,0,210,0,42,$1b,$46,0,242,0,42
+         fcb    $1b,$46,0,242,0,24
+
+B84      fcb    $1b,$40,1,98,0,24,$1b,$46,1,122,0,24
+         fcb    $1b,$46,1,122,0,42,$1b,$46,1,154,0,42
+         fcb    $1b,$46,1,154,0,47,$1b,$46,1,66,0,47
+         fcb    $1b,$46,1,66,0,42,$1b,$46,1,98,0,42
+         fcb    $1b,$46,1,98,0,24
+
+B85      fcb    $1b,$40,1,242,0,24,$1b,$48,2,10,0,29
+
+B86      fcb    $1b,$40,2,34,0,24,$1b,$48,2,58,0,38
+
+B87      fcb    $1b,$40,0,66,0,51,$1b,$48,0,90,0,56
+
+B88      fcb    $1b,$40,0,114,0,42,$1b,$48,0,138,0,56
+
+B89      fcb    $1b,$40,0,162,0,24,$1b,$46,0,218,0,24
+         fcb    $1b,$46,0,218,0,29,$1b,$46,0,186,0,29
+         fcb    $1b,$46,0,186,0,60,$1b,$46,0,234,0,60
+         fcb    $1b,$46,0,234,0,65,$1b,$46,0,162,0,65
+         fcb    $1b,$46,0,162,0,24
+
+B810     fcb    $1b,$40,1,2,0,60,$1b,$48,1,106,0,65
+
+B811     fcb    $1b,$40,1,146,0,24,$1b,$46,1,218,0,24
+         fcb    $1b,$46,1,218,0,65,$1b,$46,1,130,0,65
+         fcb    $1b,$46,1,130,0,60,$1b,$46,1,178,0,60
+         fcb    $1b,$46,1,178,0,29,$1b,$46,1,146,0,29
+         fcb    $1b,$46,1,146,0,24
+
+B812     fcb    $1b,$40,1,242,0,42,$1b,$48,2,10,0,56
+
+B813     fcb    $1b,$40,2,34,0,51,$1b,$48,2,58,0,56
+
+B814     fcb    $1b,$40,0,66,0,87,$1b,$48,0,106,0,92
+
+B815     fcb    $1b,$40,0,66,0,69,$1b,$46,0,138,0,69
+         fcb    $1b,$46,0,138,0,110,$1b,$46,0,66,0,110
+         fcb    $1b,$46,0,66,0,105,$1b,$46,0,130,0,105
+         fcb    $1b,$46,0,130,0,74,$1b,$46,0,66,0,74
+         fcb    $1b,$46,0,66,0,69
+
+B816     fcb    $1b,$40,0,162,0,78,$1b,$48,0,202,0,83
+
+B817     fcb    $1b,$40,0,226,0,78,$1b,$48,1,154,0,92
+
+B818     fcb    $1b,$40,1,178,0,78,$1b,$48,1,218,0,83
+
+B819     fcb    $1b,$40,1,242,0,69,$1b,$46,2,58,0,69
+         fcb    $1b,$46,2,58,0,74,$1b,$46,1,250,0,74
+         fcb    $1b,$46,1,250,0,105,$1b,$46,2,58,0,105
+         fcb    $1b,$46,2,58,0,110,$1b,$46,1,242,0,110
+         fcb    $1b,$46,1,242,0,69
+
+B820     fcb    $1b,$40,2,18,0,87,$1b,$48,2,58,0,92
+
+B821     fcb    $1b,$40,0,162,0,96,$1b,$48,0,202,0,110
+
+B822     fcb    $1b,$40,0,226,0,105,$1b,$46,1,154,0,105
+         fcb    $1b,$46,1,154,0,110,$1b,$46,1,74,0,110
+         fcb    $1b,$46,1,74,0,128,$1b,$46,1,50,0,128
+         fcb    $1b,$46,1,50,0,110,$1b,$46,0,226,0,110
+         fcb    $1b,$46,0,226,0,105
+
+B823     fcb    $1b,$40,1,178,0,96,$1b,$48,1,218,0,110
+
+B824     fcb    $1b,$40,0,66,0,123,$1b,$48,0,138,0,128
+
+B825     fcb    $1b,$40,1,242,0,123,$1b,$48,2,58,0,128
+
+B826     fcb    $1b,$40,0,114,0,141,$1b,$46,0,162,0,141
+         fcb    $1b,$46,0,162,0,123,$1b,$46,1,26,0,123
+         fcb    $1b,$46,1,26,0,128,$1b,$46,0,202,0,128
+         fcb    $1b,$46,0,202,0,159,$1b,$46,0,234,0,159
+         fcb    $1b,$46,0,234,0,164,$1b,$46,0,162,0,164
+         fcb    $1b,$46,0,162,0,146,$1b,$46,0,114,0,146
+         fcb    $1b,$46,0,114,0,141
+
+B827     fcb    $1b,$40,0,226,0,141,$1b,$46,1,58,0,141
+         fcb    $1b,$46,1,58,0,146,$1b,$46,1,26,0,146
+         fcb    $1b,$46,1,26,0,164,$1b,$46,1,2,0,164
+         fcb    $1b,$46,1,2,0,146,$1b,$46,0,226,0,146
+         fcb    $1b,$46,0,226,0,141
+
+B828     fcb    $1b,$40,1,82,0,141,$1b,$46,1,170,0,141
+         fcb    $1b,$46,1,170,0,146,$1b,$46,1,138,0,146
+         fcb    $1b,$46,1,138,0,164,$1b,$46,1,114,0,164
+         fcb    $1b,$46,1,114,0,146,$1b,$46,1,82,0,146
+         fcb    $1b,$46,1,82,0,141
+
+B829     fcb    $1b,$40,1,98,0,123,$1b,$46,1,218,0,123
+         fcb    $1b,$46,1,218,0,141,$1b,$46,2,10,0,141
+         fcb    $1b,$46,2,10,0,146,$1b,$46,1,218,0,146
+         fcb    $1b,$46,1,218,0,164,$1b,$46,1,162,0,164
+         fcb    $1b,$46,1,162,0,159,$1b,$46,1,194,0,159
+         fcb    $1b,$46,1,194,0,128,$1b,$46,1,98,0,128
+         fcb    $1b,$46,1,98,0,123
+
+B830     fcb    $1b,$40,0,66,0,159,$1b,$48,0,138,0,164
+
+B831     fcb    $1b,$40,1,242,0,159,$1b,$48,2,58,0,164
+
+B8END    equ    *-B8STRT
+
+*     These fcb bytes are transfered to the score RMB's in MAIN
+*       they are used to fill SCRPOS,SCRASC,SCORE,POINTS,SHCNT,
+*       SCRPO2,SCRAS2 and SCORE2.
+
+SCRSET   fcb    2,64,32
+         fcb    32,32,32,32,32,48
+         fcb    0,0,0,0,0,0,0
+         fcb    2,66,32
+         fcb    32,32,32,32,32,48
+         fcb    0,0,0
+
+SCNSET   fcb    $1b,$32,9
+         fcb    2,70,35,76,118
+         fcb    2,71,36,32
+*
+*           Start of BOARD routines
+*     Using current board number, point to
+*     board draw fcb's and output them
+*
+BOARDB:  lda    BRDNUM      Get board number
+         deca
+         bne    SEL2
+         leax   B1STRT,pcr
+         ldy    #B1END
+         bra    BRDOUT
+SEL2     deca
+         bne    SEL3
+         leax   B2STRT,pcr
+         ldy    #B2END
+         bra    BRDOUT
+SEL3     deca
+         bne    SEL4
+         leax   B3STRT,pcr
+         ldy    #B3END
+         bra    BRDOUT
+SEL4     deca
+         bne    SEL5
+         leax   B4STRT,pcr
+         ldy    #B4END
+         bra    BRDOUT
+SEL5     deca
+         bne    SEL6
+         leax   B5STRT,pcr
+         ldy    #B5END
+         bra    BRDOUT
+SEL6     deca
+         bne    SEL7
+         leax   B6STRT,pcr
+         ldy    #B6END
+         bra    BRDOUT
+SEL7     deca
+         bne    SEL8
+         leax   B7STRT,pcr
+         ldy    #B7END
+         bra    BRDOUT
+SEL8     leax   B8STRT,pcr
+         ldy    #B8END
+
+BRDOUT   lda    PATH,U
+         os9    I$Write
+         lbcs   ERR1
+
+*   Now put board number at bottom of screen
+
+SCNUMB   lda    BRDNUM      Get current board #
+         adda   #48         Convert to ascii
+         leax   SCNNUM,U    Point to string
+         sta    11,X        Put board# in string
+         ldy    #12         Output 12 bytes
+         lbsr   OUTSTR
+
+         rts
+
+*   These routines are used at start of game, after
+*   being used once then BOARDB is used.
+
+BOARDC:  nop
+         leax   FSCORE,U    Point to high score array
+         leax   15,X        Point to highest score
+         leay   HSCASC,U
+         ldb    #6
+HLOOP    lda    ,X+         Transfer file high score
+         sta    ,Y+
+         decb
+         bne    HLOOP
+
+*    These 9 bytes are used to put the board
+*         number on screen
+
+SETSCN   leax   SCNSET,pcr
+         leay   SCNNUM,U
+         ldb    #12         Transfer 12 bytes
+SELOOP   lda    ,X+         Get a byte
+         sta    ,Y+         Transfer it
+         decb
+         bne    SELOOP      Loop till done
+
+         lbsr   BOARDB      Go select start screen
+
+*     Transfer score set bytes to the rmb's in MAIN
+
+SETSCR   leax   SCRSET,pcr  Point to bytes to transfer
+         leay   SCRPOS,U    Point to where bytes go
+         ldb    #28         Transfer 28 bytes
+SLOOP    lda    ,X+         Get a byte
+         sta    ,Y+         Store it
+         decb               Decrement counter
+         bne    SLOOP       Loop till done
+
+*     This routine will place the DOTS and POWER PILLS on the screen
+*      This routine will also be used to reset the screen when
+*      pacman gets caught by the ghosts.
+
+PDOTS:   leax   ARRAY,U     Point to start of array
+         leax   70,X        Set X reg. to first dot location
+         stx    XTEMP,U     Save offset
+         ldd    #52
+         std    PXLOC,U
+         ldd    #16
+         std    PYLOC
+DOTLOP   ldx    XTEMP,U     Get offset from start of array
+         ldb    #56         Prepare to setup for buffer #56
+         lda    ,X          Get a byte from the array
+         beq    STORIT 
+         bmi    MOVE
+         cmpa   #1          Is it an intersection ?
+         beq    STORIT
+         ldb    #40
+         bita   #2          Is it a regular dot ?
+         bne    STORIT
+         bita   #4          Is it a power dot ?
+         beq    MOVE        If not, then just move on
+         ldb    #50         Set for buffer # 50
+STORIT   stb    PBFN,U      Store appropriate Putblk buff #
+         cmpb   #49         Is it a power dot ?
+         bls    NOPOW
+         ldd    PXLOC,U     Get screen X location
+         subd   #2          Subtract 2 from it
+         std    PXLOC,U     put it back
+NOPOW    lbsr   PUTBLK      Go output putblk code
+         lda    PBFN,U
+         cmpa   #49         Did we write a power dot ?
+         bls    MOVE
+         ldd    PXLOC,U
+         addd   #2          Return to original count
+         std    PXLOC,U
+MOVE     ldx    XTEMP,U     Get current array position
+         cmpx   #ARREND-71  Are we done yet ?
+         bge    PUTGHST     If so then leave this routine
+         leax   2,X         Add 2 to offset
+         stx    XTEMP,U     Save new offset
+         ldd    PXLOC,U     Get current screen X location
+         addd   #16         Add 16 to it
+         cmpd   #596        Have we gone past 580 yet ?
+         bne    NOVERT      If not, then go store PXLOC
+         ldx    XTEMP,U
+         leax   139,X
+         stx    XTEMP,U
+         ldd    PYLOC,U     Get current screen Y location
+         addd   #9          Add 9 to it
+         std    PYLOC,U     Save new screen Y location
+         ldd    #52         Reset X location to 52
+NOVERT   std    PXLOC,U     Store new screen X location
+         lbra   DOTLOP      Keep looping
+
+*     Put ghosts on the screen
+PUTGHST  leax   G1OFST,U    Point to ghost #1 table
+         lda    11,X        Get buff #
+         sta    PGBFN,U     Give buffer # to PUTGH
+         ldd    4,X         Get screen Y location
+         std    PGYLOC,U    Set screen Y location
+         ldd    2,X         Get screen X location
+         std    PGXLOC,U    Set screen X location
+         lbsr   PUTGHT      Go do putght
+         leax   G2OFST,U    Point to ghost #2 table
+         lda    11,X        Get buff #
+         sta    PGBFN,U     Set buffer
+         ldd    2,X
+         std    PGXLOC,U    Set screen X location
+         lbsr   PUTGHT      Go do putght
+         leax   G3OFST,U    Point to ghost #3 table
+         lda    11,X        Get buff #
+         sta    PGBFN,U     Set buffer
+         ldd    2,X
+         std    PGXLOC,U    Set screen X location
+         lbsr   PUTGHT      Go do putght
+         leax   G4OFST,U    Point to ghost #4 table
+         lda    11,X        Get buff #
+         sta    PGBFN,U     Set buffer
+         ldd    2,X
+         std    PGXLOC,U    Set screen X location
+         lbsr   PUTGHT      Go do putght
+
+*     Put pacman and extra men on screen
+PUTPAC   ldd    #181
+         std    PYLOC,U     Set screen Y location
+         lda    #37         Buff# for blank pacman
+         sta    PBFN,U      Set up buffer # for PUTBLK
+         ldd    #450        Set left most extra pacman -30
+         std    PXLOC,U         position
+         lda    #5          Set counter
+         ldb    PACMAN      Get # of men left for player
+         pshs   A           Save count
+         pshs   B           Save for later
+PUTLOP   puls   B           Get count
+         incb               Increment it
+         cmpb   #6          
+         bne    FLIPON
+         lda    #28         Set for left facing pacman
+         sta    PBFN,U
+FLIPON   puls   A
+         deca
+         beq    PUTPC2
+         pshs   A
+         pshs   B           Save new count
+         ldd    PXLOC,U     Get last X screen location
+         addd   #30         Move right 30 pixels
+         std    PXLOC,U     Give new value to PUTBLK
+         lbsr   PUTBLK      Go do putblk
+         bra    PUTLOP
+
+PUTPC2   ldd    #94
+         std    PYLOC,U     Set screen Y location
+         ldd    #308
+         std    PXLOC,U     Set screen X location
+         lbsr   PUTBLK      Go do putblk
+
+         rts                Return to main
+
+         ENDSECT
--- a/3rdparty/packages/pacos9/caged90.a	Mon Jan 27 23:49:14 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,366 +0,0 @@
-
-         NAM   Caged
-         TTL   Routines to Cage and Uncage Ghosts
-
-*     Program segment to be compiled using Level II RMA
-*          This is not a mainline program segment
-*                 Written by Larry Olson
-
-         IFP1
-*         use   /dd/defs/os9defs.a
-         ENDc
-
-
-STACK    EQU   100
-
-         PSECT Caged,0,0,0,STACK,GHCHCK
-
-         VSECT
-
-*     Lcoal Variables
-
-XSAVE    RMB   2
-         RMB   STACK
-
-
-*********************************
-*     Global Variables          *
-*                               *
-*        ARRAY     ---   MAIN   *
-*                               *
-*     Ghost tables. One table   *
-*         for each ghost        *
-*        located in MAIN        *
-*                               *
-*        G1OFST    ---   MAIN   *
-*        G1XNEW    ---   MAIN   *
-*        G1YNEW    ---   MAIN   *
-*        G1XOLD    ---   MAIN   *
-*        G1YOLD    ---   MAIN   *
-*        G1STAT    ---   MAIN   *
-*        G1BUFF    ---   MAIN   *
-*        G1TIME    ---   MAIN   *
-*        TIMVAL    ---   MAIN   *
-*        G1DIR     ---   MAIN   *
-*        DIROFF    ---   MAIN   *
-*        G1UPDT    ---   MAIN   *
-*        UPDATE    ---   MAIN   *
-*                               *
-*        GCOUNT    ---   MAIN   *
-*                               *
-*        PBFN      ---   MAIN   *
-*                               *
-*        PXLOC     ---   MAIN   *
-*        PYLOC     ---   MAIN   *
-*        POFSET    ---   MAIN   *
-*                               *
-*     Global Labels             *
-*                               *
-*        PUTBLK    ---   MAIN   *
-*        ERR1      ---   MAIN   *
-*        GHMOVE    ---   GHOSTS *
-*        HUNT      ---   GHOSTS *
-*********************************
-
-
-         ENDSECT
-
-
-*     Ghost is caged, so check timer value
-
-CAGED:   ldb   10,X       Check status
-         cmpb  #-3        Are eyes free of cage?
-         lbeq  MVEYES     Go move eyes
-         ldb   12,X       Get timer value for ghost
-         decb             Decrement it
-         stb   12,X       Put it back
-         beq   MOVOUT     Start moving ghost out
-         cmpb  #10        Are we close to zero?
-         bls   GHFLSH     Go flash ghost
-
-         ldx   #2
-         os9   F$Sleep
-         lbcs  ERR1
-
-         rts              If not, return to MAIN
-
-*     Ghost is caged and close to coming out so blink it
-*       or if status=-2 then go blink eyes
-*     X reg points to start of current ghost table
-*     A reg contains current ghost status byte
-
-GHFLSH   cmpb  #-2        Is ghost dead? Only eyes?
-         lbeq  EYFLSH     If so, then go flash eyes
-         ldd   2,X        Get ghost scrn X location
-         std   PGXLOC     Put it in PUTGHT string
-         ldd   4,X        Get ghost scrn Y location
-         std   PGYLOC     Put it in PUTGHT string
-         ldb   #1         Buffer # for blank ghost
-         stb   PGBFN      Put it in PUTGHT string
-         stx   XSAVE      Save X register
-         lbsr  PUTGHT     Go erase ghost
-         ldx   XSAVE      Restore X register
-         ldb   11,X       Get ghost buffer #
-         stb   PGBFN      Put it in PUTGHT string
-         lbsr  PUTGHT     Put ghost back on screen
-         lbra  RETURN     Return to MAIN
-
-*     Ghost is available to come out, so set status
-*     flags and open cage door
-*             X reg. points to start of ghost table
-*             A reg. contains ghost status byte
-*             B reg. contains ghost timer value
-
-MOVOUT   clra             0=Caged but moving out
-         sta   10,X       Save new ghost status
-         ldb   #22        22=Buff # for blank door
-         stb   PBFN       Put it in PUTBLK string
-         ldd   #307       X location of door
-         std   PXLOC      Put it in PUTBLK string
-         ldd   #78        Y location of door
-         std   PYLOC      Put it in PUTBLK string
-         lbsr  PUTBLK     Go erase door
-         lbra  RETURN     Return to MAIN
-
-*     Check for direction to move ghost
-*             X reg. points to start of current ghost table
-*             A reg. contains current ghost status
-
-MOVING:  ldd   0,X        Get array offset for ghost
-         cmpd  #1552      Are we moving up?
-         lbls  MUP        If so, then keep moving up
-         cmpd  #1621      Are we on center line?
-         lbeq  MUP        If so, then go move up
-         blo   MRIGHT     If lower, then move right
-         subd  #1         Move 1 position left in array
-         std   0,X        Save new offset position
-         ldd   2,X        Get ghost scrn X location
-         subd  #8         Move 8 pixels to the left
-         std   2,X        Save new scrn X location
-         std   6,X        Also save in OLD X location
-         std   PGXLOC     Also put it in PUTGHT
-         ldd   4,X        Get ghost scrn Y location
-         std   8,X        Also put it in OLD Y location
-         std   PGYLOC     Put it in PUTGHT
-         lda   11,X       Get current ghost buffer#
-         adda  #1         Add 1 for left facing ghost
-         sta   PGBFN      Put it in PUTGHT string
-         lbsr  PUTGHT     Put ghost back on screen
-         lbra  RETURN     Return to MAIN
-
-*     Ghost is left of center so move to the right
-*           X reg. points to start of current ghost table
-*           D reg. contains array position offset of ghost
-
-MRIGHT   addd  #1         Move 1 position to right
-         std   0,X        Save new offset position
-         ldd   6,X        Get G1XOLD
-         cmpd  2,X        Compare it with G1XNEW
-         beq   SKIPMR
-         addd  #8         Add 8 to OLD location
-         std   6,X        Put result back in G1XOLD
-SKIPMR   ldd   2,X        Get new scrn X location
-         addd  #8         Move 8 pixels to the right
-         std   2,X        Save new scrn X location
-         ldd   6,X        Get OLD scrn X location
-         std   PGXLOC     Also put it in PUTGHT
-         ldd   4,X        Get NEW scrn Y location
-         std   8,X        G1YOLD=G1YNEW
-         std   PGYLOC     Also put it in PUTGHT
-         lda   11,X       Get current ghost buffer #
-         adda  #2         Add 2,for right facing ghost
-         sta   PGBFN      Put it in PUTGHT string
-         lbsr  PUTGHT     Put ghost back on screen
-         lbra  RETURN     Return to MAIN
-
-*     Ghost is on center line so move up
-*            X reg. points to start of current ghost table
-*            D reg. contains array position offset of ghost
-
-MUP      cmpd  #1345      Are we out of cage?
-         beq   FREEGH     Yes? go set ghost free flags
-         subd  #69        Move 1 position up in array
-         std   0,X        Save new array offset
-         ldd   4,X         in the up direction
-         subd  #3         Move up 3 pixels
-         std   4,X        Save new scrn Y location
-         std   8,X        Also put it in OLD Y
-         std   PGYLOC     Also load PUTGHT string
-         ldd   2,X        Get G1XNEW
-         std   6,X        G1XOLD=G1XNEW
-         std   PGXLOC     Also put it in PUTGHT
-         lda   11,X       Get current ghost buffer#
-         sta   PGBFN      Put it in PUTGHT string
-         lbsr  PUTGHT     Go put ghost on screen
-         lbra  RETURN     Return to MAIN
-
-*     Ghost is out of cage, so close door and set flags
-*             X reg. points to start of current ghost table
-*             D reg. contains ghost array position offset
-
-FREEGH   ldb   #1         1=Free ghost
-         stb   10,X       Update status for this ghost
-
-         leay  ARRAY,U    Point to start of array
-         ldd   0,X        Get ghost array ofset
-         leay  D,Y        Move Y reg. to that spot
-
-         bsr   HUNT       Go find direction of pacman
-
-         ldb   #23        23=Buffer# for cage door
-         stb   PGBFN      Put it in PUTGHT string
-         ldd   #307       307=Scrn X location of door
-         std   PGXLOC     Put it in PUTGHT string
-         ldd   #78        78=Scrn Y location of door
-         std   PGYLOC     Put it in PUTGHT string
-         lbsr  PUTGHT     Go draw cage door
-RETURN   rts
-
-
-
-EYFLSH   rts
-
-*     This routine is used to compare the ghosts
-*     location to pacman's location and then set
-*     the ghost direction pointers to move away
-*     from pacman.
-*     ON ENTRY:
-*       X reg. points to top of current ghost table
-
-RUN:     ldd   0,X        Get ghost array offset
-         addd  #69        Move down 1 line
-         cmpd  POFSET     Compare ghost to pacman offset
-         lblo  HUNTUP     Pacman is down or to right
-         subd  #69
-         cmpd  POFSET
-         blo   HUNTLF
-         subd  #69
-         cmpd  POFSET
-         lbhi  HUNTDN
-         bra   HUNTRT
-
-*     This routine is used to compare the ghosts
-*     location to pacman's location and then set
-*     the ghost direction pointers to move toward
-*     pacman.
-*     ON ENTRY:
-*       X reg. points to top of current ghost table 
-*     First run random number generator
-
-HUNT:    lbsr  RANDNM     Go pick random number
-         cmpa  #30
-         bhi   HUNT2
-
-         ldd   0,X        Get ghost array offset 
-         addd  #69        Move down 1 line
-         cmpd  POFSET     Compare ghost to pacman offset
-         lblo  HUNTUP     Pacman is down move up
-         subd  #69        Move back to offset location
-         cmpd  POFSET     Compare ghost to pacman offset
-         blo   HUNTLF     Pacman to right, move left
-         subd  #69        Move up 1 line
-         cmpd  POFSET     Compare ghost to pacman offset
-         bhi   HUNTDN     Pacman is up, move down
-         bra   HUNTRT     go move right
-
-HUNT2    ldd   0,X        Get ghost array offset
-         addd  #69        Move down 1 line
-         cmpd  POFSET     Compare ghost to pacman offset
-         blo   HUNTDN     Pacman is down or to right
-         subd  #69        Move back to offset location
-         cmpd  POFSET     Compare ghost to pacman offset
-         blo   HUNTRT     Pacman is to right of ghost
-         subd  #69        Move up 1 line
-         cmpd  POFSET     Compare ghost to pacman offset
-         bhi   HUNTUP     Pacman is above the ghost
-
-HUNTLF   ldb   #1
-         cmpb  15,X       Did we go right last time?
-         beq   HLFUP
-         lda   #1         Set dir. LEFT
-         ldb   -1,Y
-         bpl   SETDIR
-HLFUP    lda   #0         Set dir. UP
-         ldb   -69,Y
-         bpl   SETDIR
-         lda   #3         SET dir. DOWN
-         ldb   69,Y
-         bpl   SETDIR
-         lda   #2         SET dir. RIGHT
-         bra   SETDIR
-
-HUNTRT   ldb   #-1
-         cmpb  15,X       Did we go left last time?
-         beq   HRTDN
-         lda   #2         Set dir.offset to right
-         ldb   1,Y        Look 1 space to right in array
-         bpl   SETDIR     Found move, Go set direction
-HRTDN    lda   #3         Set dir. DOWN
-         ldb   69,Y       Look 1 line down in array
-         bpl   SETDIR     Found move, Go set direction
-         lda   #0         Set dir. offset to UP
-         ldb   -69,Y      Look 1 line up in array
-         bpl   SETDIR     Found a move, go set direction
-         lda   #1         Set dir. offset to left
-         bra   SETDIR     Go set direction
-*     Look UP,LEFT,RIGHT and DOWN
-HUNTUP   ldb   #69
-         cmpb  15,X       Did we go down last time?
-         beq   HUPLF
-         lda   #0         Direction offset (UP)
-         ldb   -69,Y      Look 1 line up in array
-         bpl   SETDIR     Found move,Go set direction
-HUPLF    lda   #1         Direction offset (LEFT)
-         ldb   -1,Y       Look 1 space to left in array
-         bpl   SETDIR     Found move, Go set direction
-         lda   #2         Direction offset (RIGHT)
-         ldb   1,Y        Look 1 space to right in array
-         bpl   SETDIR     Found move, Go set direction
-         lda   #3         Only dir. left (DOWN)
-         bra   SETDIR     Go set direction
-*     Look DOWN,LEFT,RIGHT and UP
-HUNTDN   ldb   #-69
-         cmpb  15,X       Did we go up last time?
-         beq   HDNRT
-         lda   #3         Direction offset (DOWN)
-         ldb   69,Y       Look 1 space down in array
-         bpl   SETDIR     Found move, Go set direction
-HDNRT    lda   #2         Direction offset (RIGHT)
-         ldb   1,Y        Look 1 space to right in array
-         bpl   SETDIR     Found move, Go set direction
-         lda   #1         Direction offset (LEFT)
-         ldb   -1,Y       Look 1 space to left in array
-         bpl   SETDIR     Found move, Go set direction
-         lda   #0         Only dir. left (UP)
-*     Move found, So set direction flags
-SETDIR   sta   14,X       Save dir.# (0,1,2,3)
-         bne   SETD2
-         ldb   #-69       -69
-         stb   15,X       Put it in GARDIR
-         bra   DONE
-
-SETD2    deca
-         bne   SETD3
-         ldb   #-1        -1
-         stb   15,X       Put it in GARDIR
-         bra   DONE
-
-SETD3    deca
-         bne   SETD4
-         ldb   #1         +1
-         stb   15,X       Put it in GARDIR
-         bra   DONE
-
-SETD4    ldb   #69        +69
-         stb   15,X       Put it in GARDIR
-
-DONE     rts
-
-*    Move ghost eyes
-
-MVEYES:  rts
-
-
-         ENDSECT
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/pacos9/caged90.as	Sat Feb 08 01:03:26 2014 +0100
@@ -0,0 +1,366 @@
+
+         NAM   Caged
+         TTL   Routines to Cage and Uncage Ghosts
+
+*     Program segment to be compiled using Level II RMA
+*          This is not a mainline program segment
+*                 Written by Larry Olson
+
+         IFP1
+*         use   /dd/defs/os9defs.a
+         ENDc
+
+
+STACK    EQU   100
+
+         PSECT Caged,0,0,0,STACK,GHCHCK
+
+         VSECT
+
+*     Lcoal Variables
+
+XSAVE    RMB   2
+         RMB   STACK
+
+
+*********************************
+*     Global Variables          *
+*                               *
+*        ARRAY     ---   MAIN   *
+*                               *
+*     Ghost tables. One table   *
+*         for each ghost        *
+*        located in MAIN        *
+*                               *
+*        G1OFST    ---   MAIN   *
+*        G1XNEW    ---   MAIN   *
+*        G1YNEW    ---   MAIN   *
+*        G1XOLD    ---   MAIN   *
+*        G1YOLD    ---   MAIN   *
+*        G1STAT    ---   MAIN   *
+*        G1BUFF    ---   MAIN   *
+*        G1TIME    ---   MAIN   *
+*        TIMVAL    ---   MAIN   *
+*        G1DIR     ---   MAIN   *
+*        DIROFF    ---   MAIN   *
+*        G1UPDT    ---   MAIN   *
+*        UPDATE    ---   MAIN   *
+*                               *
+*        GCOUNT    ---   MAIN   *
+*                               *
+*        PBFN      ---   MAIN   *
+*                               *
+*        PXLOC     ---   MAIN   *
+*        PYLOC     ---   MAIN   *
+*        POFSET    ---   MAIN   *
+*                               *
+*     Global Labels             *
+*                               *
+*        PUTBLK    ---   MAIN   *
+*        ERR1      ---   MAIN   *
+*        GHMOVE    ---   GHOSTS *
+*        HUNT      ---   GHOSTS *
+*********************************
+
+
+         ENDSECT
+
+
+*     Ghost is caged, so check timer value
+
+CAGED:   ldb   10,X       Check status
+         cmpb  #-3        Are eyes free of cage?
+         lbeq  MVEYES     Go move eyes
+         ldb   12,X       Get timer value for ghost
+         decb             Decrement it
+         stb   12,X       Put it back
+         beq   MOVOUT     Start moving ghost out
+         cmpb  #10        Are we close to zero?
+         bls   GHFLSH     Go flash ghost
+
+         ldx   #2
+         os9   F$Sleep
+         lbcs  ERR1
+
+         rts              If not, return to MAIN
+
+*     Ghost is caged and close to coming out so blink it
+*       or if status=-2 then go blink eyes
+*     X reg points to start of current ghost table
+*     A reg contains current ghost status byte
+
+GHFLSH   cmpb  #-2        Is ghost dead? Only eyes?
+         lbeq  EYFLSH     If so, then go flash eyes
+         ldd   2,X        Get ghost scrn X location
+         std   PGXLOC     Put it in PUTGHT string
+         ldd   4,X        Get ghost scrn Y location
+         std   PGYLOC     Put it in PUTGHT string
+         ldb   #1         Buffer # for blank ghost
+         stb   PGBFN      Put it in PUTGHT string
+         stx   XSAVE      Save X register
+         lbsr  PUTGHT     Go erase ghost
+         ldx   XSAVE      Restore X register
+         ldb   11,X       Get ghost buffer #
+         stb   PGBFN      Put it in PUTGHT string
+         lbsr  PUTGHT     Put ghost back on screen
+         lbra  RETURN     Return to MAIN
+
+*     Ghost is available to come out, so set status
+*     flags and open cage door
+*             X reg. points to start of ghost table
+*             A reg. contains ghost status byte
+*             B reg. contains ghost timer value
+
+MOVOUT   clra             0=Caged but moving out
+         sta   10,X       Save new ghost status
+         ldb   #22        22=Buff # for blank door
+         stb   PBFN       Put it in PUTBLK string
+         ldd   #307       X location of door
+         std   PXLOC      Put it in PUTBLK string
+         ldd   #78        Y location of door
+         std   PYLOC      Put it in PUTBLK string
+         lbsr  PUTBLK     Go erase door
+         lbra  RETURN     Return to MAIN
+
+*     Check for direction to move ghost
+*             X reg. points to start of current ghost table
+*             A reg. contains current ghost status
+
+MOVING:  ldd   0,X        Get array offset for ghost
+         cmpd  #1552      Are we moving up?
+         lbls  MUP        If so, then keep moving up
+         cmpd  #1621      Are we on center line?
+         lbeq  MUP        If so, then go move up
+         blo   MRIGHT     If lower, then move right
+         subd  #1         Move 1 position left in array
+         std   0,X        Save new offset position
+         ldd   2,X        Get ghost scrn X location
+         subd  #8         Move 8 pixels to the left
+         std   2,X        Save new scrn X location
+         std   6,X        Also save in OLD X location
+         std   PGXLOC     Also put it in PUTGHT
+         ldd   4,X        Get ghost scrn Y location
+         std   8,X        Also put it in OLD Y location
+         std   PGYLOC     Put it in PUTGHT
+         lda   11,X       Get current ghost buffer#
+         adda  #1         Add 1 for left facing ghost
+         sta   PGBFN      Put it in PUTGHT string
+         lbsr  PUTGHT     Put ghost back on screen
+         lbra  RETURN     Return to MAIN
+
+*     Ghost is left of center so move to the right
+*           X reg. points to start of current ghost table
+*           D reg. contains array position offset of ghost
+
+MRIGHT   addd  #1         Move 1 position to right
+         std   0,X        Save new offset position
+         ldd   6,X        Get G1XOLD
+         cmpd  2,X        Compare it with G1XNEW
+         beq   SKIPMR
+         addd  #8         Add 8 to OLD location
+         std   6,X        Put result back in G1XOLD
+SKIPMR   ldd   2,X        Get new scrn X location
+         addd  #8         Move 8 pixels to the right
+         std   2,X        Save new scrn X location
+         ldd   6,X        Get OLD scrn X location
+         std   PGXLOC     Also put it in PUTGHT
+         ldd   4,X        Get NEW scrn Y location
+         std   8,X        G1YOLD=G1YNEW
+         std   PGYLOC     Also put it in PUTGHT
+         lda   11,X       Get current ghost buffer #
+         adda  #2         Add 2,for right facing ghost
+         sta   PGBFN      Put it in PUTGHT string
+         lbsr  PUTGHT     Put ghost back on screen
+         lbra  RETURN     Return to MAIN
+
+*     Ghost is on center line so move up
+*            X reg. points to start of current ghost table
+*            D reg. contains array position offset of ghost
+
+MUP      cmpd  #1345      Are we out of cage?
+         beq   FREEGH     Yes? go set ghost free flags
+         subd  #69        Move 1 position up in array
+         std   0,X        Save new array offset
+         ldd   4,X         in the up direction
+         subd  #3         Move up 3 pixels
+         std   4,X        Save new scrn Y location
+         std   8,X        Also put it in OLD Y
+         std   PGYLOC     Also load PUTGHT string
+         ldd   2,X        Get G1XNEW
+         std   6,X        G1XOLD=G1XNEW
+         std   PGXLOC     Also put it in PUTGHT
+         lda   11,X       Get current ghost buffer#
+         sta   PGBFN      Put it in PUTGHT string
+         lbsr  PUTGHT     Go put ghost on screen
+         lbra  RETURN     Return to MAIN
+
+*     Ghost is out of cage, so close door and set flags
+*             X reg. points to start of current ghost table
+*             D reg. contains ghost array position offset
+
+FREEGH   ldb   #1         1=Free ghost
+         stb   10,X       Update status for this ghost
+
+         leay  ARRAY,U    Point to start of array
+         ldd   0,X        Get ghost array ofset
+         leay  D,Y        Move Y reg. to that spot
+
+         bsr   HUNT       Go find direction of pacman
+
+         ldb   #23        23=Buffer# for cage door
+         stb   PGBFN      Put it in PUTGHT string
+         ldd   #307       307=Scrn X location of door
+         std   PGXLOC     Put it in PUTGHT string
+         ldd   #78        78=Scrn Y location of door
+         std   PGYLOC     Put it in PUTGHT string
+         lbsr  PUTGHT     Go draw cage door
+RETURN   rts
+
+
+
+EYFLSH   rts
+
+*     This routine is used to compare the ghosts
+*     location to pacman's location and then set
+*     the ghost direction pointers to move away
+*     from pacman.
+*     ON ENTRY:
+*       X reg. points to top of current ghost table
+
+RUN:     ldd   0,X        Get ghost array offset
+         addd  #69        Move down 1 line
+         cmpd  POFSET     Compare ghost to pacman offset
+         lblo  HUNTUP     Pacman is down or to right
+         subd  #69
+         cmpd  POFSET
+         blo   HUNTLF
+         subd  #69
+         cmpd  POFSET
+         lbhi  HUNTDN
+         bra   HUNTRT
+
+*     This routine is used to compare the ghosts
+*     location to pacman's location and then set
+*     the ghost direction pointers to move toward
+*     pacman.
+*     ON ENTRY:
+*       X reg. points to top of current ghost table 
+*     First run random number generator
+
+HUNT:    lbsr  RANDNM     Go pick random number
+         cmpa  #30
+         bhi   HUNT2
+
+         ldd   0,X        Get ghost array offset 
+         addd  #69        Move down 1 line
+         cmpd  POFSET     Compare ghost to pacman offset
+         lblo  HUNTUP     Pacman is down move up
+         subd  #69        Move back to offset location
+         cmpd  POFSET     Compare ghost to pacman offset
+         blo   HUNTLF     Pacman to right, move left
+         subd  #69        Move up 1 line
+         cmpd  POFSET     Compare ghost to pacman offset
+         bhi   HUNTDN     Pacman is up, move down
+         bra   HUNTRT     go move right
+
+HUNT2    ldd   0,X        Get ghost array offset
+         addd  #69        Move down 1 line
+         cmpd  POFSET     Compare ghost to pacman offset
+         blo   HUNTDN     Pacman is down or to right
+         subd  #69        Move back to offset location
+         cmpd  POFSET     Compare ghost to pacman offset
+         blo   HUNTRT     Pacman is to right of ghost
+         subd  #69        Move up 1 line
+         cmpd  POFSET     Compare ghost to pacman offset
+         bhi   HUNTUP     Pacman is above the ghost
+
+HUNTLF   ldb   #1
+         cmpb  15,X       Did we go right last time?
+         beq   HLFUP
+         lda   #1         Set dir. LEFT
+         ldb   -1,Y
+         bpl   SETDIR
+HLFUP    lda   #0         Set dir. UP
+         ldb   -69,Y
+         bpl   SETDIR
+         lda   #3         SET dir. DOWN
+         ldb   69,Y
+         bpl   SETDIR
+         lda   #2         SET dir. RIGHT
+         bra   SETDIR
+
+HUNTRT   ldb   #-1
+         cmpb  15,X       Did we go left last time?
+         beq   HRTDN
+         lda   #2         Set dir.offset to right
+         ldb   1,Y        Look 1 space to right in array
+         bpl   SETDIR     Found move, Go set direction
+HRTDN    lda   #3         Set dir. DOWN
+         ldb   69,Y       Look 1 line down in array
+         bpl   SETDIR     Found move, Go set direction
+         lda   #0         Set dir. offset to UP
+         ldb   -69,Y      Look 1 line up in array
+         bpl   SETDIR     Found a move, go set direction
+         lda   #1         Set dir. offset to left
+         bra   SETDIR     Go set direction
+*     Look UP,LEFT,RIGHT and DOWN
+HUNTUP   ldb   #69
+         cmpb  15,X       Did we go down last time?
+         beq   HUPLF
+         lda   #0         Direction offset (UP)
+         ldb   -69,Y      Look 1 line up in array
+         bpl   SETDIR     Found move,Go set direction
+HUPLF    lda   #1         Direction offset (LEFT)
+         ldb   -1,Y       Look 1 space to left in array
+         bpl   SETDIR     Found move, Go set direction
+         lda   #2         Direction offset (RIGHT)
+         ldb   1,Y        Look 1 space to right in array
+         bpl   SETDIR     Found move, Go set direction
+         lda   #3         Only dir. left (DOWN)
+         bra   SETDIR     Go set direction
+*     Look DOWN,LEFT,RIGHT and UP
+HUNTDN   ldb   #-69
+         cmpb  15,X       Did we go up last time?
+         beq   HDNRT
+         lda   #3         Direction offset (DOWN)
+         ldb   69,Y       Look 1 space down in array
+         bpl   SETDIR     Found move, Go set direction
+HDNRT    lda   #2         Direction offset (RIGHT)
+         ldb   1,Y        Look 1 space to right in array
+         bpl   SETDIR     Found move, Go set direction
+         lda   #1         Direction offset (LEFT)
+         ldb   -1,Y       Look 1 space to left in array
+         bpl   SETDIR     Found move, Go set direction
+         lda   #0         Only dir. left (UP)
+*     Move found, So set direction flags
+SETDIR   sta   14,X       Save dir.# (0,1,2,3)
+         bne   SETD2
+         ldb   #-69       -69
+         stb   15,X       Put it in GARDIR
+         bra   DONE
+
+SETD2    deca
+         bne   SETD3
+         ldb   #-1        -1
+         stb   15,X       Put it in GARDIR
+         bra   DONE
+
+SETD3    deca
+         bne   SETD4
+         ldb   #1         +1
+         stb   15,X       Put it in GARDIR
+         bra   DONE
+
+SETD4    ldb   #69        +69
+         stb   15,X       Put it in GARDIR
+
+DONE     rts
+
+*    Move ghost eyes
+
+MVEYES:  rts
+
+
+         ENDSECT
+
+
--- a/3rdparty/packages/pacos9/check90.a	Mon Jan 27 23:49:14 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,297 +0,0 @@
-
-         NAM   Check
-         TTL   Routines to check & react to status
-
-*     Program segment to be compiled using Level II RMA
-*          This is not a mainline program segment
-*                 Written by Larry Olson
-
-         IFP1
-*         use   /dd/defs/os9defs.a
-         ENDc
-
-STACK    EQU   100
-
-         PSECT Check,0,0,2,STACK,CHECKS
-
-         VSECT
-
-*     Lcoal Variables
-
-
-         RMB   STACK
-
-
-         ENDSECT
-
-
-PALST1:  fcb   $1b,$31,3,18
-         fcb   $1b,$31,4,36
-         fcb   $1b,$31,5,63
-         fcb   $1b,$31,6,25
-
-PALST2:  fcb   $1b,$31,3,53
-         fcb   $1b,$31,4,53
-         fcb   $1b,$31,5,53
-         fcb   $1b,$31,6,53
-
-
-CHECKS:  lda   HITFLG     Check hit flag
-         lbeq  CHKGH      If 0 the continue
-         lbpl  KILPAC     Pacman is hit, so kill him
-
-*    Kill ghost routine
-*    Make noise
-         ldd   #1550      Set starting frequency
-         std   SNDPR2     Save it in variable
-KLOOP    ldx   #$3201     Set amplitude & duration
-         ldd   SNDPR2
-         addd  #250
-         cmpd  #4050      Are we done yet?
-         beq   KILGHT
-         std   SNDPR2     Save new value
-         tfr   D,Y        Put value in Y reg.
-         lbsr  SND        Go make noise
-         bra   KLOOP
-
-KILGHT   leax  G1OFST,U   Point to ghost tables
-         lda   GHTHIT     Get # of ghost destroyed
-         leax  A,X        Move to that ghosts table
-         stx   XSAVE      Save ghost table pointer
-         ldb   #-3
-         stb   10,X       Set status -3(killed)
-*    Erase ghost
-         ldd   2,X        Get ghost scrn X location
-         std   PGXLOC     Give it to PUTGHT
-         ldd   4,X        Get ghost scrn Y location
-         std   PGYLOC     Give it to PUTGHT
-         lda   #1
-         sta   PGBFN      Set buff# to blank ghost
-         lbsr  PUTGHT     Go erase ghost
-*    Reset ghost table
-         lda   GHTHIT     Get ghost counter
-         leay  GHTABL,U   Point to backup tables
-         leay  A,Y        Use current ghost data
-         ldx   XSAVE      Restore X reg.
-         ldb   #20        Transfer 20 bytes
-RSLOOP   lda   ,Y+        Get a byte
-         sta   ,X+        Transfer it
-         decb             Decrement counter
-         bne   RSLOOP     Loop till 20 are done
-*    Reset palette for ghost
-         ldx   XSAVE      Point X reg. to ghost table
-         ldd   18,X       Get palette number & color
-         std   PALBT1+2   Put them in string
-         leax  PALBT1,U   Point to bytes to output
-         ldy   #4         Output 4 bytes
-         lbsr  OUTSTR     Go output them
-*    Draw ghost in cage
-         ldx   XSAVE      Point X reg. to ghost table
-         ldd   2,X        Get ghost scrn X location
-         std   PGXLOC     Put it in PUTGHT string
-         ldd   4,X        Get ghost scrn Y location
-         std   PGYLOC     Put it in PUTGHT string
-         lda   11,X       Get ghost buffer number
-         sta   PGBFN      Put it in PUTGHT string
-         lbsr  PUTGHT     Go put buffer to screen
-*    Reset hit flag
-         clr   HITFLG     Reset hit flag
-*    Add points to score
-         lda   #50        50 points for ghost
-         sta   POINTS+2
-         lbsr  ADDUP      Go add to score
-         lbra  MAIN1      Return to main
-
-KILPAC:  ldx   #$3209     Set amplitude & duration
-         ldy   #2000      Set frequency
-         lbsr  SND        Go make sound
-         ldd   PXNEW      Get pacman scrn X location
-         std   PXLOC      Give it to PUTBLK
-         ldd   PYNEW      Get pacman scrn Y location
-         std   PYLOC      Give it to PUTBLK
-         lda   #59        Starting buffer -1
-         sta   PBFN       Give it to PUTBLK
-         ldd   #4050      Set frequency
-         std   SNDPR1
-HLOOP    inc   PBFN       Increment buffer number
-         lbsr  PUTBLK     Put object on screen
-         ldx   #$3205     Set amplitude & duration
-         ldd   SNDPR1     Get frequency
-         subd  #150       Subtract 150 from it
-         std   SNDPR1     Put it back
-         tfr   D,Y        Also put it in Y reg.
-         lbsr  SND        Go make sound
-         lda   PBFN       Check buffer number
-         cmpa  #67        Are we done ?
-         bne   HLOOP      If not, then keep looking
-         lda   #37        37 = Blank pacman
-         sta   PBFN       Give it to PUTBLK
-         lbsr  PUTBLK     Put it on screen
-
-*    Go to delete pacman routines in MAIN
-
-         lbra  DELPAC     Go delete pacman
-
-
-*    Check if current ghost can be moved, if so then move it
-*     Two ghost moves will be made for each pacman move
-*      so the ghosts will be half as slow as pacman.
-*    If we made 4 ghost moves for each pacman move then the
-*     ghosts would move at the same speed as pacman.
-
-CHKGH    lda   POWFLG     Check power pill flag
-         lbeq  MOVGH
-         deca             Decrement flag (counter)
-         sta   POWFLG     Put it back
-         lbeq  PALRST     If 0 then reset palettes
-TIMCHK   cmpa  #25        Are we close to zero?
-         lbhi  MOVGH      If not, go move ghost
-         leax  PALST1,pcr  Point to palette reset string
-         ldy   #16        Output 16 bytes
-         lbsr  OUTSTR     Go output code bytes
-
-         clrb
-         stb   STRLGH     Set string length to 0
-         leax  STRING,U   Point to where string goes
-         leay  G1OFST,U   Move to top of ghost tables
-         lda   10,Y       Get status for #1 ghost
-         cmpa  #2         Is ghost chasing ?
-         bne   PLCHG2     If so then branch
-         ldd   #$1b31     
-         std   ,X++       PUT 2 bytes in string 
-         ldd   #$043d
-         std   ,X++       Put 2 bytes in string
-         inc   STRLGH     Increment counter
-PLCHG2   lda   30,Y       Get status for ghost #2
-         cmpa  #2         Is ghost chasing ?
-         bne   PLCHG3     If so then branch
-         ldd   #$1b31
-         std   ,X++       Put 2 bytes in string
-         ldd   #$063d
-         std   ,X++       Put 2 bytes in string
-         inc   STRLGH     Increment counter
-PLCHG3   lda   50,Y       Get status for ghost #3
-         cmpa  #2         Is ghost chasing ?
-         bne   PLCHG4     If so then branch
-         ldd   #$1b31
-         std   ,X++       Put 2 bytes in string
-         ldd   #$053d
-         std   ,X++       Put 2 bytes in string
-         inc   STRLGH     Increment counter
-PLCHG4   lda   70,Y       Get status for ghost #4
-         cmpa  #2         Is it chasing ?
-         bne   PLTEST     If so then branch
-         ldd   #$1b31
-         std   ,X++       Put 2 bytes in string
-         ldd   #$033d
-         std   ,X         Put 2 bytes in string
-         inc   STRLGH     Increment counter
-PLTEST   ldb   STRLGH     Get counter value
-         beq   PLDONE     If 0 then we're done
-         lda   #4         Set multiplier
-         mul              Mul. 4 x STRLGH
-         tfr   D,Y        Put result in Y reg.
-         leax  STRING,U   Point to start of string
-         lbsr  OUTSTR     Go output string
-PLDONE   bra   MOVGH
-
-
-PALRST   leax  PALST1,pcr  Point to palette reset bytes
-         ldy   #16        Output 16 bytes
-         lbsr  OUTSTR     Go output bytes
-*    Now reset ghosts status from running to chasing
-         leax  G1OFST,U
-         ldb   #1
-         lda   10,X
-         cmpa  #2         Is ghost running?
-         bne   STRST2
-         stb   10,X       Set to chasing
-STRST2   lda   30,X
-         cmpa  #2         Is ghost running?
-         bne   STRST3
-         stb   30,X       Set to chasing
-STRST3   lda   50,X
-         cmpa  #2         Is ghost running?
-         bne   STRST4
-         stb   50,X       Set to chasing
-STRST4   lda   70,X
-         cmpa  #2         Is ghost running?
-         bne   MOVGH
-         stb   70,X       Set to chasing
-
-*    Make 3 ghost moves for each pacman move
-*    This means that the 4 ghosts will be a
-*    little slower on the screen than pacman
-
-MOVGH    lbsr  GHCHCK     Go check for ghost move
-         lbsr  GHCHCK     Do it again
-
-*    Bonus Routines
-BONUS    lda   BONFLG     Check bonus flag
-         beq   PUTBON     Go put bonus on screen
-         dec   BONTIM     Decrement bonus timer
-         bne   MOVGH2
-*    Erase bonus from screen
-ERSBON   ldd   #310
-         std   PXLOC
-         ldd   #95
-         std   PYLOC
-         lda   #69
-         sta   PBFN
-         lbsr  PUTBLK     Go erase bonus
-         leax  ARRAY,U
-         ldd   #1966
-         leax  D,X
-         clr   ,X         Erase bonus from array
-         clr   BONFLG     Reset bonus flag
-         lda   #150
-         sta   BONTIM     Reset bonus timer
-         bra   LEAVE
-
-*    Put bonus on screen
-*
-PUTBON   lda   BONCNT     Check counter
-         cmpa  #10        Has player got 10 yet ?
-         beq   MOVGH2     If so, then no more
-         dec   BONTIM     Decrement timer
-         bne   MOVGH2
-         lbsr  RANDNM     Go pick random number
-         cmpa  #200
-         bhi   LEAVE
-         lda   BONBUF     Get bonus buffer #
-         inca
-         cmpa  #73
-         bne   PUTBN2
-         lda   #70
-PUTBN2   sta   BONBUF
-         sta   PBFN
-         ldd   #310
-         std   PXLOC
-         ldd   #95
-         std   PYLOC
-         lbsr  PUTBLK     Put bonus on screen
-         leax  ARRAY,U
-         ldd   #1966
-         leax  D,X
-         lda   #6
-         sta   ,X         Put bonus in array
-         lda   #50
-         sta   BONTIM     Set bonus timer
-         inc   BONFLG     Set bonus flag
-         bra   LEAVE
-
-*  If power pill flag is set then slow ghosts down
-
-MOVGH2   lbsr  GHCHCK     One more time
-*         tst   POWFLG
-*         bne   LEAVE
-*         lbsr  GHCHCK     One more time
-
-*    Go return to main loop
-
-LEAVE    lbra  MAIN1      Return to MAIN loop
-
-
-         ENDSECT
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/pacos9/check90.as	Sat Feb 08 01:03:26 2014 +0100
@@ -0,0 +1,297 @@
+
+         NAM   Check
+         TTL   Routines to check & react to status
+
+*     Program segment to be compiled using Level II RMA
+*          This is not a mainline program segment
+*                 Written by Larry Olson
+
+         IFP1
+*         use   /dd/defs/os9defs.a
+         ENDc
+
+STACK    EQU   100
+
+         PSECT Check,0,0,2,STACK,CHECKS
+
+         VSECT
+
+*     Lcoal Variables
+
+
+         RMB   STACK
+
+
+         ENDSECT
+
+
+PALST1:  fcb   $1b,$31,3,18
+         fcb   $1b,$31,4,36
+         fcb   $1b,$31,5,63
+         fcb   $1b,$31,6,25
+
+PALST2:  fcb   $1b,$31,3,53
+         fcb   $1b,$31,4,53
+         fcb   $1b,$31,5,53
+         fcb   $1b,$31,6,53
+
+
+CHECKS:  lda   HITFLG     Check hit flag
+         lbeq  CHKGH      If 0 the continue
+         lbpl  KILPAC     Pacman is hit, so kill him
+
+*    Kill ghost routine
+*    Make noise
+         ldd   #1550      Set starting frequency
+         std   SNDPR2     Save it in variable
+KLOOP    ldx   #$3201     Set amplitude & duration
+         ldd   SNDPR2
+         addd  #250
+         cmpd  #4050      Are we done yet?
+         beq   KILGHT
+         std   SNDPR2     Save new value
+         tfr   D,Y        Put value in Y reg.
+         lbsr  SND        Go make noise
+         bra   KLOOP
+
+KILGHT   leax  G1OFST,U   Point to ghost tables
+         lda   GHTHIT     Get # of ghost destroyed
+         leax  A,X        Move to that ghosts table
+         stx   XSAVE      Save ghost table pointer
+         ldb   #-3
+         stb   10,X       Set status -3(killed)
+*    Erase ghost
+         ldd   2,X        Get ghost scrn X location
+         std   PGXLOC     Give it to PUTGHT
+         ldd   4,X        Get ghost scrn Y location
+         std   PGYLOC     Give it to PUTGHT
+         lda   #1
+         sta   PGBFN      Set buff# to blank ghost
+         lbsr  PUTGHT     Go erase ghost
+*    Reset ghost table
+         lda   GHTHIT     Get ghost counter
+         leay  GHTABL,U   Point to backup tables
+         leay  A,Y        Use current ghost data
+         ldx   XSAVE      Restore X reg.
+         ldb   #20        Transfer 20 bytes
+RSLOOP   lda   ,Y+        Get a byte
+         sta   ,X+        Transfer it
+         decb             Decrement counter
+         bne   RSLOOP     Loop till 20 are done
+*    Reset palette for ghost
+         ldx   XSAVE      Point X reg. to ghost table
+         ldd   18,X       Get palette number & color
+         std   PALBT1+2   Put them in string
+         leax  PALBT1,U   Point to bytes to output
+         ldy   #4         Output 4 bytes
+         lbsr  OUTSTR     Go output them
+*    Draw ghost in cage
+         ldx   XSAVE      Point X reg. to ghost table
+         ldd   2,X        Get ghost scrn X location
+         std   PGXLOC     Put it in PUTGHT string
+         ldd   4,X        Get ghost scrn Y location
+         std   PGYLOC     Put it in PUTGHT string
+         lda   11,X       Get ghost buffer number
+         sta   PGBFN      Put it in PUTGHT string
+         lbsr  PUTGHT     Go put buffer to screen
+*    Reset hit flag
+         clr   HITFLG     Reset hit flag
+*    Add points to score
+         lda   #50        50 points for ghost
+         sta   POINTS+2
+         lbsr  ADDUP      Go add to score
+         lbra  MAIN1      Return to main
+
+KILPAC:  ldx   #$3209     Set amplitude & duration
+         ldy   #2000      Set frequency
+         lbsr  SND        Go make sound
+         ldd   PXNEW      Get pacman scrn X location
+         std   PXLOC      Give it to PUTBLK
+         ldd   PYNEW      Get pacman scrn Y location
+         std   PYLOC      Give it to PUTBLK
+         lda   #59        Starting buffer -1
+         sta   PBFN       Give it to PUTBLK
+         ldd   #4050      Set frequency
+         std   SNDPR1
+HLOOP    inc   PBFN       Increment buffer number
+         lbsr  PUTBLK     Put object on screen
+         ldx   #$3205     Set amplitude & duration
+         ldd   SNDPR1     Get frequency
+         subd  #150       Subtract 150 from it
+         std   SNDPR1     Put it back
+         tfr   D,Y        Also put it in Y reg.
+         lbsr  SND        Go make sound
+         lda   PBFN       Check buffer number
+         cmpa  #67        Are we done ?
+         bne   HLOOP      If not, then keep looking
+         lda   #37        37 = Blank pacman
+         sta   PBFN       Give it to PUTBLK
+         lbsr  PUTBLK     Put it on screen
+
+*    Go to delete pacman routines in MAIN
+
+         lbra  DELPAC     Go delete pacman
+
+
+*    Check if current ghost can be moved, if so then move it
+*     Two ghost moves will be made for each pacman move
+*      so the ghosts will be half as slow as pacman.
+*    If we made 4 ghost moves for each pacman move then the
+*     ghosts would move at the same speed as pacman.
+
+CHKGH    lda   POWFLG     Check power pill flag
+         lbeq  MOVGH
+         deca             Decrement flag (counter)
+         sta   POWFLG     Put it back
+         lbeq  PALRST     If 0 then reset palettes
+TIMCHK   cmpa  #25        Are we close to zero?
+         lbhi  MOVGH      If not, go move ghost
+         leax  PALST1,pcr  Point to palette reset string
+         ldy   #16        Output 16 bytes
+         lbsr  OUTSTR     Go output code bytes
+
+         clrb
+         stb   STRLGH     Set string length to 0
+         leax  STRING,U   Point to where string goes
+         leay  G1OFST,U   Move to top of ghost tables
+         lda   10,Y       Get status for #1 ghost
+         cmpa  #2         Is ghost chasing ?
+         bne   PLCHG2     If so then branch
+         ldd   #$1b31     
+         std   ,X++       PUT 2 bytes in string 
+         ldd   #$043d
+         std   ,X++       Put 2 bytes in string
+         inc   STRLGH     Increment counter
+PLCHG2   lda   30,Y       Get status for ghost #2
+         cmpa  #2         Is ghost chasing ?
+         bne   PLCHG3     If so then branch
+         ldd   #$1b31
+         std   ,X++       Put 2 bytes in string
+         ldd   #$063d
+         std   ,X++       Put 2 bytes in string
+         inc   STRLGH     Increment counter
+PLCHG3   lda   50,Y       Get status for ghost #3
+         cmpa  #2         Is ghost chasing ?
+         bne   PLCHG4     If so then branch
+         ldd   #$1b31
+         std   ,X++       Put 2 bytes in string
+         ldd   #$053d
+         std   ,X++       Put 2 bytes in string
+         inc   STRLGH     Increment counter
+PLCHG4   lda   70,Y       Get status for ghost #4
+         cmpa  #2         Is it chasing ?
+         bne   PLTEST     If so then branch
+         ldd   #$1b31
+         std   ,X++       Put 2 bytes in string
+         ldd   #$033d
+         std   ,X         Put 2 bytes in string
+         inc   STRLGH     Increment counter
+PLTEST   ldb   STRLGH     Get counter value
+         beq   PLDONE     If 0 then we're done
+         lda   #4         Set multiplier
+         mul              Mul. 4 x STRLGH
+         tfr   D,Y        Put result in Y reg.
+         leax  STRING,U   Point to start of string
+         lbsr  OUTSTR     Go output string
+PLDONE   bra   MOVGH
+
+
+PALRST   leax  PALST1,pcr  Point to palette reset bytes
+         ldy   #16        Output 16 bytes
+         lbsr  OUTSTR     Go output bytes
+*    Now reset ghosts status from running to chasing
+         leax  G1OFST,U
+         ldb   #1
+         lda   10,X
+         cmpa  #2         Is ghost running?
+         bne   STRST2
+         stb   10,X       Set to chasing
+STRST2   lda   30,X
+         cmpa  #2         Is ghost running?
+         bne   STRST3
+         stb   30,X       Set to chasing
+STRST3   lda   50,X
+         cmpa  #2         Is ghost running?
+         bne   STRST4
+         stb   50,X       Set to chasing
+STRST4   lda   70,X
+         cmpa  #2         Is ghost running?
+         bne   MOVGH
+         stb   70,X       Set to chasing
+
+*    Make 3 ghost moves for each pacman move
+*    This means that the 4 ghosts will be a
+*    little slower on the screen than pacman
+
+MOVGH    lbsr  GHCHCK     Go check for ghost move
+         lbsr  GHCHCK     Do it again
+
+*    Bonus Routines
+BONUS    lda   BONFLG     Check bonus flag
+         beq   PUTBON     Go put bonus on screen
+         dec   BONTIM     Decrement bonus timer
+         bne   MOVGH2
+*    Erase bonus from screen
+ERSBON   ldd   #310
+         std   PXLOC
+         ldd   #95
+         std   PYLOC
+         lda   #69
+         sta   PBFN
+         lbsr  PUTBLK     Go erase bonus
+         leax  ARRAY,U
+         ldd   #1966
+         leax  D,X
+         clr   ,X         Erase bonus from array
+         clr   BONFLG     Reset bonus flag
+         lda   #150
+         sta   BONTIM     Reset bonus timer
+         bra   LEAVE
+
+*    Put bonus on screen
+*
+PUTBON   lda   BONCNT     Check counter
+         cmpa  #10        Has player got 10 yet ?
+         beq   MOVGH2     If so, then no more
+         dec   BONTIM     Decrement timer
+         bne   MOVGH2
+         lbsr  RANDNM     Go pick random number
+         cmpa  #200
+         bhi   LEAVE
+         lda   BONBUF     Get bonus buffer #
+         inca
+         cmpa  #73
+         bne   PUTBN2
+         lda   #70
+PUTBN2   sta   BONBUF
+         sta   PBFN
+         ldd   #310
+         std   PXLOC
+         ldd   #95
+         std   PYLOC
+         lbsr  PUTBLK     Put bonus on screen
+         leax  ARRAY,U
+         ldd   #1966
+         leax  D,X
+         lda   #6
+         sta   ,X         Put bonus in array
+         lda   #50
+         sta   BONTIM     Set bonus timer
+         inc   BONFLG     Set bonus flag
+         bra   LEAVE
+
+*  If power pill flag is set then slow ghosts down
+
+MOVGH2   lbsr  GHCHCK     One more time
+*         tst   POWFLG
+*         bne   LEAVE
+*         lbsr  GHCHCK     One more time
+
+*    Go return to main loop
+
+LEAVE    lbra  MAIN1      Return to MAIN loop
+
+
+         ENDSECT
+
+
--- a/3rdparty/packages/pacos9/ghosts90.a	Mon Jan 27 23:49:14 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,524 +0,0 @@
-
-         NAM   Ghosts
-         TTL   Routines to move Ghosts
-
-*     Program segment to be compiled using Level II RMA
-*          This is not a mainline program segment
-*                 Written by Larry Olson
-
-         IFP1
-*         use   /dd/defs/os9defs.a
-         ENDc
-
-STACK    EQU   250
-
-         PSECT Ghosts,0,0,2,STACK,GHCHCK
-
-         VSECT
-
-*     Lcoal Variables
-
-         RMB   STACK
-
-
-         ENDSECT
-
-
-*     Subtract 20 from ghost counter 
-*     Then check ghost status to determine what action
-*     is to be preformed on ghost.
-
-GHCHCK:  lda   GCOUNT     Get ghost counter
-         suba  #20        Subtract 20 from it
-         bpl   CKSTAT     If =>0 then check status
-         lda   #60        Reset counter to zero
-CKSTAT   sta   GCOUNT     Save ghost counter
-         leax  G1OFST,U   Point to start of tables
-         leax  A,X        Move to current ghost table
-         lda   10,X       Get ghost status
-         lbeq  MOVING     If so then move it again
-         lbmi  CAGED      Check caged status
-
-GHMOVE   leay  ARRAY,U    Point to start of array
-         ldd   ,X         Get ghost array offset
-         leay  D,Y        Move to that spot in array
-         lda   ,Y         Get the byte there
-         bita  #1         Check for intersection
-         beq   NOWALL     If = then no intersection
-
-         lda   10,X       Check status
-         cmpa  #1         Are we chasing pacman?
-         beq   NORUN
-         lbsr  RUN        If not, then run
-         bra   NOWALL
-NORUN    ldd   ,X
-         lbsr  HUNT       At intersection, so go hunt
-
-*      This routine is used to calc and add the offsets and
-*      fill the PUTBLK string, in order to move the ghosts
-*      Old ghost will be erased when new ghost is put on
-*      the screen.
- 
-NOWALL   lda   14,X       Get direction flag
-         bne   LEFT
-*     Move ghost up screen
-UP       ldd   ,X         Get ghost array offset
-         cmpd  #33        At top of screen?
-         bne   STGH1
-
-         pshs  X          Save X reg.
-
-         lda   #1         Set for blank ghost
-         sta   PGBFN
-         ldd   #300
-         std   PGXLOC
-         ldd   #10
-         std   PGYLOC
-         lbsr  PUTGHT
-
-         puls  X          Restore X reg.
-
-         ldd   #317       Set new X screen location
-         std   2,X
-         std   6,X
-         std   PGXLOC
-         ldd   #169       Set new Y screen location
-         std   4,X
-         std   8,X
-         std   PGYLOC
-         ldd   #3692      Set new array location
-         std   ,X
-         ldb   11,X
-         stb   PGBFN
-         lbra  PUTGH
-
-STGH1    subd  #69        Move up one space in array
-         std   ,X         Save new array location
-         ldd   2,X        Get NEW scrn X location
-         std   6,X        G1XOLD = G1XNEW
-         std   PGXLOC     Put it in PUTGHT string
-         ldd   4,X        Get NEW scrn Y location
-         subd  #3         Move up 3 scrn lines
-         std   4,X        Save new scrn Y location
-         std   8,X        G1YOLD = G1YNEW
-         std   PGYLOC     Also put it in PUTGHS
-         ldb   11,X       Get ghost buffer #
-         stb   PGBFN      Put it in PUTGHS string
-         lbra  PUTGH      Go put ghost back on scrn
-*     Move ghost left on screen
-LEFT     deca             Decrement direction flag
-         bne   RIGHT
-         ldd   ,X         Get ghost array offset
-
-         cmpd  #1725      Off screen to left ?
-         bne   STGH2
-
-         pshs  X          Save X reg.
-
-         lda   #1         Set for blank ghost
-         sta   PGBFN
-         ldd   #37
-         std   PGXLOC
-         ldd   #85
-         std   PGYLOC
-         lbsr  PUTGHT
-
-         puls  X          Restore X reg.
-
-         ldd   #581
-         std   2,X
-         std   6,X
-         std   PGXLOC
-         ldd   #1793
-         std   ,X
-         lda   11,X
-         adda  #1
-         sta   PGBFN 
-         lbra  PUTGH
-
-STGH2    subd  #1         Move left 1 space in array
-         std   ,X         Save new array location
-         ldd   2,X        Get NEW scrn X location
-         subd  #8         Move 8 pixels left on scrn
-         std   2,X        Save NEW scrn X location
-         std   6,X        G1XOLD = G1XNEW
-         std   PGXLOC     Also put it in PUTGHT
-         ldd   4,X        Get ghost scrn Y location
-         std   8,X        G1YOLD = G1YNEW
-         std   PGYLOC     Put it in PUTGHT string
-         ldb   11,X       Get ghost buffer #
-         addb  #1         Add direction offset
-         stb   PGBFN      Put it in PUTGHT string
-         lbra  PUTGH      Go put ghost back on scrn
-*     Move ghost right on screen
-RIGHT    deca             Decrement direction flag
-         bne   DOWN
-         ldd   ,X         Get ghost array offset
-
-         cmpd  #1793      Off screen to right ?
-         bne   STGH3      If not, continue
-
-         pshs  X          Save X reg.
-
-         lda   #1         Set for blank ghost
-         sta   PGBFN
-         ldd   #581
-         std   PGXLOC
-         ldd   #85
-         std   PGYLOC
-         lbsr  PUTGHT
-
-         puls  X         Restore X reg.
-
-         ldd   #37
-         std   2,X
-         subd  #8
-         std   6,X
-         std   PGXLOC
-         ldd   #1725
-         std   ,X
-         lda   11,X
-         adda  #2
-         sta   PGBFN
-         lbra  PUTGH
-
-STGH3    addd  #1         Move 1 space right in array
-         std   ,X         Save new array location
-         ldd   6,X        Get OLD scrn X location
-         cmpd  2,X        Compare it to NEW
-         beq   SKIPRT
-         addd  #8         Add 8 to it
-         std   6,X        Save in OLD scrn x location
-SKIPRT   ldd   2,X        Get NEW scrn X location
-         addd  #8         Move 8 pixels right on scrn
-         std   2,X        Save NEW scrn X location
-         ldd   6,X        Get OLD scrn X location
-         std   PGXLOC     Also put it in PUTGHT
-         ldd   4,X        Get ghost scrn Y location
-         std   8,X        G1YOLD = G1YNEW
-         std   PGYLOC     Put it in PUTGHT string
-         ldb   11,X       Get ghost buffer #
-         addb  #2         Add direction offset
-         stb   PGBFN      Put it in PUTGHT string
-         bra   PUTGH      Go put ghost back on scrn
-*     Move ghost down on screen
-DOWN     ldd   ,X         Get ghost array offset
-         cmpd  #3692      At bottom of screen?
-         bne   STGH4
-
-         pshs  X          Save X reg.
-
-         lda   #1
-         sta   PGBFN
-         ldd   #317
-         std   PGXLOC
-         ldd   #169
-         std   PGYLOC
-         lbsr  PUTGHT
-
-         puls  X          Restore X reg.
-
-         ldd   #301
-         std   2,X
-         std   6,X
-         std   PGXLOC
-         ldd   #07
-         std   8,X
-         std   PGYLOC
-         addd  #3
-         std   4,X
-         ldd   #33
-         std   ,X
-         ldb   11,X
-         addb  #3
-         stb   PGBFN
-         bra   PUTGH
-
-STGH4    addd  #69        Move 1 line down in array
-         std   ,X         Save new array location
-         ldd   8,X        Get OLD Y location
-         cmpd  4,X        Compare it to NEW Y
-         beq   SKIPDN
-         addd  #3         Add 3 to it
-         std   8,X        Put result back in OLD Y
-SKIPDN   ldd   4,X        Get NEW Y location
-         addd  #3         Add 3 to it
-         std   4,X        Put result back in NEW Y
-         ldd   8,X        Get OLD scrn Y location 
-         std   PGYLOC     Also put it in PUTGHT
-         ldd   2,X        Get ghost scrn X location
-         std   6,X        G1XOLD = G1XNEW
-         std   PGXLOC     Put it in PUTGHT string
-         ldb   11,X       Get ghost buffer #
-         addb  #3         Add direction offset
-         stb   PGBFN      Put it in PUTGHT string
-
-*     Before we put ghost back on screen we first
-*     check to see if we got pacman, if so, set flag
-*     put any dots back on screen that were erased
-*     by the ghost when it moved
-
-PUTGH    ldd   2,X        Get ghost scrn X location
-         addd  #20
-         cmpd  PXNEW      Compare to left side of pman
-         ble   GOLOOK
-         ldd   PXNEW      Get pacman scrn X location
-         addd  #22
-         cmpd  2,X        Compare to left side of ghost
-         ble   GOLOOK
-         ldd   4,X        Get ghost scrn Y location
-         addd  #10
-         cmpd  PYNEW      Compare to top of pacman
-         ble   GOLOOK
-         ldd   PYNEW      Get pacman scrn Y location
-         addd  #10
-         cmpd  4,X        Compare to top of ghost
-         ble   GOLOOK
-
-         lda   #1
-         sta   HITFLG     Set HIT FLAG
-         ldb   10,X       Check status
-         cmpb  #1
-         beq   GOLOOK
-         lda   #-1
-         sta   HITFLG
-         lda   GCOUNT
-         sta   GHTHIT
-
-GOLOOK   ldd   ,X
-         cmpd  #33
-         ble   SKIPDT
-         cmpd  #3692
-         bge   SKIPDT
-         bsr   LOOK       Go look for dots to restore
-         cmpa  #0         A will be >0 if dot found
-         beq   SKIPDT     Branch if no dot to put back
-         sta   PDBFN      Put dot buff# in PUTDOT
-
-*     Put both dot(or pill) and ghost
-*     This routine will output both DOTCODE & PUTCODE
-
-         leax  PUTGHS,U   Point to Putghost's rmb's
-         ldy   #16        8 for dot & 8 for ghost
-         lda   PATH       Set output path
-         os9   I$Write    Output PUTBLK code
-         lbcs  ERR1       Branch if any errors
-         rts              Return to MAIN
-
-SKIPDT   lbsr  PUTGHT     Go put ghost back on screen
-MAINRT   rts              Return to MAIN
-
-*     The following routines look for any dots to
-*          replace after ghosts move on.
-
-LOOK     leay  ARRAY,U    Point to start of array
-         lda   14,X       Get direction flag
-         lbeq  LOOKDN     Ghost moving up, look down
-         deca
-         lbeq  LOOKRT     Ghost moving left, look right
-         deca
-         lbeq  LOOKLF     Ghost moving right, look left
-*     Moving DOWN, so look UP
-LOOKUP   ldd   ,X         Get ghost array offset
-         subd  #69        Move up 1 space in array
-         leay  D,Y        Point Y reg. here
-         ldb   ,Y         Look at byte there
-         lbmi  NODOT
-         ldb   -69,Y      Look at byte 1 line up
-         lbmi  NODOT
-         cmpb  #1         Check for intersection
-         ble   LOOKU3     Go look 3 spaces up
-         cmpb  #3         Is it a power dot?
-         bhi   POWU2
-         ldd   2,X        Get ghost scrn X location
-         addd  #7         Move right 7 pixels
-         std   PDXLOC     Put result in PUTDOT
-         ldd   4,X        Get ghost scrn Y location
-         subd  #3         Move 3 pixel up
-         std   PDYLOC     Put result in PUTDOT
-         lda   #42        Set flag(Buff# for dot)
-         rts              Return to PUTGH
-POWU2    ldd   2,X        Get ghost scrn X location
-         addd  #5
-         std   PDXLOC     Put result in PUTDOT
-         ldd   4,X        Get ghost scrn Y location
-         subd  #3
-         std   PDYLOC     Put result in PUTDOT
-         lda   #52        Set flag(Buff# for power dot)
-         rts              Return to PUTGH
-
-LOOKU3   ldb   -138,Y     Get byte there
-         cmpb  #1
-         lble  NODOT
-         cmpb  #3         Is it a wall?
-         bhi   POWU3
-         ldd   2,X        Get ghost scrn X location
-         addd  #7         Add offset to dot location
-         std   PDXLOC     Put result in PUTDOT string
-         ldd   4,X        Get ghost scrn Y location
-         subd  #6         Subtract offset
-         std   PDYLOC     Put result in PUTDOT string
-         lda   #40        Set flag (Also Buff #)
-         rts
-
-POWU3    ldd   2,X        Get ghost scrn X location
-         addd  #5         Add offset to dot location
-         std   PDXLOC     Put result in PUTDOT string
-         ldd   4,X        Get ghost scrn Y location
-         subd  #6         Subtract offset
-         std   PDYLOC     Put result in PUTDOT string
-         lda   #50        Set flag (Also Buff #)
-         rts
-
-*    The following routines are not commented because
-*    they are all identical to the LOOKUP routines
-*    except for the use of different buffer numbers
-*    and different offset values.
-*
-*   Moving UP, so look down
-
-LOOKDN   ldd   ,X
-         addd  #69
-         leay  D,Y
-         ldb   ,Y
-         lbmi  NODOT
-         ldb   69,Y
-         lbmi  NODOT
-         cmpb  #1
-         ble   LOOKD3
-         cmpb  #3
-         bhi   POWD2
-         ldd   2,X
-         addd  #7
-         std   PDXLOC
-         ldd   4,X        
-         addd  #9
-         std   PDYLOC
-         lda   #43
-         rts
-
-POWD2    ldd   2,X
-         addd  #5
-         std   PDXLOC
-         ldd   4,X
-         addd  #9
-         std   PDYLOC
-         lda   #53
-         rts
-
-LOOKD3   ldb   138,Y
-         cmpb  #1
-         lble  NODOT
-         cmpb  #3
-         bhi   POWD3
-         ldd   2,X
-         addd  #7
-         std   PDXLOC
-         ldd   4,X
-         addd  #12
-         std   PDYLOC
-         lda   #40
-         rts
-
-POWD3    ldd   2,X
-         addd  #5
-         std   PDXLOC
-         ldd   4,X
-         addd  #12
-         std   PDYLOC
-         lda   #50
-         rts
-
-*    Moving LEFT, so look right
-
-LOOKRT   ldd   ,X
-         leay  D,Y
-         ldb   1,Y
-         lbmi  NODOT
-         ldb   2,Y
-         cmpb  #1
-         lble  NODOT
-         cmpb  #3
-         bhi   POWR2
-         ldd   2,X
-         addd  #23
-         std   PDXLOC
-         ldd   4,X
-         addd  #3
-         std   PDYLOC
-         lda   #40
-         rts
-
-POWR2    cmpb  #6
-         beq   BONR2
-         ldd   2,X
-         addd  #21
-         std   PDXLOC
-         ldd   4,X
-         addd  #3
-         std   PDYLOC
-         lda   #50
-         rts
-
-BONR2    ldd   2,X
-         addd  #15
-         std   PDXLOC
-         ldd   4,X
-         addd  #1
-         std   PDYLOC
-         lda   BONBUF
-         rts
-
-*    Moving RIGHT, so look left
-
-LOOKLF   ldd   ,X
-         leay  D,Y
-         ldb   -1,Y
-         bmi   NODOT
-         ldb   -2,Y 
-         cmpb  #1
-         ble   NODOT
-         cmpb  #3
-         bhi   POWL2
-         ldd   2,X
-         subd  #9
-         std   PDXLOC
-         ldd   4,X
-         addd  #3
-         std   PDYLOC
-         lda   #40
-         rts
-
-POWL2    cmpb  #6
-         beq   BONL2
-         ldd   2,X
-         subd  #11
-         std   PDXLOC
-         ldd   4,X
-         addd  #3
-         std   PDYLOC
-         lda   #50
-         rts
-
-BONL2    ldd   2,X
-         subd  #17
-         std   PDXLOC
-         ldd   4,X
-         addd  #1
-         std   PDYLOC
-         lda   BONBUF
-         rts
-
-*    This is the common exit for all the LOOK
-*    routines if no dot was found to replace.
-*    Clearing the A reg. is a flag for the
-*    PUTGH routine to let it know that no dot
-*    needs to be put back on the screen  
-
-NODOT    clra             Clear flag
-         rts
-
-
-         ENDSECT
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/pacos9/ghosts90.as	Sat Feb 08 01:03:26 2014 +0100
@@ -0,0 +1,524 @@
+
+         NAM   Ghosts
+         TTL   Routines to move Ghosts
+
+*     Program segment to be compiled using Level II RMA
+*          This is not a mainline program segment
+*                 Written by Larry Olson
+
+         IFP1
+*         use   /dd/defs/os9defs.a
+         ENDc
+
+STACK    EQU   250
+
+         PSECT Ghosts,0,0,2,STACK,GHCHCK
+
+         VSECT
+
+*     Lcoal Variables
+
+         RMB   STACK
+
+
+         ENDSECT
+
+
+*     Subtract 20 from ghost counter 
+*     Then check ghost status to determine what action
+*     is to be preformed on ghost.
+
+GHCHCK:  lda   GCOUNT     Get ghost counter
+         suba  #20        Subtract 20 from it
+         bpl   CKSTAT     If =>0 then check status
+         lda   #60        Reset counter to zero
+CKSTAT   sta   GCOUNT     Save ghost counter
+         leax  G1OFST,U   Point to start of tables
+         leax  A,X        Move to current ghost table
+         lda   10,X       Get ghost status
+         lbeq  MOVING     If so then move it again
+         lbmi  CAGED      Check caged status
+
+GHMOVE   leay  ARRAY,U    Point to start of array
+         ldd   ,X         Get ghost array offset
+         leay  D,Y        Move to that spot in array
+         lda   ,Y         Get the byte there
+         bita  #1         Check for intersection
+         beq   NOWALL     If = then no intersection
+
+         lda   10,X       Check status
+         cmpa  #1         Are we chasing pacman?
+         beq   NORUN
+         lbsr  RUN        If not, then run
+         bra   NOWALL
+NORUN    ldd   ,X
+         lbsr  HUNT       At intersection, so go hunt
+
+*      This routine is used to calc and add the offsets and
+*      fill the PUTBLK string, in order to move the ghosts
+*      Old ghost will be erased when new ghost is put on
+*      the screen.
+ 
+NOWALL   lda   14,X       Get direction flag
+         bne   LEFT
+*     Move ghost up screen
+UP       ldd   ,X         Get ghost array offset
+         cmpd  #33        At top of screen?
+         bne   STGH1
+
+         pshs  X          Save X reg.
+
+         lda   #1         Set for blank ghost
+         sta   PGBFN
+         ldd   #300
+         std   PGXLOC
+         ldd   #10
+         std   PGYLOC
+         lbsr  PUTGHT
+
+         puls  X          Restore X reg.
+
+         ldd   #317       Set new X screen location
+         std   2,X
+         std   6,X
+         std   PGXLOC
+         ldd   #169       Set new Y screen location
+         std   4,X
+         std   8,X
+         std   PGYLOC
+         ldd   #3692      Set new array location
+         std   ,X
+         ldb   11,X
+         stb   PGBFN
+         lbra  PUTGH
+
+STGH1    subd  #69        Move up one space in array
+         std   ,X         Save new array location
+         ldd   2,X        Get NEW scrn X location
+         std   6,X        G1XOLD = G1XNEW
+         std   PGXLOC     Put it in PUTGHT string
+         ldd   4,X        Get NEW scrn Y location
+         subd  #3         Move up 3 scrn lines
+         std   4,X        Save new scrn Y location
+         std   8,X        G1YOLD = G1YNEW
+         std   PGYLOC     Also put it in PUTGHS
+         ldb   11,X       Get ghost buffer #
+         stb   PGBFN      Put it in PUTGHS string
+         lbra  PUTGH      Go put ghost back on scrn
+*     Move ghost left on screen
+LEFT     deca             Decrement direction flag
+         bne   RIGHT
+         ldd   ,X         Get ghost array offset
+
+         cmpd  #1725      Off screen to left ?
+         bne   STGH2
+
+         pshs  X          Save X reg.
+
+         lda   #1         Set for blank ghost
+         sta   PGBFN
+         ldd   #37
+         std   PGXLOC
+         ldd   #85
+         std   PGYLOC
+         lbsr  PUTGHT
+
+         puls  X          Restore X reg.
+
+         ldd   #581
+         std   2,X
+         std   6,X
+         std   PGXLOC
+         ldd   #1793
+         std   ,X
+         lda   11,X
+         adda  #1
+         sta   PGBFN 
+         lbra  PUTGH
+
+STGH2    subd  #1         Move left 1 space in array
+         std   ,X         Save new array location
+         ldd   2,X        Get NEW scrn X location
+         subd  #8         Move 8 pixels left on scrn
+         std   2,X        Save NEW scrn X location
+         std   6,X        G1XOLD = G1XNEW
+         std   PGXLOC     Also put it in PUTGHT
+         ldd   4,X        Get ghost scrn Y location
+         std   8,X        G1YOLD = G1YNEW
+         std   PGYLOC     Put it in PUTGHT string
+         ldb   11,X       Get ghost buffer #
+         addb  #1         Add direction offset
+         stb   PGBFN      Put it in PUTGHT string
+         lbra  PUTGH      Go put ghost back on scrn
+*     Move ghost right on screen
+RIGHT    deca             Decrement direction flag
+         bne   DOWN
+         ldd   ,X         Get ghost array offset
+
+         cmpd  #1793      Off screen to right ?
+         bne   STGH3      If not, continue
+
+         pshs  X          Save X reg.
+
+         lda   #1         Set for blank ghost
+         sta   PGBFN
+         ldd   #581
+         std   PGXLOC
+         ldd   #85
+         std   PGYLOC
+         lbsr  PUTGHT
+
+         puls  X         Restore X reg.
+
+         ldd   #37
+         std   2,X
+         subd  #8
+         std   6,X
+         std   PGXLOC
+         ldd   #1725
+         std   ,X
+         lda   11,X
+         adda  #2
+         sta   PGBFN
+         lbra  PUTGH
+
+STGH3    addd  #1         Move 1 space right in array
+         std   ,X         Save new array location
+         ldd   6,X        Get OLD scrn X location
+         cmpd  2,X        Compare it to NEW
+         beq   SKIPRT
+         addd  #8         Add 8 to it
+         std   6,X        Save in OLD scrn x location
+SKIPRT   ldd   2,X        Get NEW scrn X location
+         addd  #8         Move 8 pixels right on scrn
+         std   2,X        Save NEW scrn X location
+         ldd   6,X        Get OLD scrn X location
+         std   PGXLOC     Also put it in PUTGHT
+         ldd   4,X        Get ghost scrn Y location
+         std   8,X        G1YOLD = G1YNEW
+         std   PGYLOC     Put it in PUTGHT string
+         ldb   11,X       Get ghost buffer #
+         addb  #2         Add direction offset
+         stb   PGBFN      Put it in PUTGHT string
+         bra   PUTGH      Go put ghost back on scrn
+*     Move ghost down on screen
+DOWN     ldd   ,X         Get ghost array offset
+         cmpd  #3692      At bottom of screen?
+         bne   STGH4
+
+         pshs  X          Save X reg.
+
+         lda   #1
+         sta   PGBFN
+         ldd   #317
+         std   PGXLOC
+         ldd   #169
+         std   PGYLOC
+         lbsr  PUTGHT
+
+         puls  X          Restore X reg.
+
+         ldd   #301
+         std   2,X
+         std   6,X
+         std   PGXLOC
+         ldd   #07
+         std   8,X
+         std   PGYLOC
+         addd  #3
+         std   4,X
+         ldd   #33
+         std   ,X
+         ldb   11,X
+         addb  #3
+         stb   PGBFN
+         bra   PUTGH
+
+STGH4    addd  #69        Move 1 line down in array
+         std   ,X         Save new array location
+         ldd   8,X        Get OLD Y location
+         cmpd  4,X        Compare it to NEW Y
+         beq   SKIPDN
+         addd  #3         Add 3 to it
+         std   8,X        Put result back in OLD Y
+SKIPDN   ldd   4,X        Get NEW Y location
+         addd  #3         Add 3 to it
+         std   4,X        Put result back in NEW Y
+         ldd   8,X        Get OLD scrn Y location 
+         std   PGYLOC     Also put it in PUTGHT
+         ldd   2,X        Get ghost scrn X location
+         std   6,X        G1XOLD = G1XNEW
+         std   PGXLOC     Put it in PUTGHT string
+         ldb   11,X       Get ghost buffer #
+         addb  #3         Add direction offset
+         stb   PGBFN      Put it in PUTGHT string
+
+*     Before we put ghost back on screen we first
+*     check to see if we got pacman, if so, set flag
+*     put any dots back on screen that were erased
+*     by the ghost when it moved
+
+PUTGH    ldd   2,X        Get ghost scrn X location
+         addd  #20
+         cmpd  PXNEW      Compare to left side of pman
+         ble   GOLOOK
+         ldd   PXNEW      Get pacman scrn X location
+         addd  #22
+         cmpd  2,X        Compare to left side of ghost
+         ble   GOLOOK
+         ldd   4,X        Get ghost scrn Y location
+         addd  #10
+         cmpd  PYNEW      Compare to top of pacman
+         ble   GOLOOK
+         ldd   PYNEW      Get pacman scrn Y location
+         addd  #10
+         cmpd  4,X        Compare to top of ghost
+         ble   GOLOOK
+
+         lda   #1
+         sta   HITFLG     Set HIT FLAG
+         ldb   10,X       Check status
+         cmpb  #1
+         beq   GOLOOK
+         lda   #-1
+         sta   HITFLG
+         lda   GCOUNT
+         sta   GHTHIT
+
+GOLOOK   ldd   ,X
+         cmpd  #33
+         ble   SKIPDT
+         cmpd  #3692
+         bge   SKIPDT
+         bsr   LOOK       Go look for dots to restore
+         cmpa  #0         A will be >0 if dot found
+         beq   SKIPDT     Branch if no dot to put back
+         sta   PDBFN      Put dot buff# in PUTDOT
+
+*     Put both dot(or pill) and ghost
+*     This routine will output both DOTCODE & PUTCODE
+
+         leax  PUTGHS,U   Point to Putghost's rmb's
+         ldy   #16        8 for dot & 8 for ghost
+         lda   PATH       Set output path
+         os9   I$Write    Output PUTBLK code
+         lbcs  ERR1       Branch if any errors
+         rts              Return to MAIN
+
+SKIPDT   lbsr  PUTGHT     Go put ghost back on screen
+MAINRT   rts              Return to MAIN
+
+*     The following routines look for any dots to
+*          replace after ghosts move on.
+
+LOOK     leay  ARRAY,U    Point to start of array
+         lda   14,X       Get direction flag
+         lbeq  LOOKDN     Ghost moving up, look down
+         deca
+         lbeq  LOOKRT     Ghost moving left, look right
+         deca
+         lbeq  LOOKLF     Ghost moving right, look left
+*     Moving DOWN, so look UP
+LOOKUP   ldd   ,X         Get ghost array offset
+         subd  #69        Move up 1 space in array
+         leay  D,Y        Point Y reg. here
+         ldb   ,Y         Look at byte there
+         lbmi  NODOT
+         ldb   -69,Y      Look at byte 1 line up
+         lbmi  NODOT
+         cmpb  #1         Check for intersection
+         ble   LOOKU3     Go look 3 spaces up
+         cmpb  #3         Is it a power dot?
+         bhi   POWU2
+         ldd   2,X        Get ghost scrn X location
+         addd  #7         Move right 7 pixels
+         std   PDXLOC     Put result in PUTDOT
+         ldd   4,X        Get ghost scrn Y location
+         subd  #3         Move 3 pixel up
+         std   PDYLOC     Put result in PUTDOT
+         lda   #42        Set flag(Buff# for dot)
+         rts              Return to PUTGH
+POWU2    ldd   2,X        Get ghost scrn X location
+         addd  #5
+         std   PDXLOC     Put result in PUTDOT
+         ldd   4,X        Get ghost scrn Y location
+         subd  #3
+         std   PDYLOC     Put result in PUTDOT
+         lda   #52        Set flag(Buff# for power dot)
+         rts              Return to PUTGH
+
+LOOKU3   ldb   -138,Y     Get byte there
+         cmpb  #1
+         lble  NODOT
+         cmpb  #3         Is it a wall?
+         bhi   POWU3
+         ldd   2,X        Get ghost scrn X location
+         addd  #7         Add offset to dot location
+         std   PDXLOC     Put result in PUTDOT string
+         ldd   4,X        Get ghost scrn Y location
+         subd  #6         Subtract offset
+         std   PDYLOC     Put result in PUTDOT string
+         lda   #40        Set flag (Also Buff #)
+         rts
+
+POWU3    ldd   2,X        Get ghost scrn X location
+         addd  #5         Add offset to dot location
+         std   PDXLOC     Put result in PUTDOT string
+         ldd   4,X        Get ghost scrn Y location
+         subd  #6         Subtract offset
+         std   PDYLOC     Put result in PUTDOT string
+         lda   #50        Set flag (Also Buff #)
+         rts
+
+*    The following routines are not commented because
+*    they are all identical to the LOOKUP routines
+*    except for the use of different buffer numbers
+*    and different offset values.
+*
+*   Moving UP, so look down
+
+LOOKDN   ldd   ,X
+         addd  #69
+         leay  D,Y
+         ldb   ,Y
+         lbmi  NODOT
+         ldb   69,Y
+         lbmi  NODOT
+         cmpb  #1
+         ble   LOOKD3
+         cmpb  #3
+         bhi   POWD2
+         ldd   2,X
+         addd  #7
+         std   PDXLOC
+         ldd   4,X        
+         addd  #9
+         std   PDYLOC
+         lda   #43
+         rts
+
+POWD2    ldd   2,X
+         addd  #5
+         std   PDXLOC
+         ldd   4,X
+         addd  #9
+         std   PDYLOC
+         lda   #53
+         rts
+
+LOOKD3   ldb   138,Y
+         cmpb  #1
+         lble  NODOT
+         cmpb  #3
+         bhi   POWD3
+         ldd   2,X
+         addd  #7
+         std   PDXLOC
+         ldd   4,X
+         addd  #12
+         std   PDYLOC
+         lda   #40
+         rts
+
+POWD3    ldd   2,X
+         addd  #5
+         std   PDXLOC
+         ldd   4,X
+         addd  #12
+         std   PDYLOC
+         lda   #50
+         rts
+
+*    Moving LEFT, so look right
+
+LOOKRT   ldd   ,X
+         leay  D,Y
+         ldb   1,Y
+         lbmi  NODOT
+         ldb   2,Y
+         cmpb  #1
+         lble  NODOT
+         cmpb  #3
+         bhi   POWR2
+         ldd   2,X
+         addd  #23
+         std   PDXLOC
+         ldd   4,X
+         addd  #3
+         std   PDYLOC
+         lda   #40
+         rts
+
+POWR2    cmpb  #6
+         beq   BONR2
+         ldd   2,X
+         addd  #21
+         std   PDXLOC
+         ldd   4,X
+         addd  #3
+         std   PDYLOC
+         lda   #50
+         rts
+
+BONR2    ldd   2,X
+         addd  #15
+         std   PDXLOC
+         ldd   4,X
+         addd  #1
+         std   PDYLOC
+         lda   BONBUF
+         rts
+
+*    Moving RIGHT, so look left
+
+LOOKLF   ldd   ,X
+         leay  D,Y
+         ldb   -1,Y
+         bmi   NODOT
+         ldb   -2,Y 
+         cmpb  #1
+         ble   NODOT
+         cmpb  #3
+         bhi   POWL2
+         ldd   2,X
+         subd  #9
+         std   PDXLOC
+         ldd   4,X
+         addd  #3
+         std   PDYLOC
+         lda   #40
+         rts
+
+POWL2    cmpb  #6
+         beq   BONL2
+         ldd   2,X
+         subd  #11
+         std   PDXLOC
+         ldd   4,X
+         addd  #3
+         std   PDYLOC
+         lda   #50
+         rts
+
+BONL2    ldd   2,X
+         subd  #17
+         std   PDXLOC
+         ldd   4,X
+         addd  #1
+         std   PDYLOC
+         lda   BONBUF
+         rts
+
+*    This is the common exit for all the LOOK
+*    routines if no dot was found to replace.
+*    Clearing the A reg. is a flag for the
+*    PUTGH routine to let it know that no dot
+*    needs to be put back on the screen  
+
+NODOT    clra             Clear flag
+         rts
+
+
+         ENDSECT
+
+
--- a/3rdparty/packages/pacos9/main90.a	Mon Jan 27 23:49:14 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1126 +0,0 @@
-
-         NAM    MAIN
-         TTL    Main pacman routine
-
-*     Program segment to be compiled using Level II RMA
-*           This is the mainline program segment
-*                 Written by Larry Olson
-
-         IFP1
-*         use    /dd/defs/os9defs.a
-         ENDc
-
-TYPE     EQU    $11          Prgrm($10)+Objct($01)
-ATTR     EQU    $80          REEntrent
-REVS     EQU    $01          Revision level
-ATREV    EQU    ATTR+REVS
-EDITION  EQU    2            EDITION #2
-STACK    EQU    500
-UPDAT    EQU    3
-
-         PSECT  MAIN,TYPE,ATREV,EDITION,STACK,PAC
-
-         VSECT
-
-*    Local and global variables
-
-SIGCODE  RMB    1         Intercept signal RMB
-PATH:    RMB    1         Screen path number
-PATH2:   RMB    1         Second screen path number
-WINDOW:  RMB    1         Holds 0 or 2 to keep track
-*                          of which window is being used
-PROCID:  RMB    1         Holds process id
-RESPON:  RMB    2         Holds response bytes
-
-
-PORT:    RMB    2         Joystick port (0=right,1=left)
-BUTTON:  RMB    1         Joystick button status
-JOYSTX:  RMB    2         Joystick X value
-JOYSTY:  RMB    2         Joystick Y value
-
-PLAYRS:  RMB    1         Holds 0 or 1 (for 1 or 2 players)
-
-PACMN1:  RMB    1         Holds number of pacmen left(player1)
-PACMN2:  RMB    1         Holds number of pacmen left(player2)
-PLCRNT:  RMB    1         Holds current player number(1 or 2)
-PACMAN:  RMB    1         Holds current number of men left
-*                         this will be either PACMN1 or PACMN2 
-
-PXNEW:   RMB    2         New pacman X position
-PYNEW:   RMB    2         New pacman Y position
-POFSET:  RMB    2         Pacman offset from start of array
-BUFF:    RMB    1         Holds current pacman buffer #
-
-CYCLE:   RMB    1         Used to cycle between buffers
-
-HITFLG:  RMB    1         A 1 here = pacman caught
-GHTHIT:  RMB    1         Ghost hit flag
-POWFLG:  RMB    1         When pacman eats a power pill then
-*                         this location holds a timer value
-
-BONFLG:  RMB    1         Bonus on screen flag
-BONTIM:  RMB    1         Bonus timer
-BONBUF:  RMB    1         Current bonus buffer
-BONUSX:  RMB    2         Bonus X location at bottom of scrn
-BONUSY:  RMB    2         Bonus Y location at bottom of scrn
-BONCNT:  RMB    1         Bonus counter
-BONTAB:  RMB    10        Bonus item table
-
-BONTMP:  RMB    2         Temporary storage 
-BTEMP:   RMB    15        Used to hold BONUSX,BONUSY,BONCNT
-*                          and BONTAB  for 2 player mode
-SNDPR1:  RMB    2
-SNDPR2:  RMB    2
-
-*     Ghost tables, One 20 byte table for each ghost
-
-G1OFST:  RMB    2         Ghost position offset from start of array
-G1XNEW:  RMB    2         Screen X location of ghost
-G1YNEW:  RMB    2         Screen Y location of ghost
-G1XOLD:  RMB    2         Pseudo scrn X location of ghost
-G1YOLD:  RMB    2         Pseudo scrn Y location of ghost
-G1STAT:  RMB    1         Status flag for ghost
-*                          -2 = Eyes are caged,timer not run out
-*                          -1 = Ghost caged,timer not run out
-*                           0 = Ghost still in cage but moving out
-*                           1 = Ghost is free of cage,can move around
-*                           2 = Ghost has been turned into eyes
-G1BUFF:  RMB    1         Holds current buffer # for ghost
-G1TIME:  RMB    1         Ghost time out counter
-TIMVAL:  RMB    1         Ghost initial time out value
-G1DIR:   RMB    1         Ghost dir. (0=up,1=lf,2=rt,3=dn)
-DIROFF:  RMB    1         Direction offset (-69,-1,1,69)
-G1UPDT:  RMB    1         Holds update value to be count down
-UPDATE:  RMB    1         Initial update value
-         RMB    2         Extra bytes
-
-G2OFST:  RMB    20        Table for ghost #2
-
-G3OFST:  RMB    20        Table for ghost #3
-
-G4OFST:  RMB    20        Table for ghost #4
-
-GCOUNT:  RMB    1         Holds num (0,20,40,60) of current ghost
-
-SCRPOS:  RMB    3         Player 1 score xy print position
-SCRASC:  RMB    6         Score ascii characters put here
-SCRBCD:  RMB    3         Contains score in BCD
-POINTS:  RMB    3         Points that will be added to score
-SHCNT:   RMB    1         Temporary loop counter
-
-***********  These are used in 2 player mode  ***********
-
-SCRPO2:  RMB    3         Player 2 score xy print position 
-SCRAS2:  RMB    6         Score ascii characters put here
-SCRBC2:  RMB    3         Contains score in BCD
-
-DOTTOT:  RMB    2         Dot eaten total, used to show when
-*                          screen has been cleared
-SCNTOT:  RMB    2         Total number of dots for
-*                           The current screen
-BRDNUM:  RMB    1         Holds # of current board(starts at 1)
-SCNFLG:  RMB    1         Screen flag, starts at 2, is decremented
-*                          when a scrn is cleared. When 0 a new
-DOTTMP:  RMB    2         Holds dot eaten total in 2 player mode
-SCTOT2:  RMB    2         Holds scrn dot total in 2 player mode
-*                          screen is issued.
-BRDTMP:  RMB    1         Holds board # in 2 player mode
-SCFTMP:  RMB    1         Holds screen flag in 2 player mode
-
-DOTCNT:  RMB    2         Dot counter in transfer routine
-
-RANNUM   RMB    1         Random number variable
-ADDEND   RMB    1         Used in random number generator
-SAVEX    RMB    2         Save X reg. in random routine
-
-RSFLAG:  RMB    1         Restart game flag
-
-PUTPACM: RMB    2         $1b,$2d will be put here
-PCGBN:   RMB    1         Group buff#, Process ID put here
-PCBFN:   RMB    1         Buffer number
-PCXLOC:  RMB    2         Putpacm X location
-PCYLOC:  RMB    2         Putpacm Y location
-
-PUTCODE: RMB    2         $1b,$2d will be put here
-PGBN:    RMB    1         Group buff#, Process ID put here
-PBFN:    RMB    1         Buffer number
-PXLOC:   RMB    2         Putblk X location
-PYLOC:   RMB    2         Putblk Y location
-
-PUTGHS:  RMB    2         $1b,$2d will be put here
-PGGBN:   RMB    1         Group buff#, Process ID +1 put here 
-PGBFN:   RMB    1         Buffer number
-PGXLOC:  RMB    2         PUTGHS X location
-PGYLOC:  RMB    2         PUTGHS Y location
-
-DOTCODE: RMB    2         $1b,$2d will be put here
-PDGBN:   RMB    1         Group buff#, Process ID put here
-PDBFN:   RMB    1         Buffer number
-PDXLOC:  RMB    2         Putdot X location
-PDYLOC:  RMB    2         Putdot Y location
-
-XSAVE:   RMB    2         Temp. storage for X reg.
-
-STRLGH:  RMB    1         Length of palette set string to send
-STRING:  RMB    16        Build palette set string here  
-
-PALBT1:  RMB    4
-PALBT2:  RMB    4
-
-HISPOS:  RMB    3         High score screen print position
-HSCASC:  RMB    6         High score ascii characters
-
-KILBUF:  RMB    4         $1b,$2a,procid,0 will be put here
-KILBF2:  RMB    4         $1b,$2a,procid +1,0 will be put here
-
-MOVFLG:  RMB    1         Delay flag used in movpac
-
-EXTPAC:  RMB    1         Extra pacman match number
-
-EXTPC2:  RMB    1         Holds match number in 2 player mode
-
-*   32 byte area for SS.Mouse packet
-*   only used for Pt.Valid info
-MOUSE:   RMB    1         Pt. Valid
-         RMB    31        not used
-
-GHTABL:  RMB    80        Duplicate ghost data table
-
-TABLE1:  RMB    612       Used to save screen info for
-*                          player 1 in 2 player mode
-TABLE2:  RMB    612       Used to save screen info for
-*                          player 2 in 2 player mode.
-SCNNUM:  RMB    12        Screen number
-
-
-         RMB    150
-
-ARRAY:   RMB    3726
-ARREND:  RMB    4
-         RMB    150
-
-         RMB    STACK
-
-         ENDSECT
-
-PTHLST   FCS    "/W"
-DWSET    FCB    $1B,$20,08,00,00,40,24,01,02,02
-DWEND    FCB    $1B,$24
-SELECT:  FCB    $1b,$21
-CLEAR:   FCB    $0C
-CLREND:  FCB    $0b
-CUROFF   FCB    $05,$20
-BOLDSW:  FCB    $1b,$3d,1
-BELCOD:  FCB    $07
-PLLST1:  FCB    $1b,$31,7,7,$1b,$33,7,$1b,$34,7
-PLLST2:  FCB    $1b,$31,6,25,$1b,$31,14,25
-SCNRST:  FCB    $1b,$25,0,0,40,24
-POPWIN:  FCB    $07,$1b,$25,7,8,24,9,$1b,$22
-         FCB    1,0,0,22,7,2,0,$0c
-
-POPEND:  FCB    $07,$1b,$23,$1b,$25,8,9,22,7
-         FCB    $1b,$32,1,$1b,$33,0
-
-BOTWIN:  FCB    $1b,$25,0,0,40,24,$07
-         FCB    $1b,$22,1,5,15,28,8,0,2,$0c
-         FCB    $1b,$25,1,1,27,7,$1b,$33,2,$0c
-         FCB    $1b,$25,0,0,27,7,$1b,$33,4,$0c
-         FCB    $1b,$25,1,1,25,5,$1b,$33,0,$0c
-
-BOTEND:  FCB    7,$1b,$23,$1b,$25,8,9,23,8
-         FCB    $1b,$32,1,$1b,$33,0
-
-TITLE:   FCB    $1b,$33,2,$1b,$25,13,1,11,5
-         FCB    $0c,$1b,$33,1,$1b,$25,12,0,11
-         FCB    5,$0c,$1b,$32,2,$1b,$33,0,$1b
-         FCB    $25,13,1,9,3,$0c,2,33,33,80
-         FCB    65,67,45,79,83,57
-
-SCRBOX:  FCB    $1b,$33,2,$1b,$25,7,8,25,10,$0c
-         FCB    $1b,$33,1,$1b,$25,6,7,25,10,$0c
-         FCB    $1b,$32,2,$1b,$33,0,$1b,$25,7,8
-         FCB    23,8,$0c,$1b,$25,8,9,22,7
-
-*    Select Start Screen # ?
-STRSCN   FCB    2,35,36,83,116,97,114,116,32
-         FCB    83,99,114,101,101,110,32,35
-         FCB    32,63,2,50,36
-*    Select Joystick Port
-*     (L)eft or (R)ight --> ?
-SELJOY   FCB    2,33,33,83,101,108,101,99,116,32
-         FCB    74,111,121,115,116,105,99,107,32
-         FCB    80,111,114,116,2,34,35,66,121,32
-         FCB    80,114,101,115,115,105,110,103,32
-         FCB    66,117,116,116,111,110
-
-*    LEFT
-LFTSTR   FCB    $1b,$32,4,2,34,37,76,69,70,84,32
-         FCB    80,79,82,84,32
-*    RIGHT
-RGTSTR   FCB    $1b,$32,4,2,34,37,82,73,71,72,84
-         FCB    32,80,79,82,84
-SLCTED   FCB    $1b,$32,2,2,44,37,83,101
-         FCB    108,101,99,116,101,100
-
-*    Number of players
-*      (1 or 2) ?   
-PLYSTR   FCB    2,34,33,78,117,109,98,101,114,32
-         FCB    111,102,32,80,108,97,121,101,114,115
-         FCB    $1b,$32,3,2,33,34,40,106,111,121,115
-         FCB    116,105,99,107,32,77,111,118,101,115
-         FCB    32,66,111,120,41,$1b,$32,4,2,38,36
-         FCB    49,2,47,36,50,$1b,$32,1,2,34,38,83
-         FCB    101,108,101,99,116,32,87,105,116
-         FCB    104,32,66,117,116,116,111,110
-
-CURXY    FCB    2,62,54
-
-CURXY1   FCB    2,61,54
-
-CURXY2   FCB    2,47,50
-
-CURXY3   FCB    2,37,23
-
-CURXY4   FCB    2,60,55
-
-CURXY5   FCB    2,38,52
-*    Player #1
-PL1:     FCB    $1b,$32,4,2,47,50,80,76,65,89,69,82,32,35,49
-*    Player #2
-PL2:     FCB    $1b,$32,4,2,47,50,80,76,65,89,69,82,32,35,50
-*   ** Pause **
-PAUSE    FCB    $1b,$22,1,14,23,13,1,0,10,32
-         FCB    42,42,32,80,65,85,83,69,32,42,42
-*    Close pause overlay or Hiscore overlay
-PAUEND:  FCB    $1b,$23
-*    Get Ready
-GETRDY:  FCB    2,39,36,71,69,84,32,82,69,65,68,89
-*    Get Ready Player 1
-GETRD1:  FCB    2,39,34,$1b,$32,1,80,108,97,121,101
-         FCB    114,32,49,$1b,$32,2,2,39,36,71,69
-         FCB    84,32,82,69,65,68,89
-*    Get ready Player 2
-GETRD2:  FCB    2,39,34,$1b,$32,1,80,108,97,121,101
-         FCB    114,32,50,$1b,$32,2,2,39,36,71,69
-         FCB    84,32,82,69,65,68,89
-*    Game Over
-GMOVER   FCB    $1b,$22,1,13,8,14,5,10,2,$0c,2,34
-         FCB    34,71,65,77,69,32,32,79,86,69,82
-*    Play Again (y/n) ?
-PLYAGN   FCB    $1b,$32,4,2,35,34,80,76,65,89,32,65
-         FCB    71,65,73,78,32,40,89,47,78,41,32,63
-         FCB    2,52,34
-*    QUIT PROGRAM (Y/N) ?
-BRKKEY:  FCB    $1b,$32,10,$1b,$22,1,8,9,24,3
-         FCB    10,2,2,34,33,81,85,73,84,32
-         FCB    80,82,79,71,82,65,77,32
-         FCB    40,89,47,78,41,32,63
-*    Close 
-*  break overlay
-BRKEND:  FCB    $1b,$23
-*    SCREEN BONUS
-*    1000  POINTS
-SCNBON:  FCB    $1b,$32,10,$1b,$22,1,12,9,16,4,10
-         FCB    2,2,34,33,83,67,82,69,69,78,32
-         FCB    66,79,78,85,83,2,34,34,49,48
-         FCB    48,48,32,32,80,79,73,78,84,83
-*    Close Screen bonus overlay
-SCBEND:  FCB    $1b,$23
-*    100   High   Score   0
-HSTRING  FCB    $1b,$32,10
-HSTRG2   FCB    2,34,32,32,32,49,48,48,48
-SCOR1    FCB    $1b,$32,10
-         FCB    2,43,32,72,73,71,72,2,55,32
-         FCB    83,67,79,82,69,2,69,32,48
-*    0  Player #1   <-UP    Player #2       0
-SCOR2    FCB    $1b,$32,10,2,32,32,32,32,32
-         FCB    32,32,48,32,80,76,65,89,69
-         FCB    82,32,35,49,32,$1b,$32,12,60
-         FCB    45,$1b,$32,9,85,80,32,32,32
-         FCB    $1b,$32,10,80,76,65,89,69,82
-         FCB    32,35,50,32,32,32,32,32,32,48
-*      This will print  <-UP
-SCR1:    FCB    $1b,$32,12,2,49,32,60,45,$1b
-         FCB    $32,9,85,80,32,32,$1b,$32,10
-*      This will print    UP->
-SCR2:    FCB    $1b,$32,9,2,49,32,32,32,85,80
-         FCB    $1b,$32,12,45,62,$1b,$32,10
-
-
-*    Open window #1
-PAC      lda    #UPDAT      Set for OPEN with UPDATE
-         leax   PTHLST,pcr  Point to addr of Path list
-         os9    I$Open      Open path to window
-         lbcs   ERR2
-         sta    PATH        Save path number
-         leax   DWSET,pcr   Point to DWSET code
-         ldy    #10         Output 10 bytes
-         lda    PATH        Get path number
-         os9    I$Write     Output DWSET code
-         lbcs   ERR2
-
-*    Open window #2
-
-         lda    #UPDAT      Set for OPEN with UPDATE
-         leax   PTHLST,pcr  Point to addr of Path list
-         os9    I$Open      Open path to window
-         lbcs   ERR2        Branch if any errors
-         sta    PATH2       Save path number 2
-         leax   DWSET,pcr   Point to DWSET code
-         ldy    #10         Output 10 bytes
-         lda    PATH2       Get path number
-         os9    I$Write     Output DWSET code
-         lbcs   ERR2        Branch if any errors
-*    Setup window #2
-         leax   BOLDSW,pcr
-         ldy    #3
-         lbsr   OUTST2
-         leax   CUROFF,pcr  Point to cursor OFF code
-         ldy    #2          Output 2 bytes
-         lbsr   OUTST2      Output cursor off string
-         leax   PLLST1,pcr  Set grey background
-         ldy    #10
-         lbsr   OUTST2
-         leax   CLEAR,pcr   Point to clear screen code
-         ldy    #1          Output 1 byte
-         lbsr   OUTST2      Output clear screen string
-*   Select Window #2
-         lda    PATH2       Get path number
-         leax   SELECT,pcr  Point to SELECT code
-         ldy    #2          Output 2 bytes
-         os9    I$Write     Output select code
-         lbcs   ERR1
-         lda    #2
-         sta    WINDOW      Selecting window #2
-
-         leax   TITLE,pcr   Put title on screen
-         ldy    #43
-         lbsr   OUTST2
-
-         leax   SCNRST,pcr  Reset screen to 40,24
-         ldy    #6
-         lbsr   OUTST2
-
-*    Setup window #1
-         leax   BOLDSW,pcr
-         ldy    #3
-         lbsr   OUTSTR
-         leax   CUROFF,pcr  Point to cursor OFF code
-         ldy    #2          Output 2 bytes
-         lbsr   OUTSTR      Output cursor off string
-         leax   CLEAR,pcr   Point to clear screen code
-         ldy    #1          Output 1 byte
-         lbsr   OUTSTR      Output clear screen code
-
-GETID    os9    F$ID        Get process ID
-         sta    PROCID      Will be used for GBN
-
-*    Get system time and use the seconds value to
-*        seed the random number generator.
-*    The 2 bytes for the seconds will be put in
-*             RANNUM and ADDEND 
-
-SEEDER   leax   PALBT2,U    Put time bytes here
-         os9    F$Time      Go get time bytes
-         lbcs   ERR1        Branch if any errors
-
-***   Set trap for BREAK key   ***
-
-KEYTRAP: leax   TRAP,pcr
-         os9    F$Icpt
-         lbcs   ERR1
-         bra    FILSTR
-
-TRAP     stb    SIGCODE,U
-         rti    Return from interrupt
-
-
-*    Preload Dotcode, Putcode and Getcode strings
-
-FILSTR   ldd    #$1b2d      Code for PUTBLK
-         std    PUTPACM
-         std    PUTGHS
-         std    PUTCODE     Put it in Putblk string
-         std    DOTCODE     Put it in Putblk string
-         lda    PROCID      Get Process I.D.
-         sta    PCGBN
-         sta    PGBN        Set Group Buffer #
-         sta    PDGBN       Set Group Buffer #
-         sta    PGGBN       Set Group Buffer #
-
-         leax   KILBUF,U    Point to KILBUF string
-         ldd    #$1b2a      Kill buffer code 
-         std    ,X++
-         lda    PROCID      Get process I.D.
-         sta    ,X+
-         lda    #$00
-         sta    ,X 
-         ldd    #$1b31
-         std    PALBT1,U
-         std    PALBT2,U
-
-         leax   HSTRG2,pcr
-         leay   HISPOS,U
-         ldb    #9
-HSLOOP   lda    ,X+
-         sta    ,Y+
-         decb
-         bne    HSLOOP
-
-         clr    RSFLAG
-         clr    SIGCODE
-         clr    BUTTON
-
-         lbsr   SBEGIN      Read & display high scores
-
-RESTART  nop                Come here to restart game
-
-*    Setupb will fill all object buffers
-**************************************
-*         For testing
-*   To see all the objects that are put
-*   into the buffers, remove the REM's
-*   at locations #1, #2 and change the
-*   PATH2 to PATH at location #3
-
-**************************************
-*         leax   SELECT,pcr      #1
-*         ldy    #$0002          #1
-*         lbsr   OUTSTR          #1
-*         clr    WINDOW          #1
-**************************************
-
-SETBUF    lda    #1         Set board # to 1
-          sta    BRDNUM
-          sta    BRDTMP
-
-SKPCL2   lda    #2         Set screen count flag to 2
-         sta    SCNFLG
-         sta    SCFTMP
-
-         tst    RSFLAG     Check restart flag
-         bne    SETBF2     If no restart then
-         lbsr   SETUPB      go draw objects
-
-SETBF2   lbsr   SETUPC          
-
-         ldd    SCNTOT     Get screen dot total
-         std    SCTOT2     Copy to temporary
-
-**************************************
-*         lda    PATH            #2
-*         leax   RESPON,U        #2
-*         ldy    #1              #2
-*         os9    I$Read          #2
-*         lbcs   ERR1            #2
-**************************************
-CLSCRN   leax   CLEAR,pcr   Point to clear screen code
-         ldy    #1          Output 1 char.
-         lbsr   OUTSTR      Go output clear screen code
-
-         lda    RSFLAG      Check restart flag
-         lbne   SETVR1      Branch if restarting
-
-         leax   SELJOY,pcr  Point to joystick select
-         ldy    #44         Output 44 bytes
-         lbsr   POPUP       Do popup and output SELJOY
-
-JYLOOP   lda    PATH2,U
-         ldb    #$13
-         ldx    #0
-         os9    I$GetStt
-         lbcs   ERR1
-         ldb    #0
-         cmpa   #0
-         bne    PUTPRT
-         lda    PATH2,U
-         ldb    #$13
-         ldx    #1
-         os9    I$GetStt
-         lbcs   ERR1
-         ldb    #1
-         cmpa   #0
-         beq    JYLOOP
-
-PUTPRT   clra
-         std    PORT,U      Put value in PORT 
-         leax   LFTSTR,pcr
-         ldy    #16
-         cmpd   #0
-         bne    PTDSPL
-         leax   RGTSTR,pcr
-PTDSPL   lbsr   OUTST2
-         leax   SLCTED,pcr
-         ldy    #14
-         lbsr   OUTST2
-
-         ldx    #100
-         lbsr   WAIT        Pause for 50 ticks
-
-         leax   PAUEND,pcr
-         ldy    #2
-         lbsr   OUTST2
-
-         ldx    #75
-         lbsr   WAIT
-
-         leax   PLYSTR,pcr  Point to players string
-         ldy    #81         Output 81 bytes
-         lbsr   POPUP       Do popup and output PLYSTR
-
-*   Put square
-PUTSQR   ldd    #$1b32
-         std    STRING,U
-         lda    #1
-         sta    STRING+2,U
-         ldd    #$1b40
-         std    STRING+3,U
-         ldd    #168
-         std    STRING+5,U
-         ldd    #100
-         std    STRING+7,U
-         ldd    #$1b48
-         std    STRING+9,U
-         ldd    #208
-         std    STRING+11,U
-         ldd    #143
-         std    STRING+13,U
-         leax   STRING,U
-         ldy    #15
-         lbsr   OUTST2
-
-         lda    #0          Default = 1 player
-         sta    JOYSTY
-
-NUMLOP   lda    PATH2
-         ldb    #$13
-         ldx    PORT,U
-         os9    I$GetStt
-         lbcs   ERR1
-         stx    JOYSTX
-         sta    BUTTON
-         bne    GOTBUT
-         tfr    X,D
-         lda    #1
-         cmpb   #42
-         bge    PUTNUM
-         lda    #0
-
-PUTNUM   sta    JOYSTY
-         lda    #0
-         sta    STRING+2,U
-         leax   STRING,U
-         ldy    #15
-         lbsr   OUTST2
-
-         lda    JOYSTY
-         cmpa   #0
-         bne    PUTLFT
-         ldd    #168
-         std    STRING+5,U
-         ldd    #208
-         std    STRING+11,U
-         bra    DRWSQR
-PUTLFT   ldd    #432
-         std    STRING+5,U
-         ldd    #472
-         std    STRING+11,U
-DRWSQR   lda    #1
-         sta    STRING+2,U
-         leax   STRING,U
-         ldy    #15
-         lbsr   OUTST2
-         bra    NUMLOP
-
-GOTBUT   lda    JOYSTY
-         sta    PLAYRS
-
-         ldx    #100
-         lbsr   WAIT
-
-         leax   PAUEND,pcr
-         ldy    #2
-         lbsr   OUTST2
-
-SETVR1   ldd    #308
-         std    PXNEW       Pacman starting X location
-         std    PCXLOC
-         ldd    #94
-         std    PYNEW       Pacman starting Y location
-         std    PCYLOC
-         ldd    #1966       Set initial pacman array offset
-         std    POFSET
-         lda    #3
-         sta    CYCLE       Set cycle to 3
-         lda    #28
-         sta    BUFF        Set starting pacman buffer
-         lda    #80         Setup ghost counter value
-         sta    GCOUNT
-         clr    HITFLG      Pacman hit flag
-         clr    POWFLG      Power pill flag
-         lda    #3
-         sta    PACMN1      Set # of players to 3
-         sta    PACMN2      Set # of players to 3
-         sta    PACMAN      Set current pacman to 3
-         lda    #1
-         sta    PLCRNT      Set current player to #1
-         sta    EXTPAC,U    Extra pacman goal byte
-         sta    EXTPC2,U    Goal for player 2
-         ldd    #0
-         std    DOTTOT      Dot and pill total
-         std    DOTTMP      Dot & pill total, player2
-
-         lda    #69
-         sta    BONBUF
-         clr    BONFLG
-         lda    #150
-         sta    BONTIM
-         leax   BTEMP,U
-         ldd    #8
-         std    BONUSX      Set X starting location
-         std    ,X++
-         ldd    #181
-         std    BONUSY      Set Y starting location
-         std    ,X++
-         clr    BONCNT      Clear bonus counter
-         clr    ,X
-
-         lda    PLAYRS      Check flag
-         beq    GRDY        If 0 then only 1 player
-         lbsr   BELL
-         leax   GETRD1,pcr
-         ldy    #29
-         lbsr   POPUP
-         bra    DRWBRD
-GRDY     lbsr   BELL
-         leax   GETRDY,pcr   Print GET READY
-         ldy    #12
-         lbsr   POPUP       Do popup and output GETRDY
-
-*    Now draw board and place objects
-
-DRWBRD   lbsr   BOARDC
-
-
-*    Select approprite header for 1 or 2 player mode
-
-HEADER   lda    PLAYRS      Check for 1 or 2 players
-         bne    HEADR2
-         leax   SCOR1,pcr   Point to 1 player header
-         ldy    #22         Output 22 bytes
-         lbsr   OUTSTR
-         leax   HSTRING,pcr Position curser
-         ldy    #3          Output 3 bytes
-         lbsr   OUTSTR
-         leax   HISPOS,U    Point to HIGH score
-         ldy    #9          output 9 bytes
-         lbsr   OUTSTR
-         bra    SELSCN
-HEADR2   leax   SCRPOS,U    Point to score string
-         lda    #32
-         sta    1,X         Set curser X location
-         leax   SCOR2,pcr   Point to 2 player header
-         ldy    #55         Output 55 bytes
-         lbsr   OUTSTR
-
-*    Now select playing screen
-
-SELSCN   lbsr   BELL
-
-         leax   SELECT,pcr  Point to select code
-         ldy    #2          Output 2 bytes
-         lbsr   OUTSTR      Go to output routine
-         clr    WINDOW      Flag for window 0
-
-         leax   POPEND,pcr
-         ldy    #15
-         lbsr   OUTST2
-
-*     Main program loop
-*
-MAIN:    lbra   CHECKS      Go check & move ghosts
-MAIN1:   lbsr   MVPAC       Go move pacman 
-
-*     Check for signals (break key)
-
-         ldb    SIGCODE,U
-         cmpb   #2          Was it the break key ?
-         bne    NOBRK
-         leax   BRKKEY,pcr  Point to string
-         ldy    #35         Output 35 bytes
-         lbsr   OUTSTR
-         clr    RESPON,U
-
-         lbsr   READ        Flush input buffer
-
-         lbsr   READ        Go get input
-
-         leax   BRKEND,pcr  Erase BRKKEY prompt
-         ldy    #2          Output 2 bytes
-         lbsr   OUTSTR
-         clr    SIGCODE,U   Clear signal flag
-
-         lda    RESPON,U    Check input
-         cmpa   #89         Was it a Y ?
-         beq    YESBRK
-         cmpa   #121        Was it a y ?
-         bne    NOBRK
-
-YESBRK   leax   SELECT,pcr
-         ldy    #2
-         lbsr   OUTST2
-
-         lbsr   SCEND
-         ldx    #50
-         lbsr   WAIT        Sleep for 50 ticks
-         lbra   EXIT        Quit program
-
-NOBRK    ldd    DOTTOT      Get dot total
-         cmpd   SCNTOT      Cleared the screen yet?
-         lbne   CHKBUT
-
-         ldx    #80
-         lbsr   WAIT        Pause for 80 ticks
-*   Display SCREEN BONUS
-         leax   SCNBON,pcr
-         ldy    #42  
-         lbsr   OUTSTR
-*   Make noise
-         ldx    #$3f06
-         ldy    #3000
-         lbsr   SND
-         ldy    #2000
-         lbsr   SND
-         ldy    #3000
-         lbsr   SND
-         ldy    #2000
-         lbsr   SND
-*   Pause a few more seconds
-         ldx    #150
-         lbsr   WAIT
-*   Close SCREEN BONUS overlay
-         leax   SCBEND,pcr
-         ldy    #2
-         lbsr   OUTSTR
-*   Add 1000 points to score for clearing screen
-         lda    #16
-         sta    POINTS+1
-         clr    POINTS+2
-         lbsr   ADDUP
-         clr    POINTS+1
-*   Pause some more
-         ldx    #150
-         lbsr   WAIT
-*   Add up bonus items at bottom of screen
-
-         lbsr   CNTBON
-
-*   Select comment window
-
-         leax   SELECT,pcr
-         ldy    #2
-         lbsr   OUTST2
-
-         ldx    #300
-         lbsr   WAIT
-
-         ldb    PLAYRS      Get # of players(1=0,2=1)
-         beq    GTRDY       Only one player
-         lbsr   BELL
-         leax   GETRD1,pcr  Point player 1 string
-         ldy    #29         Output 29 bytes
-         ldb    PLCRNT      Get current pacman number
-         cmpb   #2          Is it player #2 ?
-         beq    PLNUM2
-         bra    PLOUT
-
-PLNUM2   leax   GETRD2,pcr  Point to player #2 string
-PLOUT    lbsr   POPUP       Go output string
-         bra    DOREST
-GTRDY    lbsr   BELL
-
-         leax   GETRDY,pcr  Point to GET READY string
-         ldy    #12         Output 12 bytes
-         lbsr   POPUP       Do popup and output GETRDY
-
-*   Reset screen 
-
-DOREST   lbsr   NEWSCN
-
-         ldx    #150
-         lbsr   WAIT
-
-         lbsr   BELL
-
-*   Select game window
-
-         leax   SELECT,pcr
-         ldy    #2
-         lbsr   OUTSTR
-
-         leax   POPEND,pcr
-         ldy    #15
-         lbsr   OUTST2
-
-*    The following routines are run once
-*    for every three times pacman moves
-*
-*    First check to see if pacman screen is the
-*        screen currently being displayed.
-*         If not, then sleep for 2 ticks.
-
-
-CHKBUT   lda    CYCLE       Check for CYCLE=2
-         cmpa   #2
-         lbne   MAIN
-
-*    Update Mouse packet
-
-CHKBT1   lda    PATH
-         ldb    #$89
-         leax   MOUSE,U
-         ldy    #0
-         os9    I$GetStt    Do a SS.MOUSE call
-         lbcs   ERR1
-         lda    MOUSE       Get Pt.Valid byte
-         bne    CHKBT2
-         ldx    #2
-         lbsr   WAIT        Sleep for 2 ticks
-         bra    CHKBT1      Loop till valid
-
-CHKBT2   lda    BUTTON      Check for button
-         lbeq   MAIN        Loop till button is pushed
-         leax   PAUSE,pcr   Point to pause string
-         ldy    #21         Output 21 bytes
-         lbsr   OUTSTR
-
-PAUBUT   ldx    #6          Sleep for 6 ticks
-         lbsr   WAIT
-*    Get joystick data using SS.JOY
-         lda    PATH
-         ldb    #$13
-         ldx    PORT,U
-         os9    I$GetStt
-         lbcs   ERR1
-         sta    BUTTON 
-
-         ldb    BUTTON      Check button
-         beq    PAUBUT
-         clr    BUTTON
-
-         leax   PAUEND,pcr  Point to pause end
-         ldy    #2
-         lbsr   OUTSTR
-
-         lbra   MAIN
-
-
-WAIT4    lbsr   READ        Go wait for keypress
-         rts
-
-*****  Game over  *****
-*   Used for 1 player mode and for
-*   player 2 in two player mode
-*   Ask player if they want to play again 
-
-GAMOVR:  leax   GMOVER,pcr  Point to GAME OVER string
-         ldy    #23         Output 23 bytes
-         lbsr   OUTSTR
-
-         ldx    #100
-         lbsr   WAIT        Sleep for 100 ticks
-         leax   PAUEND,pcr
-         ldy    #2
-         lbsr   OUTSTR
-
-         leax   SELECT,pcr
-         ldy    #2
-         lbsr   OUTST2
-
-         lbsr   SCEND       Display high scores
-
-         leax   BOTWIN,pcr
-         ldy    #47
-         lbsr   OUTST2
-
-         leax   PLYAGN,pcr  Point to PLAY AGAIN
-         ldy    #27         Output 27 bytes
-         lbsr   OUTST2      Go output string
-
-         lbsr   READ2       Go get response
-
-         clrb               Clear reset flag
-         lda    RESPON
-         cmpa   #89         Was it a Y ?
-         bne    CKLOW
-         incb               Set flag
-CKLOW    cmpa   #121        Was it a y ?
-         bne    CKFLAG
-         incb               Set flag
-CKFLAG   cmpb   #0          Is flag clear ?
-         bne    NOEX
-         leax   BOTEND,pcr
-         ldy    #15
-         lbsr   OUTST2
-         ldb    #0
-         lbra   EXIT
-
-NOEX     leax   BOTEND,pcr
-         ldy    #15
-         lbsr   OUTST2
-
-         leax   CLEAR,pcr   Clear board screen
-         ldy    #1
-         lbsr   OUTSTR
-
-*   Compare Players score to High score 
-
-COMHGH   ldb    #7          Set loop counter to 7
-         leay   HSCASC,U    Point to High ascii
-         leax   SCRASC-1,U  Point to Player ascii -1
-CMLOOP   decb               Decrement loop counter
-         beq    COMEND      Exit loop
-         lda    ,Y+
-         leax   1,X
-         cmpa   ,X
-         beq    CMLOOP
-         bhi    COMEND
-
-         ldb    #6          Set new loop counter
-         leax   HSCASC,U
-         leay   SCRASC,U
-C2LOOP   lda    ,Y+
-         sta    ,X+
-         decb
-         bne    C2LOOP
-
-COMEND   ldb    #1          Set restart flag
-         stb    RSFLAG
-         lbra   RESTART     Go restart
-
-GAMOV2:  leax   GMOVER,pcr  Point to GAME OVER string
-         ldy    #23         Output 23 bytes
-         lbsr   OUTSTR
-
-         ldx    #150
-         lbsr   WAIT        Sleep for 100 ticks
-         leax   PAUEND,pcr  Kill overlay window
-         ldy    #2
-         lbsr   OUTSTR
-
-         leax   SELECT,pcr
-         ldy    #2
-         lbsr   OUTST2
-
-         lbsr   SCEND       Display high scores
-
-         rts
-
-EXIT     nop
-         leax   KILBUF,U
-         ldy    #4          Output 4 bytes 
-         lbsr   OUTSTR      Go kill buffers
-         leax   DWEND,pcr
-         ldy    #2
-         bsr    OUTSTR      End the game screen
-         ldb    #0
-QUIT     os9    F$Exit      Exit program
-
-*    Do READ from PATH 
-READ:    lda    PATH
-         leax   RESPON,U    Put read char. here
-         ldy    #1          Get 1 char.
-         os9    I$Read      Go do read
-         lbcs   ERR1
-         rts
-
-*    Do READ from PATH2
-READ2:   lda    PATH2
-         leax   RESPON,U
-         ldy    #1          Get 1 char.
-         os9    I$Read      Go do read
-         lbcs   ERR1
-         rts
-
-OUTSTR:  lda    PATH        Get path number
-         os9    I$Write     Output string till CR
-         lbcs   ERR1
-OTDONE   rts
-
-POPUP:   pshs   X
-         pshs   Y
-         leax   POPWIN,pcr
-         ldy    #17
-         bsr    OUTST2
-         puls   Y
-         puls   X
-OUTST2:  lda    PATH2
-         os9    I$Write
-         lbcs   ERR1
-         rts
-
-*     This routine is used to sleep for
-*     a while. On entry the X reg. holds
-*     the number of ticks to sleep
-
-WAIT:    os9    F$Sleep
-         lbcs   ERR1
-         rts
-
-PUTBLK:  pshs   X,Y
-         leax   PUTCODE,U   Point to putblk code rmb's
-         ldy    #8          Output 8 bytes
-         lda    PATH        Set output path
-         os9    I$Write     Output putblk code bytes
-         lbcs   ERR1        Branch if any errors
-         puls   X,Y
-         rts                Return to calling routine
-
-PUTGHT:  leax   PUTGHS,U    Point to putghs code rmb's
-         ldy    #8          Output 8 bytes
-         lda    PATH        Set output path
-         os9    I$Write     Output putghs code bytes
-         lbcs   ERR1        Branch if any errors
-         rts                Return to calling routine
-
-*   Sound routines
-*    On entry X & Y regs. are already 
-*    loaded with sound data
-
-SND:     lda    PATH
-         ldb    #$98
-         os9    I$SetStt
-         rts
-
-*   Random number routine
-*    Will return random number in A reg.
-
-RANDNM:  stx    SAVEX       Save X reg.
-         leax   RANNUM,U    Point to random number
-         lda    ,X
-         rola
-         eora   ,X
-         rora
-         inc    1,X
-         adda   1,X
-         bvc    RDSKIP
-         inc    1,X
-RDSKIP   sta    ,X
-         ldx    SAVEX       Restore X reg.
-         rts                Return, A reg. holds number
-
-*   Ring the bell
-BELL:    leax   BELCOD,pcr
-         ldy    #1
-         lbsr   OUTST2
-         rts
-
-ERR1:    lbra   EXIT        Do select and dwend
-ERR2     lbra   QUIT        Dont do select or dwend
-
-
-
-         ENDSECT
-
-
-                                                                              
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/pacos9/main90.as	Sat Feb 08 01:03:26 2014 +0100
@@ -0,0 +1,1126 @@
+
+         NAM    MAIN
+         TTL    Main pacman routine
+
+*     Program segment to be compiled using Level II RMA
+*           This is the mainline program segment
+*                 Written by Larry Olson
+
+         IFP1
+*         use    /dd/defs/os9defs.a
+         ENDc
+
+TYPE     EQU    $11          Prgrm($10)+Objct($01)
+ATTR     EQU    $80          REEntrent
+REVS     EQU    $01          Revision level
+ATREV    EQU    ATTR+REVS
+EDITION  EQU    2            EDITION #2
+STACK    EQU    500
+UPDAT    EQU    3
+
+         PSECT  MAIN,TYPE,ATREV,EDITION,STACK,PAC
+
+         VSECT
+
+*    Local and global variables
+
+SIGCODE  RMB    1         Intercept signal RMB
+PATH:    RMB    1         Screen path number
+PATH2:   RMB    1         Second screen path number
+WINDOW:  RMB    1         Holds 0 or 2 to keep track
+*                          of which window is being used
+PROCID:  RMB    1         Holds process id
+RESPON:  RMB    2         Holds response bytes
+
+
+PORT:    RMB    2         Joystick port (0=right,1=left)
+BUTTON:  RMB    1         Joystick button status
+JOYSTX:  RMB    2         Joystick X value
+JOYSTY:  RMB    2         Joystick Y value
+
+PLAYRS:  RMB    1         Holds 0 or 1 (for 1 or 2 players)
+
+PACMN1:  RMB    1         Holds number of pacmen left(player1)
+PACMN2:  RMB    1         Holds number of pacmen left(player2)
+PLCRNT:  RMB    1         Holds current player number(1 or 2)
+PACMAN:  RMB    1         Holds current number of men left
+*                         this will be either PACMN1 or PACMN2 
+
+PXNEW:   RMB    2         New pacman X position
+PYNEW:   RMB    2         New pacman Y position
+POFSET:  RMB    2         Pacman offset from start of array
+BUFF:    RMB    1         Holds current pacman buffer #
+
+CYCLE:   RMB    1         Used to cycle between buffers
+
+HITFLG:  RMB    1         A 1 here = pacman caught
+GHTHIT:  RMB    1         Ghost hit flag
+POWFLG:  RMB    1         When pacman eats a power pill then
+*                         this location holds a timer value
+
+BONFLG:  RMB    1         Bonus on screen flag
+BONTIM:  RMB    1         Bonus timer
+BONBUF:  RMB    1         Current bonus buffer
+BONUSX:  RMB    2         Bonus X location at bottom of scrn
+BONUSY:  RMB    2         Bonus Y location at bottom of scrn
+BONCNT:  RMB    1         Bonus counter
+BONTAB:  RMB    10        Bonus item table
+
+BONTMP:  RMB    2         Temporary storage 
+BTEMP:   RMB    15        Used to hold BONUSX,BONUSY,BONCNT
+*                          and BONTAB  for 2 player mode
+SNDPR1:  RMB    2
+SNDPR2:  RMB    2
+
+*     Ghost tables, One 20 byte table for each ghost
+
+G1OFST:  RMB    2         Ghost position offset from start of array
+G1XNEW:  RMB    2         Screen X location of ghost
+G1YNEW:  RMB    2         Screen Y location of ghost
+G1XOLD:  RMB    2         Pseudo scrn X location of ghost
+G1YOLD:  RMB    2         Pseudo scrn Y location of ghost
+G1STAT:  RMB    1         Status flag for ghost
+*                          -2 = Eyes are caged,timer not run out
+*                          -1 = Ghost caged,timer not run out
+*                           0 = Ghost still in cage but moving out
+*                           1 = Ghost is free of cage,can move around
+*                           2 = Ghost has been turned into eyes
+G1BUFF:  RMB    1         Holds current buffer # for ghost
+G1TIME:  RMB    1         Ghost time out counter
+TIMVAL:  RMB    1         Ghost initial time out value
+G1DIR:   RMB    1         Ghost dir. (0=up,1=lf,2=rt,3=dn)
+DIROFF:  RMB    1         Direction offset (-69,-1,1,69)
+G1UPDT:  RMB    1         Holds update value to be count down
+UPDATE:  RMB    1         Initial update value
+         RMB    2         Extra bytes
+
+G2OFST:  RMB    20        Table for ghost #2
+
+G3OFST:  RMB    20        Table for ghost #3
+
+G4OFST:  RMB    20        Table for ghost #4
+
+GCOUNT:  RMB    1         Holds num (0,20,40,60) of current ghost
+
+SCRPOS:  RMB    3         Player 1 score xy print position
+SCRASC:  RMB    6         Score ascii characters put here
+SCRBCD:  RMB    3         Contains score in BCD
+POINTS:  RMB    3         Points that will be added to score
+SHCNT:   RMB    1         Temporary loop counter
+
+***********  These are used in 2 player mode  ***********
+
+SCRPO2:  RMB    3         Player 2 score xy print position 
+SCRAS2:  RMB    6         Score ascii characters put here
+SCRBC2:  RMB    3         Contains score in BCD
+
+DOTTOT:  RMB    2         Dot eaten total, used to show when
+*                          screen has been cleared
+SCNTOT:  RMB    2         Total number of dots for
+*                           The current screen
+BRDNUM:  RMB    1         Holds # of current board(starts at 1)
+SCNFLG:  RMB    1         Screen flag, starts at 2, is decremented
+*                          when a scrn is cleared. When 0 a new
+DOTTMP:  RMB    2         Holds dot eaten total in 2 player mode
+SCTOT2:  RMB    2         Holds scrn dot total in 2 player mode
+*                          screen is issued.
+BRDTMP:  RMB    1         Holds board # in 2 player mode
+SCFTMP:  RMB    1         Holds screen flag in 2 player mode
+
+DOTCNT:  RMB    2         Dot counter in transfer routine
+
+RANNUM   RMB    1         Random number variable
+ADDEND   RMB    1         Used in random number generator
+SAVEX    RMB    2         Save X reg. in random routine
+
+RSFLAG:  RMB    1         Restart game flag
+
+PUTPACM: RMB    2         $1b,$2d will be put here
+PCGBN:   RMB    1         Group buff#, Process ID put here
+PCBFN:   RMB    1         Buffer number
+PCXLOC:  RMB    2         Putpacm X location
+PCYLOC:  RMB    2         Putpacm Y location
+
+PUTCODE: RMB    2         $1b,$2d will be put here
+PGBN:    RMB    1         Group buff#, Process ID put here
+PBFN:    RMB    1         Buffer number
+PXLOC:   RMB    2         Putblk X location
+PYLOC:   RMB    2         Putblk Y location
+
+PUTGHS:  RMB    2         $1b,$2d will be put here
+PGGBN:   RMB    1         Group buff#, Process ID +1 put here 
+PGBFN:   RMB    1         Buffer number
+PGXLOC:  RMB    2         PUTGHS X location
+PGYLOC:  RMB    2         PUTGHS Y location
+
+DOTCODE: RMB    2         $1b,$2d will be put here
+PDGBN:   RMB    1         Group buff#, Process ID put here
+PDBFN:   RMB    1         Buffer number
+PDXLOC:  RMB    2         Putdot X location
+PDYLOC:  RMB    2         Putdot Y location
+
+XSAVE:   RMB    2         Temp. storage for X reg.
+
+STRLGH:  RMB    1         Length of palette set string to send
+STRING:  RMB    16        Build palette set string here  
+
+PALBT1:  RMB    4
+PALBT2:  RMB    4
+
+HISPOS:  RMB    3         High score screen print position
+HSCASC:  RMB    6         High score ascii characters
+
+KILBUF:  RMB    4         $1b,$2a,procid,0 will be put here
+KILBF2:  RMB    4         $1b,$2a,procid +1,0 will be put here
+
+MOVFLG:  RMB    1         Delay flag used in movpac
+
+EXTPAC:  RMB    1         Extra pacman match number
+
+EXTPC2:  RMB    1         Holds match number in 2 player mode
+
+*   32 byte area for SS.Mouse packet
+*   only used for Pt.Valid info
+MOUSE:   RMB    1         Pt. Valid
+         RMB    31        not used
+
+GHTABL:  RMB    80        Duplicate ghost data table
+
+TABLE1:  RMB    612       Used to save screen info for
+*                          player 1 in 2 player mode
+TABLE2:  RMB    612       Used to save screen info for
+*                          player 2 in 2 player mode.
+SCNNUM:  RMB    12        Screen number
+
+
+         RMB    150
+
+ARRAY:   RMB    3726
+ARREND:  RMB    4
+         RMB    150
+
+         RMB    STACK
+
+         ENDSECT
+
+PTHLST   FCS    "/W"
+DWSET    FCB    $1B,$20,08,00,00,40,24,01,02,02
+DWEND    FCB    $1B,$24
+SELECT:  FCB    $1b,$21
+CLEAR:   FCB    $0C
+CLREND:  FCB    $0b
+CUROFF   FCB    $05,$20
+BOLDSW:  FCB    $1b,$3d,1
+BELCOD:  FCB    $07
+PLLST1:  FCB    $1b,$31,7,7,$1b,$33,7,$1b,$34,7
+PLLST2:  FCB    $1b,$31,6,25,$1b,$31,14,25
+SCNRST:  FCB    $1b,$25,0,0,40,24
+POPWIN:  FCB    $07,$1b,$25,7,8,24,9,$1b,$22
+         FCB    1,0,0,22,7,2,0,$0c
+
+POPEND:  FCB    $07,$1b,$23,$1b,$25,8,9,22,7
+         FCB    $1b,$32,1,$1b,$33,0
+
+BOTWIN:  FCB    $1b,$25,0,0,40,24,$07
+         FCB    $1b,$22,1,5,15,28,8,0,2,$0c
+         FCB    $1b,$25,1,1,27,7,$1b,$33,2,$0c
+         FCB    $1b,$25,0,0,27,7,$1b,$33,4,$0c
+         FCB    $1b,$25,1,1,25,5,$1b,$33,0,$0c
+
+BOTEND:  FCB    7,$1b,$23,$1b,$25,8,9,23,8
+         FCB    $1b,$32,1,$1b,$33,0
+
+TITLE:   FCB    $1b,$33,2,$1b,$25,13,1,11,5
+         FCB    $0c,$1b,$33,1,$1b,$25,12,0,11
+         FCB    5,$0c,$1b,$32,2,$1b,$33,0,$1b
+         FCB    $25,13,1,9,3,$0c,2,33,33,80
+         FCB    65,67,45,79,83,57
+
+SCRBOX:  FCB    $1b,$33,2,$1b,$25,7,8,25,10,$0c
+         FCB    $1b,$33,1,$1b,$25,6,7,25,10,$0c
+         FCB    $1b,$32,2,$1b,$33,0,$1b,$25,7,8
+         FCB    23,8,$0c,$1b,$25,8,9,22,7
+
+*    Select Start Screen # ?
+STRSCN   FCB    2,35,36,83,116,97,114,116,32
+         FCB    83,99,114,101,101,110,32,35
+         FCB    32,63,2,50,36
+*    Select Joystick Port
+*     (L)eft or (R)ight --> ?
+SELJOY   FCB    2,33,33,83,101,108,101,99,116,32
+         FCB    74,111,121,115,116,105,99,107,32
+         FCB    80,111,114,116,2,34,35,66,121,32
+         FCB    80,114,101,115,115,105,110,103,32
+         FCB    66,117,116,116,111,110
+
+*    LEFT
+LFTSTR   FCB    $1b,$32,4,2,34,37,76,69,70,84,32
+         FCB    80,79,82,84,32
+*    RIGHT
+RGTSTR   FCB    $1b,$32,4,2,34,37,82,73,71,72,84
+         FCB    32,80,79,82,84
+SLCTED   FCB    $1b,$32,2,2,44,37,83,101
+         FCB    108,101,99,116,101,100
+
+*    Number of players
+*      (1 or 2) ?   
+PLYSTR   FCB    2,34,33,78,117,109,98,101,114,32
+         FCB    111,102,32,80,108,97,121,101,114,115
+         FCB    $1b,$32,3,2,33,34,40,106,111,121,115
+         FCB    116,105,99,107,32,77,111,118,101,115
+         FCB    32,66,111,120,41,$1b,$32,4,2,38,36
+         FCB    49,2,47,36,50,$1b,$32,1,2,34,38,83
+         FCB    101,108,101,99,116,32,87,105,116
+         FCB    104,32,66,117,116,116,111,110
+
+CURXY    FCB    2,62,54
+
+CURXY1   FCB    2,61,54
+
+CURXY2   FCB    2,47,50
+
+CURXY3   FCB    2,37,23
+
+CURXY4   FCB    2,60,55
+
+CURXY5   FCB    2,38,52
+*    Player #1
+PL1:     FCB    $1b,$32,4,2,47,50,80,76,65,89,69,82,32,35,49
+*    Player #2
+PL2:     FCB    $1b,$32,4,2,47,50,80,76,65,89,69,82,32,35,50
+*   ** Pause **
+PAUSE    FCB    $1b,$22,1,14,23,13,1,0,10,32
+         FCB    42,42,32,80,65,85,83,69,32,42,42
+*    Close pause overlay or Hiscore overlay
+PAUEND:  FCB    $1b,$23
+*    Get Ready
+GETRDY:  FCB    2,39,36,71,69,84,32,82,69,65,68,89
+*    Get Ready Player 1
+GETRD1:  FCB    2,39,34,$1b,$32,1,80,108,97,121,101
+         FCB    114,32,49,$1b,$32,2,2,39,36,71,69
+         FCB    84,32,82,69,65,68,89
+*    Get ready Player 2
+GETRD2:  FCB    2,39,34,$1b,$32,1,80,108,97,121,101
+         FCB    114,32,50,$1b,$32,2,2,39,36,71,69
+         FCB    84,32,82,69,65,68,89
+*    Game Over
+GMOVER   FCB    $1b,$22,1,13,8,14,5,10,2,$0c,2,34
+         FCB    34,71,65,77,69,32,32,79,86,69,82
+*    Play Again (y/n) ?
+PLYAGN   FCB    $1b,$32,4,2,35,34,80,76,65,89,32,65
+         FCB    71,65,73,78,32,40,89,47,78,41,32,63
+         FCB    2,52,34
+*    QUIT PROGRAM (Y/N) ?
+BRKKEY:  FCB    $1b,$32,10,$1b,$22,1,8,9,24,3
+         FCB    10,2,2,34,33,81,85,73,84,32
+         FCB    80,82,79,71,82,65,77,32
+         FCB    40,89,47,78,41,32,63
+*    Close 
+*  break overlay
+BRKEND:  FCB    $1b,$23
+*    SCREEN BONUS
+*    1000  POINTS
+SCNBON:  FCB    $1b,$32,10,$1b,$22,1,12,9,16,4,10
+         FCB    2,2,34,33,83,67,82,69,69,78,32
+         FCB    66,79,78,85,83,2,34,34,49,48
+         FCB    48,48,32,32,80,79,73,78,84,83
+*    Close Screen bonus overlay
+SCBEND:  FCB    $1b,$23
+*    100   High   Score   0
+HSTRING  FCB    $1b,$32,10
+HSTRG2   FCB    2,34,32,32,32,49,48,48,48
+SCOR1    FCB    $1b,$32,10
+         FCB    2,43,32,72,73,71,72,2,55,32
+         FCB    83,67,79,82,69,2,69,32,48
+*    0  Player #1   <-UP    Player #2       0
+SCOR2    FCB    $1b,$32,10,2,32,32,32,32,32
+         FCB    32,32,48,32,80,76,65,89,69
+         FCB    82,32,35,49,32,$1b,$32,12,60
+         FCB    45,$1b,$32,9,85,80,32,32,32
+         FCB    $1b,$32,10,80,76,65,89,69,82
+         FCB    32,35,50,32,32,32,32,32,32,48
+*      This will print  <-UP
+SCR1:    FCB    $1b,$32,12,2,49,32,60,45,$1b
+         FCB    $32,9,85,80,32,32,$1b,$32,10
+*      This will print    UP->
+SCR2:    FCB    $1b,$32,9,2,49,32,32,32,85,80
+         FCB    $1b,$32,12,45,62,$1b,$32,10
+
+
+*    Open window #1
+PAC      lda    #UPDAT      Set for OPEN with UPDATE
+         leax   PTHLST,pcr  Point to addr of Path list
+         os9    I$Open      Open path to window
+         lbcs   ERR2
+         sta    PATH        Save path number
+         leax   DWSET,pcr   Point to DWSET code
+         ldy    #10         Output 10 bytes
+         lda    PATH        Get path number
+         os9    I$Write     Output DWSET code
+         lbcs   ERR2
+
+*    Open window #2
+
+         lda    #UPDAT      Set for OPEN with UPDATE
+         leax   PTHLST,pcr  Point to addr of Path list
+         os9    I$Open      Open path to window
+         lbcs   ERR2        Branch if any errors
+         sta    PATH2       Save path number 2
+         leax   DWSET,pcr   Point to DWSET code
+         ldy    #10         Output 10 bytes
+         lda    PATH2       Get path number
+         os9    I$Write     Output DWSET code
+         lbcs   ERR2        Branch if any errors
+*    Setup window #2
+         leax   BOLDSW,pcr
+         ldy    #3
+         lbsr   OUTST2
+         leax   CUROFF,pcr  Point to cursor OFF code
+         ldy    #2          Output 2 bytes
+         lbsr   OUTST2      Output cursor off string
+         leax   PLLST1,pcr  Set grey background
+         ldy    #10
+         lbsr   OUTST2
+         leax   CLEAR,pcr   Point to clear screen code
+         ldy    #1          Output 1 byte
+         lbsr   OUTST2      Output clear screen string
+*   Select Window #2
+         lda    PATH2       Get path number
+         leax   SELECT,pcr  Point to SELECT code
+         ldy    #2          Output 2 bytes
+         os9    I$Write     Output select code
+         lbcs   ERR1
+         lda    #2
+         sta    WINDOW      Selecting window #2
+
+         leax   TITLE,pcr   Put title on screen
+         ldy    #43
+         lbsr   OUTST2
+
+         leax   SCNRST,pcr  Reset screen to 40,24
+         ldy    #6
+         lbsr   OUTST2
+
+*    Setup window #1
+         leax   BOLDSW,pcr
+         ldy    #3
+         lbsr   OUTSTR
+         leax   CUROFF,pcr  Point to cursor OFF code
+         ldy    #2          Output 2 bytes
+         lbsr   OUTSTR      Output cursor off string
+         leax   CLEAR,pcr   Point to clear screen code
+         ldy    #1          Output 1 byte
+         lbsr   OUTSTR      Output clear screen code
+
+GETID    os9    F$ID        Get process ID
+         sta    PROCID      Will be used for GBN
+
+*    Get system time and use the seconds value to
+*        seed the random number generator.
+*    The 2 bytes for the seconds will be put in
+*             RANNUM and ADDEND 
+
+SEEDER   leax   PALBT2,U    Put time bytes here
+         os9    F$Time      Go get time bytes
+         lbcs   ERR1        Branch if any errors
+
+***   Set trap for BREAK key   ***
+
+KEYTRAP: leax   TRAP,pcr
+         os9    F$Icpt
+         lbcs   ERR1
+         bra    FILSTR
+
+TRAP     stb    SIGCODE,U
+         rti    Return from interrupt
+
+
+*    Preload Dotcode, Putcode and Getcode strings
+
+FILSTR   ldd    #$1b2d      Code for PUTBLK
+         std    PUTPACM
+         std    PUTGHS
+         std    PUTCODE     Put it in Putblk string
+         std    DOTCODE     Put it in Putblk string
+         lda    PROCID      Get Process I.D.
+         sta    PCGBN
+         sta    PGBN        Set Group Buffer #
+         sta    PDGBN       Set Group Buffer #
+         sta    PGGBN       Set Group Buffer #
+
+         leax   KILBUF,U    Point to KILBUF string
+         ldd    #$1b2a      Kill buffer code 
+         std    ,X++
+         lda    PROCID      Get process I.D.
+         sta    ,X+
+         lda    #$00
+         sta    ,X 
+         ldd    #$1b31
+         std    PALBT1,U
+         std    PALBT2,U
+
+         leax   HSTRG2,pcr
+         leay   HISPOS,U
+         ldb    #9
+HSLOOP   lda    ,X+
+         sta    ,Y+
+         decb
+         bne    HSLOOP
+
+         clr    RSFLAG
+         clr    SIGCODE
+         clr    BUTTON
+
+         lbsr   SBEGIN      Read & display high scores
+
+RESTART  nop                Come here to restart game
+
+*    Setupb will fill all object buffers
+**************************************
+*         For testing
+*   To see all the objects that are put
+*   into the buffers, remove the REM's
+*   at locations #1, #2 and change the
+*   PATH2 to PATH at location #3
+
+**************************************
+*         leax   SELECT,pcr      #1
+*         ldy    #$0002          #1
+*         lbsr   OUTSTR          #1
+*         clr    WINDOW          #1
+**************************************
+
+SETBUF    lda    #1         Set board # to 1
+          sta    BRDNUM
+          sta    BRDTMP
+
+SKPCL2   lda    #2         Set screen count flag to 2
+         sta    SCNFLG
+         sta    SCFTMP
+
+         tst    RSFLAG     Check restart flag
+         bne    SETBF2     If no restart then
+         lbsr   SETUPB      go draw objects
+
+SETBF2   lbsr   SETUPC          
+
+         ldd    SCNTOT     Get screen dot total
+         std    SCTOT2     Copy to temporary
+
+**************************************
+*         lda    PATH            #2
+*         leax   RESPON,U        #2
+*         ldy    #1              #2
+*         os9    I$Read          #2
+*         lbcs   ERR1            #2
+**************************************
+CLSCRN   leax   CLEAR,pcr   Point to clear screen code
+         ldy    #1          Output 1 char.
+         lbsr   OUTSTR      Go output clear screen code
+
+         lda    RSFLAG      Check restart flag
+         lbne   SETVR1      Branch if restarting
+
+         leax   SELJOY,pcr  Point to joystick select
+         ldy    #44         Output 44 bytes
+         lbsr   POPUP       Do popup and output SELJOY
+
+JYLOOP   lda    PATH2,U
+         ldb    #$13
+         ldx    #0
+         os9    I$GetStt
+         lbcs   ERR1
+         ldb    #0
+         cmpa   #0
+         bne    PUTPRT
+         lda    PATH2,U
+         ldb    #$13
+         ldx    #1
+         os9    I$GetStt
+         lbcs   ERR1
+         ldb    #1
+         cmpa   #0
+         beq    JYLOOP
+
+PUTPRT   clra
+         std    PORT,U      Put value in PORT 
+         leax   LFTSTR,pcr
+         ldy    #16
+         cmpd   #0
+         bne    PTDSPL
+         leax   RGTSTR,pcr
+PTDSPL   lbsr   OUTST2
+         leax   SLCTED,pcr
+         ldy    #14
+         lbsr   OUTST2
+
+         ldx    #100
+         lbsr   WAIT        Pause for 50 ticks
+
+         leax   PAUEND,pcr
+         ldy    #2
+         lbsr   OUTST2
+
+         ldx    #75
+         lbsr   WAIT
+
+         leax   PLYSTR,pcr  Point to players string
+         ldy    #81         Output 81 bytes
+         lbsr   POPUP       Do popup and output PLYSTR
+
+*   Put square
+PUTSQR   ldd    #$1b32
+         std    STRING,U
+         lda    #1
+         sta    STRING+2,U
+         ldd    #$1b40
+         std    STRING+3,U
+         ldd    #168
+         std    STRING+5,U
+         ldd    #100
+         std    STRING+7,U
+         ldd    #$1b48
+         std    STRING+9,U
+         ldd    #208
+         std    STRING+11,U
+         ldd    #143
+         std    STRING+13,U
+         leax   STRING,U
+         ldy    #15
+         lbsr   OUTST2
+
+         lda    #0          Default = 1 player
+         sta    JOYSTY
+
+NUMLOP   lda    PATH2
+         ldb    #$13
+         ldx    PORT,U
+         os9    I$GetStt
+         lbcs   ERR1
+         stx    JOYSTX
+         sta    BUTTON
+         bne    GOTBUT
+         tfr    X,D
+         lda    #1
+         cmpb   #42
+         bge    PUTNUM
+         lda    #0
+
+PUTNUM   sta    JOYSTY
+         lda    #0
+         sta    STRING+2,U
+         leax   STRING,U
+         ldy    #15
+         lbsr   OUTST2
+
+         lda    JOYSTY
+         cmpa   #0
+         bne    PUTLFT
+         ldd    #168
+         std    STRING+5,U
+         ldd    #208
+         std    STRING+11,U
+         bra    DRWSQR
+PUTLFT   ldd    #432
+         std    STRING+5,U
+         ldd    #472
+         std    STRING+11,U
+DRWSQR   lda    #1
+         sta    STRING+2,U
+         leax   STRING,U
+         ldy    #15
+         lbsr   OUTST2
+         bra    NUMLOP
+
+GOTBUT   lda    JOYSTY
+         sta    PLAYRS
+
+         ldx    #100
+         lbsr   WAIT
+
+         leax   PAUEND,pcr
+         ldy    #2
+         lbsr   OUTST2
+
+SETVR1   ldd    #308
+         std    PXNEW       Pacman starting X location
+         std    PCXLOC
+         ldd    #94
+         std    PYNEW       Pacman starting Y location
+         std    PCYLOC
+         ldd    #1966       Set initial pacman array offset
+         std    POFSET
+         lda    #3
+         sta    CYCLE       Set cycle to 3
+         lda    #28
+         sta    BUFF        Set starting pacman buffer
+         lda    #80         Setup ghost counter value
+         sta    GCOUNT
+         clr    HITFLG      Pacman hit flag
+         clr    POWFLG      Power pill flag
+         lda    #3
+         sta    PACMN1      Set # of players to 3
+         sta    PACMN2      Set # of players to 3
+         sta    PACMAN      Set current pacman to 3
+         lda    #1
+         sta    PLCRNT      Set current player to #1
+         sta    EXTPAC,U    Extra pacman goal byte
+         sta    EXTPC2,U    Goal for player 2
+         ldd    #0
+         std    DOTTOT      Dot and pill total
+         std    DOTTMP      Dot & pill total, player2
+
+         lda    #69
+         sta    BONBUF
+         clr    BONFLG
+         lda    #150
+         sta    BONTIM
+         leax   BTEMP,U
+         ldd    #8
+         std    BONUSX      Set X starting location
+         std    ,X++
+         ldd    #181
+         std    BONUSY      Set Y starting location
+         std    ,X++
+         clr    BONCNT      Clear bonus counter
+         clr    ,X
+
+         lda    PLAYRS      Check flag
+         beq    GRDY        If 0 then only 1 player
+         lbsr   BELL
+         leax   GETRD1,pcr
+         ldy    #29
+         lbsr   POPUP
+         bra    DRWBRD
+GRDY     lbsr   BELL
+         leax   GETRDY,pcr   Print GET READY
+         ldy    #12
+         lbsr   POPUP       Do popup and output GETRDY
+
+*    Now draw board and place objects
+
+DRWBRD   lbsr   BOARDC
+
+
+*    Select approprite header for 1 or 2 player mode
+
+HEADER   lda    PLAYRS      Check for 1 or 2 players
+         bne    HEADR2
+         leax   SCOR1,pcr   Point to 1 player header
+         ldy    #22         Output 22 bytes
+         lbsr   OUTSTR
+         leax   HSTRING,pcr Position curser
+         ldy    #3          Output 3 bytes
+         lbsr   OUTSTR
+         leax   HISPOS,U    Point to HIGH score
+         ldy    #9          output 9 bytes
+         lbsr   OUTSTR
+         bra    SELSCN
+HEADR2   leax   SCRPOS,U    Point to score string
+         lda    #32
+         sta    1,X         Set curser X location
+         leax   SCOR2,pcr   Point to 2 player header
+         ldy    #55         Output 55 bytes
+         lbsr   OUTSTR
+
+*    Now select playing screen
+
+SELSCN   lbsr   BELL
+
+         leax   SELECT,pcr  Point to select code
+         ldy    #2          Output 2 bytes
+         lbsr   OUTSTR      Go to output routine
+         clr    WINDOW      Flag for window 0
+
+         leax   POPEND,pcr
+         ldy    #15
+         lbsr   OUTST2
+
+*     Main program loop
+*
+MAIN:    lbra   CHECKS      Go check & move ghosts
+MAIN1:   lbsr   MVPAC       Go move pacman 
+
+*     Check for signals (break key)
+
+         ldb    SIGCODE,U
+         cmpb   #2          Was it the break key ?
+         bne    NOBRK
+         leax   BRKKEY,pcr  Point to string
+         ldy    #35         Output 35 bytes
+         lbsr   OUTSTR
+         clr    RESPON,U
+
+         lbsr   READ        Flush input buffer
+
+         lbsr   READ        Go get input
+
+         leax   BRKEND,pcr  Erase BRKKEY prompt
+         ldy    #2          Output 2 bytes
+         lbsr   OUTSTR
+         clr    SIGCODE,U   Clear signal flag
+
+         lda    RESPON,U    Check input
+         cmpa   #89         Was it a Y ?
+         beq    YESBRK
+         cmpa   #121        Was it a y ?
+         bne    NOBRK
+
+YESBRK   leax   SELECT,pcr
+         ldy    #2
+         lbsr   OUTST2
+
+         lbsr   SCEND
+         ldx    #50
+         lbsr   WAIT        Sleep for 50 ticks
+         lbra   EXIT        Quit program
+
+NOBRK    ldd    DOTTOT      Get dot total
+         cmpd   SCNTOT      Cleared the screen yet?
+         lbne   CHKBUT
+
+         ldx    #80
+         lbsr   WAIT        Pause for 80 ticks
+*   Display SCREEN BONUS
+         leax   SCNBON,pcr
+         ldy    #42  
+         lbsr   OUTSTR
+*   Make noise
+         ldx    #$3f06
+         ldy    #3000
+         lbsr   SND
+         ldy    #2000
+         lbsr   SND
+         ldy    #3000
+         lbsr   SND
+         ldy    #2000
+         lbsr   SND
+*   Pause a few more seconds
+         ldx    #150
+         lbsr   WAIT
+*   Close SCREEN BONUS overlay
+         leax   SCBEND,pcr
+         ldy    #2
+         lbsr   OUTSTR
+*   Add 1000 points to score for clearing screen
+         lda    #16
+         sta    POINTS+1
+         clr    POINTS+2
+         lbsr   ADDUP
+         clr    POINTS+1
+*   Pause some more
+         ldx    #150
+         lbsr   WAIT
+*   Add up bonus items at bottom of screen
+
+         lbsr   CNTBON
+
+*   Select comment window
+
+         leax   SELECT,pcr
+         ldy    #2
+         lbsr   OUTST2
+
+         ldx    #300
+         lbsr   WAIT
+
+         ldb    PLAYRS      Get # of players(1=0,2=1)
+         beq    GTRDY       Only one player
+         lbsr   BELL
+         leax   GETRD1,pcr  Point player 1 string
+         ldy    #29         Output 29 bytes
+         ldb    PLCRNT      Get current pacman number
+         cmpb   #2          Is it player #2 ?
+         beq    PLNUM2
+         bra    PLOUT
+
+PLNUM2   leax   GETRD2,pcr  Point to player #2 string
+PLOUT    lbsr   POPUP       Go output string
+         bra    DOREST
+GTRDY    lbsr   BELL
+
+         leax   GETRDY,pcr  Point to GET READY string
+         ldy    #12         Output 12 bytes
+         lbsr   POPUP       Do popup and output GETRDY
+
+*   Reset screen 
+
+DOREST   lbsr   NEWSCN
+
+         ldx    #150
+         lbsr   WAIT
+
+         lbsr   BELL
+
+*   Select game window
+
+         leax   SELECT,pcr
+         ldy    #2
+         lbsr   OUTSTR
+
+         leax   POPEND,pcr
+         ldy    #15
+         lbsr   OUTST2
+
+*    The following routines are run once
+*    for every three times pacman moves
+*
+*    First check to see if pacman screen is the
+*        screen currently being displayed.
+*         If not, then sleep for 2 ticks.
+
+
+CHKBUT   lda    CYCLE       Check for CYCLE=2
+         cmpa   #2
+         lbne   MAIN
+
+*    Update Mouse packet
+
+CHKBT1   lda    PATH
+         ldb    #$89
+         leax   MOUSE,U
+         ldy    #0
+         os9    I$GetStt    Do a SS.MOUSE call
+         lbcs   ERR1
+         lda    MOUSE       Get Pt.Valid byte
+         bne    CHKBT2
+         ldx    #2
+         lbsr   WAIT        Sleep for 2 ticks
+         bra    CHKBT1      Loop till valid
+
+CHKBT2   lda    BUTTON      Check for button
+         lbeq   MAIN        Loop till button is pushed
+         leax   PAUSE,pcr   Point to pause string
+         ldy    #21         Output 21 bytes
+         lbsr   OUTSTR
+
+PAUBUT   ldx    #6          Sleep for 6 ticks
+         lbsr   WAIT
+*    Get joystick data using SS.JOY
+         lda    PATH
+         ldb    #$13
+         ldx    PORT,U
+         os9    I$GetStt
+         lbcs   ERR1
+         sta    BUTTON 
+
+         ldb    BUTTON      Check button
+         beq    PAUBUT
+         clr    BUTTON
+
+         leax   PAUEND,pcr  Point to pause end
+         ldy    #2
+         lbsr   OUTSTR
+
+         lbra   MAIN
+
+
+WAIT4    lbsr   READ        Go wait for keypress
+         rts
+
+*****  Game over  *****
+*   Used for 1 player mode and for
+*   player 2 in two player mode
+*   Ask player if they want to play again 
+
+GAMOVR:  leax   GMOVER,pcr  Point to GAME OVER string
+         ldy    #23         Output 23 bytes
+         lbsr   OUTSTR
+
+         ldx    #100
+         lbsr   WAIT        Sleep for 100 ticks
+         leax   PAUEND,pcr
+         ldy    #2
+         lbsr   OUTSTR
+
+         leax   SELECT,pcr
+         ldy    #2
+         lbsr   OUTST2
+
+         lbsr   SCEND       Display high scores
+
+         leax   BOTWIN,pcr
+         ldy    #47
+         lbsr   OUTST2
+
+         leax   PLYAGN,pcr  Point to PLAY AGAIN
+         ldy    #27         Output 27 bytes
+         lbsr   OUTST2      Go output string
+
+         lbsr   READ2       Go get response
+
+         clrb               Clear reset flag
+         lda    RESPON
+         cmpa   #89         Was it a Y ?
+         bne    CKLOW
+         incb               Set flag
+CKLOW    cmpa   #121        Was it a y ?
+         bne    CKFLAG
+         incb               Set flag
+CKFLAG   cmpb   #0          Is flag clear ?
+         bne    NOEX
+         leax   BOTEND,pcr
+         ldy    #15
+         lbsr   OUTST2
+         ldb    #0
+         lbra   EXIT
+
+NOEX     leax   BOTEND,pcr
+         ldy    #15
+         lbsr   OUTST2
+
+         leax   CLEAR,pcr   Clear board screen
+         ldy    #1
+         lbsr   OUTSTR
+
+*   Compare Players score to High score 
+
+COMHGH   ldb    #7          Set loop counter to 7
+         leay   HSCASC,U    Point to High ascii
+         leax   SCRASC-1,U  Point to Player ascii -1
+CMLOOP   decb               Decrement loop counter
+         beq    COMEND      Exit loop
+         lda    ,Y+
+         leax   1,X
+         cmpa   ,X
+         beq    CMLOOP
+         bhi    COMEND
+
+         ldb    #6          Set new loop counter
+         leax   HSCASC,U
+         leay   SCRASC,U
+C2LOOP   lda    ,Y+
+         sta    ,X+
+         decb
+         bne    C2LOOP
+
+COMEND   ldb    #1          Set restart flag
+         stb    RSFLAG
+         lbra   RESTART     Go restart
+
+GAMOV2:  leax   GMOVER,pcr  Point to GAME OVER string
+         ldy    #23         Output 23 bytes
+         lbsr   OUTSTR
+
+         ldx    #150
+         lbsr   WAIT        Sleep for 100 ticks
+         leax   PAUEND,pcr  Kill overlay window
+         ldy    #2
+         lbsr   OUTSTR
+
+         leax   SELECT,pcr
+         ldy    #2
+         lbsr   OUTST2
+
+         lbsr   SCEND       Display high scores
+
+         rts
+
+EXIT     nop
+         leax   KILBUF,U
+         ldy    #4          Output 4 bytes 
+         lbsr   OUTSTR      Go kill buffers
+         leax   DWEND,pcr
+         ldy    #2
+         bsr    OUTSTR      End the game screen
+         ldb    #0
+QUIT     os9    F$Exit      Exit program
+
+*    Do READ from PATH 
+READ:    lda    PATH
+         leax   RESPON,U    Put read char. here
+         ldy    #1          Get 1 char.
+         os9    I$Read      Go do read
+         lbcs   ERR1
+         rts
+
+*    Do READ from PATH2
+READ2:   lda    PATH2
+         leax   RESPON,U
+         ldy    #1          Get 1 char.
+         os9    I$Read      Go do read
+         lbcs   ERR1
+         rts
+
+OUTSTR:  lda    PATH        Get path number
+         os9    I$Write     Output string till CR
+         lbcs   ERR1
+OTDONE   rts
+
+POPUP:   pshs   X
+         pshs   Y
+         leax   POPWIN,pcr
+         ldy    #17
+         bsr    OUTST2
+         puls   Y
+         puls   X
+OUTST2:  lda    PATH2
+         os9    I$Write
+         lbcs   ERR1
+         rts
+
+*     This routine is used to sleep for
+*     a while. On entry the X reg. holds
+*     the number of ticks to sleep
+
+WAIT:    os9    F$Sleep
+         lbcs   ERR1
+         rts
+
+PUTBLK:  pshs   X,Y
+         leax   PUTCODE,U   Point to putblk code rmb's
+         ldy    #8          Output 8 bytes
+         lda    PATH        Set output path
+         os9    I$Write     Output putblk code bytes
+         lbcs   ERR1        Branch if any errors
+         puls   X,Y
+         rts                Return to calling routine
+
+PUTGHT:  leax   PUTGHS,U    Point to putghs code rmb's
+         ldy    #8          Output 8 bytes
+         lda    PATH        Set output path
+         os9    I$Write     Output putghs code bytes
+         lbcs   ERR1        Branch if any errors
+         rts                Return to calling routine
+
+*   Sound routines
+*    On entry X & Y regs. are already 
+*    loaded with sound data
+
+SND:     lda    PATH
+         ldb    #$98
+         os9    I$SetStt
+         rts
+
+*   Random number routine
+*    Will return random number in A reg.
+
+RANDNM:  stx    SAVEX       Save X reg.
+         leax   RANNUM,U    Point to random number
+         lda    ,X
+         rola
+         eora   ,X
+         rora
+         inc    1,X
+         adda   1,X
+         bvc    RDSKIP
+         inc    1,X
+RDSKIP   sta    ,X
+         ldx    SAVEX       Restore X reg.
+         rts                Return, A reg. holds number
+
+*   Ring the bell
+BELL:    leax   BELCOD,pcr
+         ldy    #1
+         lbsr   OUTST2
+         rts
+
+ERR1:    lbra   EXIT        Do select and dwend
+ERR2     lbra   QUIT        Dont do select or dwend
+
+
+
+         ENDSECT
+
+
+                                                                              
--- a/3rdparty/packages/pacos9/makefile	Mon Jan 27 23:49:14 2014 +0100
+++ b/3rdparty/packages/pacos9/makefile	Sat Feb 08 01:03:26 2014 +0100
@@ -1,14 +1,12 @@
 include $(NITROS9DIR)/rules.mak
 
-RFILES	= main90.r board90.r caged90.r check90.r ghosts90.r movpac90.r \
-	score90.r scrns90.r setup90.r
+OBJS = main90.o board90.o caged90.o check90.o ghosts90.o movpac90.o \
+       score90.o scrns90.o setup90.o
 
-all:
-
-pacos9: $(RFILES)
-	rlink  $(RFILES) -o=pacos9 -l=$(NITROS9DIR)/lib/sys6809l2.l
+pacos9: $(OBJS)
+	$(LINKER) $^ -opacos9 -L$(NITROS9DIR)/lib -lnos96809l2
 
 clean:
-	$(RM) $(RFILES) pacos9
+	$(RM) $(OBJS) pacos9
 
 info:
--- a/3rdparty/packages/pacos9/movpac90.a	Mon Jan 27 23:49:14 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,450 +0,0 @@
-
-         NAM    MOVPAC
-         TTL    Move pacman routines
-
-*     Program segment to be compiled using Level II RMA
-*           This is not a mainline program segment
-*                 Written by Larry Olson
-
-         IFP1
-*         use    /dd/defs/os9defs.a
-         ENDc
-
-
-STACK    EQU    100
-
-
-         PSECT  MOVPAC,0,0,2,STACK,MVPAC
-
-         VSECT
-
-*    Local variables
-
-         RMB    STACK
-
-         ENDSECT
-
-
-MVPAC:   nop
-
-*      Read joystick
-
-JOY      lda    PATH        Set path to window
-         ldb    #$13        Setup for SS.Joy
-         ldx    PORT,U      Get selected port
-         os9    I$GetStt
-         lbcs   ERR1
-         stx    JOYSTX
-         sty    JOYSTY
-         sta    BUTTON
-*    Cycle is used to animate pacman
-
-CYC      dec    CYCLE       Decrement cycle counter
-         bpl    MVRT        If >0 continue
-         lda    #2          Reset counter to 2
-         sta    CYCLE
-
-         clra
-         sta    MOVFLG,U
-
-*    Check direction of joystick & move pacman
-
-MVRT     leay   ARRAY,U     Point to start of array
-         ldd    POFSET      Get pacman offset in array
-         leax   D,Y
-*    X reg now points to pacman position in array
-         ldd    JOYSTX      Get joystick X value
-         cmpd   #37         Is it greater than 37 ?
-         blo    MVLFT       Go to move left
-
-         inc    MOVFLG,U
-
-         lda    1,X         Get adjacent byte from array
-         lbmi   MVDWN       If wall then go check for down
-         ldd    PCXLOC      GET pseudo screen X location
-         cmpd   PXNEW       Is it equal to actual location?
-         beq    SKIPR
-         addd   #8
-         std    PCXLOC
-SKIPR    ldd    PXNEW       Get actual screen X location
-         addd   #8          Add 8 to it
-         std    PXNEW       Put it back
-         ldd    PYNEW       Get screen Y location
-         std    PCYLOC      Set pyold = pynew
-         ldd    POFSET      Get pacman array offset
-         addd   #1          Increment it
-         cmpd   #1793       Is it off screen to the right ?
-         bne    STBUF1
-*   Erase pacman on right side of screen
-*   Before moving pacman to left side
-         lda    #37         Set for blank pacman
-         sta    PBFN        Put it in putblk code
-         ldd    #572 
-         std    PXLOC
-         ldd    #85
-         std    PYLOC
-         lbsr   PUTBLK      Go erase pacman
-
-         ldd    #44
-         std    PXNEW       Reset pac screen X to 36
-         subd   #8          Set pseudo X location
-         std    PCXLOC
-         lda    #1
-         ldd    #1726       Move pacman to left side
-STBUF1   std    POFSET      Store pacman array offset
-         leax   D,Y         Point to pacman position in array
-         lda    #25         Set pacman direction buffer
-         sta    BUFF          for right facing pacman
-         ldb    #1
-         lda    B,X         Get the byte at this spot
-         bmi    MVPAC1      Branch if wall
-         bita   #6          Check for a dot or pill
-         beq    MVPAC1
-         lbsr   ERPILL      Go erase pill or dot
-         bra    MVPAC1
-MVLFT    ldd    JOYSTX      Get joystick X value
-         cmpd   #27
-         bhi    MVDWN
-         inc    MOVFLG,U
-         lda    -1,X        Get byte 1 move to the left
-         bmi    MVDWN       Branch if wall
-         ldd    PXNEW       Get new pac position
-         subd   #8          Subtract 8 from it
-         std    PXNEW       Put it back
-         std    PCXLOC      Set pxold = pxnew
-         ldd    PYNEW
-         std    PCYLOC      Set pyold = pynew
-         ldd    POFSET      Get pacman array offset
-         subd   #1          Decrement it
-         cmpd   #1725       Is it off left side of screen ?
-         bne    STBUF2      If not then store hcount
-*   Erase pacman on left side of screen
-*   Before moving pacman to right side
-         lda    #37         Set for blank pacman
-         sta    PBFN        Put it in PUTBLK code
-         ldd    #44
-         std    PXLOC
-         ldd    #85
-         std    PYLOC
-         lbsr   PUTBLK      Go erase pacman
-
-         ldd    #572
-         std    PXNEW       Update screen location too.
-         std    PCXLOC
-         ldd    #1792       Move pacman to right side
-STBUF2   std    POFSET      Store pacman array offset
-         leax   D,Y         X holds pacman position in array
-         lda    #28         Set pacman direction buffer
-         sta    BUFF          for left facing pacman
-         ldb    #-1
-         lda    B,X         Get byte from array
-         bmi    MVPAC1      Branch if wall
-         bita   #6          Check for dot or pill
-         beq    MVPAC1
-         lbsr   ERPILL      Go erase pill or dot
-MVPAC1   lda    BUFF
-         adda   CYCLE
-         sta    PCBFN
-         leax   PUTPACM,U
-         ldy    #8
-         lda    PATH
-         os9    I$Write
-         lbcs   ERR1
-
-MVDWN    leay   ARRAY,U     Point to start of array
-         ldd    POFSET      Get pacman array offset
-         leax   D,Y         X holds pacman array position
-         ldd    JOYSTY      Get joystick Y value
-         cmpd   #27         Is it greater than 27 ?
-         bhi    MVUP        If not, then check for up move
-         inc    MOVFLG,U
-         lda    69,X        Look at byte one line down
-         lbmi   LEAVE       Branch if wall
-         ldd    PCYLOC      Get pseudo screen Y location
-         cmpd   PYNEW       Are they the same ?
-         beq    SKIPD       
-         addd   #3          Add 3 to it
-         std    PCYLOC
-SKIPD    ldd    PYNEW       Get actual screen Y location
-         addd   #3          Add 3 to it
-         std    PYNEW       Put it back
-         ldd    PXNEW
-         std    PCXLOC
-SKIPD2   ldd    POFSET      Get location in array
-         addd   #69         Move down 1 line
-         cmpd   #3692       Off screen at bottom?
-         bne    STBUF3
-
-         lda    #37         Blank pacman buffer
-         sta    PBFN
-         ldd    #316
-         std    PXLOC
-         ldd    #166
-         std    PYLOC
-         lbsr   PUTBLK      Go erase pacman at bottom
-
-         ldd    #300        
-         std    PXNEW
-         std    PCXLOC
-         ldd    #07         New Y scrn location
-         std    PCYLOC
-         addd   #3
-         std    PYNEW
-         ldd    #33         Move to top of array
-STBUF3   std    POFSET
-         leax   D,Y
-         lda    #34         Set pacman direction buffer
-         sta    BUFF           for down facing pacman
-         ldb    #69         Look one line down
-         lda    B,X         Get byte at this spot
-         bmi    MVPAC2      Branch if wall
-         bita   #6          Check for dot(2) or pill(4)
-         beq    MVPAC2      Go move pacman
-         lbsr   ERPILL      Go erase pill or dot
-         bra    MVPAC2      Go move pacman
-
-MVUP     ldd    JOYSTY      Get joystick Y value
-         cmpd   #37         Is it less than 37 ?
-         lblo   LEAVE
-         inc    MOVFLG,U
-         lda    -69,X       Get byte from array, 1 line up
-         bmi    LEAVE       Branch if wall
-         ldd    PYNEW       Get pac screen Y location
-         subd   #3          Subtract 3 from it
-         std    PYNEW       Put it back
-         std    PCYLOC      Set pyold = pynew
-         ldd    PXNEW
-         std    PCXLOC      Set pxold = pxnew
-         lda    #31         Set direction buffer
-         sta    BUFF          to up facing pacman
-         ldd    POFSET      Get pacman array offset
-         subd   #69         Move up one line
-         cmpd   #33         At top of screen?
-         bne    STBUF4
-
-         lda    #37         Blank pacman buffer #
-         sta    PBFN
-         ldd    #300        
-         std    PXLOC
-         ldd    #13
-         std    PYLOC
-         lbsr   PUTBLK      Erase pacman at top
-
-         ldd    #316
-         std    PXNEW
-         std    PCXLOC
-         ldd    #169
-         std    PYNEW
-         std    PCYLOC
-         ldd    #3692
-STBUF4   std    POFSET      Put it back
-         leax   D,Y         X holds pacman array position
-         ldb    #-69
-         lda    B,X         Get byte at this spot
-         bmi    MVPAC2      Branch if wall
-         bita   #6          Check for dot(2) or pill(4)
-         beq    MVPAC2      Go move pacman
-         lbsr   ERPILL      Go erase pill or dot
-MVPAC2   lda    BUFF        Get current pac buffer
-         adda   CYCLE       Add cycle count
-         sta    PCBFN       Set putblk buffer
-         leax   PUTPACM,U
-         ldy    #8
-         lda    PATH
-         os9    I$Write
-         lbcs   ERR1
-
-LEAVE    lda    MOVFLG,U
-         bne    EXTCHK
-         ldx    #2
-         lbsr   WAIT
-
-EXTCHK   ldb    PACMAN      Get # of pacmen left
-         cmpb   #6          Only a total of 6 allowed
-         beq    MVDONE      If already 6, then exit
-         lda    SCRBCD,U
-         anda   #15         %00001111 strip high
-         cmpa   EXTPAC,U    Compare it with goal
-         blo    MVDONE      If not =, then exit
-         incb               If =, then give bonus-
-         stb    PACMAN        pacman to player
-         inc    EXTPAC,U    Increment goal
-         ldd    #181
-         std    PYLOC,U
-         lda    #28
-         sta    PBFN,U
-         lda    #30
-         ldb    PACMAN
-         subb   #1
-         mul
-         std    PXLOC,U
-         ldd    #600
-         subd   PXLOC,U
-         std    PXLOC,U
-         lbsr   PUTBLK
-
-MVDONE   rts                Return to MAIN
-
-PALCHG:  clrb
-         stb    STRLGH      Save counter
-         leay   STRING,U    String to output
-         leax   G1OFST,U    Point to ghost tables
-         lda    10,X        Get #1 ghost status
-         cmpa   #1
-         bne    TEST2
-         ldd    #$1b31      Palette set code
-         std    ,Y++        Put it in string
-         ldd    #$043d
-         std    ,Y++        Put it in string
-         inc    STRLGH
-         lda    #2
-         sta    10,X        Make ghost run from pacman
-TEST2    lda    30,X        Get #2 ghost status
-         cmpa   #1
-         bne    TEST3
-         ldd    #$1b31      Palette set code
-         std    ,Y++        Put it in string
-         ldd    #$063d
-         std    ,Y++        Put it in string
-         inc    STRLGH
-         lda    #2
-         sta    30,X        Make ghost run from pacman
-TEST3    lda    50,X        Get #3 ghost status
-         cmpa   #1
-         bne    TEST4
-         ldd    #$1b31      Palette set code
-         std    ,Y++
-         ldd    #$053d
-         std    ,Y++        Put it in string
-         inc    STRLGH
-         lda    #2
-         sta    50,X        Make ghost run from pacman
-TEST4    lda    70,X        Get #4 ghost status
-         cmpa   #1
-         bne    TESTCK
-         ldd    #$1b31      Palette set code
-         std    ,Y++
-         ldd    #$033d
-         std    ,Y
-         inc    STRLGH
-         lda    #2
-         sta    70,X        Make ghost run from pacman
-TESTCK   ldb    STRLGH
-         beq    OTDONE
-         lda    #4
-         mul
-         tfr    D,Y
-         leax   STRING,U
-         lbsr   OUTSTR
-OTDONE   rts
-
-*           erase pill subroutine
-*        Erases DOT or PILL from array
-*             and updates score
-*    On entry, X reg points to spot in array
-*    B reg holds 1 byte offset 1,-1,96 or -96
-*    A reg holds byte at that point in array
-
-ERPILL   cmpa   #6          Was it a bonus ?
-         beq    ERBON
-         bita   #4          Was it a power dot ?
-         beq    ERDOT
-         anda   #1
-         sta    B,X         Erase power pill from array
-         lda    #32         Add 20 to score
-         sta    POINTS+2
-
-         ldd    DOTTOT
-         addd   #1
-         std    DOTTOT
-
-         lda    #100        Set timeout counter
-         sta    POWFLG
-         lbsr   PALCHG      Go change color of ghosts
-         bra    ADDUP
-
-ERBON    clra
-         sta    B,X
-         lbsr   SETBON      Go to Bonus Routines(in SCRNS)
-         lda    #154        Add 100 to score
-         sta    POINTS+2
-         bra    ADDUP
-
-ERDOT    anda   #1
-         sta    B,X         Erase dot from array
-         lda    #1          Add 1 point to score
-         sta    POINTS+2    Put it back
-
-         ldd    DOTTOT
-         addd   #1
-         std    DOTTOT
-
-*    Add points to score
-
-ADDUP:   leax   SCRBCD+3,U
-         leay   POINTS+3,U
-         ldb    #3          Set loop counter to 3
-         andcc  #%11111110  Clear carry
-ADLOOP   lda    ,-X         Decrement X and get a byte
-         adca   ,-Y         Add new points
-         daa                Decimal adjust bytes
-         sta    ,X          Put result back in score byte
-         decb               Decrement loop counter
-         bne    ADLOOP      Loop till done
-
-SHIFT    leay   SCRASC,U    Point to asc string
-         leax   SCRBCD,U     Point to score bytes
-         ldb    #3          Set loop counter to 3
-         stb    SHCNT       Set loop counter to 3
-         clrb               Clear leading zero flag
-SFLOOP   lda    ,X          Get a byte of score, bump pointer
-         lsra
-         lsra               Shift high nibble to low
-         lsra
-         lsra
-         beq    TSTFG1
-         incb               Set leading zero flag
-TSTFG1   tstb               Is leading zero flag set ?
-         bne     ASCSET1
-         lda     #-16       48-16 = ascii space
-ASCSET1  adda    #48        Add ascii offset for number
-         sta     ,Y+        Put result in score string
-         lda     ,X+        Get bcd score byte again
-         anda    #15        Mask off high nibble
-         beq     TSTFG2
-         incb
-TSTFG2   tstb
-         bne     ASCSET2
-         lda     #-16
-ASCSET2  adda    #48
-         sta     ,Y+
-         dec     SHCNT
-         bne     SFLOOP     Loop 3 times
-
-JUST1    leax   SCRPOS,U    Point to score string
-         ldy    #9          Output 9 characters
-         lbsr   OUTSTR      Go output string
-
-         rts
-
-*     Noise maker when pacman eats a dot
-
-
-*WOCWOC   lda    PATH
-*         ldb    #$98
-*         ldx    #$3202
-*         ldy    #3000
-*         os9    I$SetStt
-
-*         ldy    #2000
-*         os9    I$GetStt
-
-*     Return to MAIN
-
-*SCDONE   rts
-
-
-         ENDSECT
-
-
-                                                                              
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/pacos9/movpac90.as	Sat Feb 08 01:03:26 2014 +0100
@@ -0,0 +1,450 @@
+
+         NAM    MOVPAC
+         TTL    Move pacman routines
+
+*     Program segment to be compiled using Level II RMA
+*           This is not a mainline program segment
+*                 Written by Larry Olson
+
+         IFP1
+*         use    /dd/defs/os9defs.a
+         ENDc
+
+
+STACK    EQU    100
+
+
+         PSECT  MOVPAC,0,0,2,STACK,MVPAC
+
+         VSECT
+
+*    Local variables
+
+         RMB    STACK
+
+         ENDSECT
+
+
+MVPAC:   nop
+
+*      Read joystick
+
+JOY      lda    PATH        Set path to window
+         ldb    #$13        Setup for SS.Joy
+         ldx    PORT,U      Get selected port
+         os9    I$GetStt
+         lbcs   ERR1
+         stx    JOYSTX
+         sty    JOYSTY
+         sta    BUTTON
+*    Cycle is used to animate pacman
+
+CYC      dec    CYCLE       Decrement cycle counter
+         bpl    MVRT        If >0 continue
+         lda    #2          Reset counter to 2
+         sta    CYCLE
+
+         clra
+         sta    MOVFLG,U
+
+*    Check direction of joystick & move pacman
+
+MVRT     leay   ARRAY,U     Point to start of array
+         ldd    POFSET      Get pacman offset in array
+         leax   D,Y
+*    X reg now points to pacman position in array
+         ldd    JOYSTX      Get joystick X value
+         cmpd   #37         Is it greater than 37 ?
+         blo    MVLFT       Go to move left
+
+         inc    MOVFLG,U
+
+         lda    1,X         Get adjacent byte from array
+         lbmi   MVDWN       If wall then go check for down
+         ldd    PCXLOC      GET pseudo screen X location
+         cmpd   PXNEW       Is it equal to actual location?
+         beq    SKIPR
+         addd   #8
+         std    PCXLOC
+SKIPR    ldd    PXNEW       Get actual screen X location
+         addd   #8          Add 8 to it
+         std    PXNEW       Put it back
+         ldd    PYNEW       Get screen Y location
+         std    PCYLOC      Set pyold = pynew
+         ldd    POFSET      Get pacman array offset
+         addd   #1          Increment it
+         cmpd   #1793       Is it off screen to the right ?
+         bne    STBUF1
+*   Erase pacman on right side of screen
+*   Before moving pacman to left side
+         lda    #37         Set for blank pacman
+         sta    PBFN        Put it in putblk code
+         ldd    #572 
+         std    PXLOC
+         ldd    #85
+         std    PYLOC
+         lbsr   PUTBLK      Go erase pacman
+
+         ldd    #44
+         std    PXNEW       Reset pac screen X to 36
+         subd   #8          Set pseudo X location
+         std    PCXLOC
+         lda    #1
+         ldd    #1726       Move pacman to left side
+STBUF1   std    POFSET      Store pacman array offset
+         leax   D,Y         Point to pacman position in array
+         lda    #25         Set pacman direction buffer
+         sta    BUFF          for right facing pacman
+         ldb    #1
+         lda    B,X         Get the byte at this spot
+         bmi    MVPAC1      Branch if wall
+         bita   #6          Check for a dot or pill
+         beq    MVPAC1
+         lbsr   ERPILL      Go erase pill or dot
+         bra    MVPAC1
+MVLFT    ldd    JOYSTX      Get joystick X value
+         cmpd   #27
+         bhi    MVDWN
+         inc    MOVFLG,U
+         lda    -1,X        Get byte 1 move to the left
+         bmi    MVDWN       Branch if wall
+         ldd    PXNEW       Get new pac position
+         subd   #8          Subtract 8 from it
+         std    PXNEW       Put it back
+         std    PCXLOC      Set pxold = pxnew
+         ldd    PYNEW
+         std    PCYLOC      Set pyold = pynew
+         ldd    POFSET      Get pacman array offset
+         subd   #1          Decrement it
+         cmpd   #1725       Is it off left side of screen ?
+         bne    STBUF2      If not then store hcount
+*   Erase pacman on left side of screen
+*   Before moving pacman to right side
+         lda    #37         Set for blank pacman
+         sta    PBFN        Put it in PUTBLK code
+         ldd    #44
+         std    PXLOC
+         ldd    #85
+         std    PYLOC
+         lbsr   PUTBLK      Go erase pacman
+
+         ldd    #572
+         std    PXNEW       Update screen location too.
+         std    PCXLOC
+         ldd    #1792       Move pacman to right side
+STBUF2   std    POFSET      Store pacman array offset
+         leax   D,Y         X holds pacman position in array
+         lda    #28         Set pacman direction buffer
+         sta    BUFF          for left facing pacman
+         ldb    #-1
+         lda    B,X         Get byte from array
+         bmi    MVPAC1      Branch if wall
+         bita   #6          Check for dot or pill
+         beq    MVPAC1
+         lbsr   ERPILL      Go erase pill or dot
+MVPAC1   lda    BUFF
+         adda   CYCLE
+         sta    PCBFN
+         leax   PUTPACM,U
+         ldy    #8
+         lda    PATH
+         os9    I$Write
+         lbcs   ERR1
+
+MVDWN    leay   ARRAY,U     Point to start of array
+         ldd    POFSET      Get pacman array offset
+         leax   D,Y         X holds pacman array position
+         ldd    JOYSTY      Get joystick Y value
+         cmpd   #27         Is it greater than 27 ?
+         bhi    MVUP        If not, then check for up move
+         inc    MOVFLG,U
+         lda    69,X        Look at byte one line down
+         lbmi   LEAVE       Branch if wall
+         ldd    PCYLOC      Get pseudo screen Y location
+         cmpd   PYNEW       Are they the same ?
+         beq    SKIPD       
+         addd   #3          Add 3 to it
+         std    PCYLOC
+SKIPD    ldd    PYNEW       Get actual screen Y location
+         addd   #3          Add 3 to it
+         std    PYNEW       Put it back
+         ldd    PXNEW
+         std    PCXLOC
+SKIPD2   ldd    POFSET      Get location in array
+         addd   #69         Move down 1 line
+         cmpd   #3692       Off screen at bottom?
+         bne    STBUF3
+
+         lda    #37         Blank pacman buffer
+         sta    PBFN
+         ldd    #316
+         std    PXLOC
+         ldd    #166
+         std    PYLOC
+         lbsr   PUTBLK      Go erase pacman at bottom
+
+         ldd    #300        
+         std    PXNEW
+         std    PCXLOC
+         ldd    #07         New Y scrn location
+         std    PCYLOC
+         addd   #3
+         std    PYNEW
+         ldd    #33         Move to top of array
+STBUF3   std    POFSET
+         leax   D,Y
+         lda    #34         Set pacman direction buffer
+         sta    BUFF           for down facing pacman
+         ldb    #69         Look one line down
+         lda    B,X         Get byte at this spot
+         bmi    MVPAC2      Branch if wall
+         bita   #6          Check for dot(2) or pill(4)
+         beq    MVPAC2      Go move pacman
+         lbsr   ERPILL      Go erase pill or dot
+         bra    MVPAC2      Go move pacman
+
+MVUP     ldd    JOYSTY      Get joystick Y value
+         cmpd   #37         Is it less than 37 ?
+         lblo   LEAVE
+         inc    MOVFLG,U
+         lda    -69,X       Get byte from array, 1 line up
+         bmi    LEAVE       Branch if wall
+         ldd    PYNEW       Get pac screen Y location
+         subd   #3          Subtract 3 from it
+         std    PYNEW       Put it back
+         std    PCYLOC      Set pyold = pynew
+         ldd    PXNEW
+         std    PCXLOC      Set pxold = pxnew
+         lda    #31         Set direction buffer
+         sta    BUFF          to up facing pacman
+         ldd    POFSET      Get pacman array offset
+         subd   #69         Move up one line
+         cmpd   #33         At top of screen?
+         bne    STBUF4
+
+         lda    #37         Blank pacman buffer #
+         sta    PBFN
+         ldd    #300        
+         std    PXLOC
+         ldd    #13
+         std    PYLOC
+         lbsr   PUTBLK      Erase pacman at top
+
+         ldd    #316
+         std    PXNEW
+         std    PCXLOC
+         ldd    #169
+         std    PYNEW
+         std    PCYLOC
+         ldd    #3692
+STBUF4   std    POFSET      Put it back
+         leax   D,Y         X holds pacman array position
+         ldb    #-69
+         lda    B,X         Get byte at this spot
+         bmi    MVPAC2      Branch if wall
+         bita   #6          Check for dot(2) or pill(4)
+         beq    MVPAC2      Go move pacman
+         lbsr   ERPILL      Go erase pill or dot
+MVPAC2   lda    BUFF        Get current pac buffer
+         adda   CYCLE       Add cycle count
+         sta    PCBFN       Set putblk buffer
+         leax   PUTPACM,U
+         ldy    #8
+         lda    PATH
+         os9    I$Write
+         lbcs   ERR1
+
+LEAVE    lda    MOVFLG,U
+         bne    EXTCHK
+         ldx    #2
+         lbsr   WAIT
+
+EXTCHK   ldb    PACMAN      Get # of pacmen left
+         cmpb   #6          Only a total of 6 allowed
+         beq    MVDONE      If already 6, then exit
+         lda    SCRBCD,U
+         anda   #15         %00001111 strip high
+         cmpa   EXTPAC,U    Compare it with goal
+         blo    MVDONE      If not =, then exit
+         incb               If =, then give bonus-
+         stb    PACMAN        pacman to player
+         inc    EXTPAC,U    Increment goal
+         ldd    #181
+         std    PYLOC,U
+         lda    #28
+         sta    PBFN,U
+         lda    #30
+         ldb    PACMAN
+         subb   #1
+         mul
+         std    PXLOC,U
+         ldd    #600
+         subd   PXLOC,U
+         std    PXLOC,U
+         lbsr   PUTBLK
+
+MVDONE   rts                Return to MAIN
+
+PALCHG:  clrb
+         stb    STRLGH      Save counter
+         leay   STRING,U    String to output
+         leax   G1OFST,U    Point to ghost tables
+         lda    10,X        Get #1 ghost status
+         cmpa   #1
+         bne    TEST2
+         ldd    #$1b31      Palette set code
+         std    ,Y++        Put it in string
+         ldd    #$043d
+         std    ,Y++        Put it in string
+         inc    STRLGH
+         lda    #2
+         sta    10,X        Make ghost run from pacman
+TEST2    lda    30,X        Get #2 ghost status
+         cmpa   #1
+         bne    TEST3
+         ldd    #$1b31      Palette set code
+         std    ,Y++        Put it in string
+         ldd    #$063d
+         std    ,Y++        Put it in string
+         inc    STRLGH
+         lda    #2
+         sta    30,X        Make ghost run from pacman
+TEST3    lda    50,X        Get #3 ghost status
+         cmpa   #1
+         bne    TEST4
+         ldd    #$1b31      Palette set code
+         std    ,Y++
+         ldd    #$053d
+         std    ,Y++        Put it in string
+         inc    STRLGH
+         lda    #2
+         sta    50,X        Make ghost run from pacman
+TEST4    lda    70,X        Get #4 ghost status
+         cmpa   #1
+         bne    TESTCK
+         ldd    #$1b31      Palette set code
+         std    ,Y++
+         ldd    #$033d
+         std    ,Y
+         inc    STRLGH
+         lda    #2
+         sta    70,X        Make ghost run from pacman
+TESTCK   ldb    STRLGH
+         beq    OTDONE
+         lda    #4
+         mul
+         tfr    D,Y
+         leax   STRING,U
+         lbsr   OUTSTR
+OTDONE   rts
+
+*           erase pill subroutine
+*        Erases DOT or PILL from array
+*             and updates score
+*    On entry, X reg points to spot in array
+*    B reg holds 1 byte offset 1,-1,96 or -96
+*    A reg holds byte at that point in array
+
+ERPILL   cmpa   #6          Was it a bonus ?
+         beq    ERBON
+         bita   #4          Was it a power dot ?
+         beq    ERDOT
+         anda   #1
+         sta    B,X         Erase power pill from array
+         lda    #32         Add 20 to score
+         sta    POINTS+2
+
+         ldd    DOTTOT
+         addd   #1
+         std    DOTTOT
+
+         lda    #100        Set timeout counter
+         sta    POWFLG
+         lbsr   PALCHG      Go change color of ghosts
+         bra    ADDUP
+
+ERBON    clra
+         sta    B,X
+         lbsr   SETBON      Go to Bonus Routines(in SCRNS)
+         lda    #154        Add 100 to score
+         sta    POINTS+2
+         bra    ADDUP
+
+ERDOT    anda   #1
+         sta    B,X         Erase dot from array
+         lda    #1          Add 1 point to score
+         sta    POINTS+2    Put it back
+
+         ldd    DOTTOT
+         addd   #1
+         std    DOTTOT
+
+*    Add points to score
+
+ADDUP:   leax   SCRBCD+3,U
+         leay   POINTS+3,U
+         ldb    #3          Set loop counter to 3
+         andcc  #%11111110  Clear carry
+ADLOOP   lda    ,-X         Decrement X and get a byte
+         adca   ,-Y         Add new points
+         daa                Decimal adjust bytes
+         sta    ,X          Put result back in score byte
+         decb               Decrement loop counter
+         bne    ADLOOP      Loop till done
+
+SHIFT    leay   SCRASC,U    Point to asc string
+         leax   SCRBCD,U     Point to score bytes
+         ldb    #3          Set loop counter to 3
+         stb    SHCNT       Set loop counter to 3
+         clrb               Clear leading zero flag
+SFLOOP   lda    ,X          Get a byte of score, bump pointer
+         lsra
+         lsra               Shift high nibble to low
+         lsra
+         lsra
+         beq    TSTFG1
+         incb               Set leading zero flag
+TSTFG1   tstb               Is leading zero flag set ?
+         bne     ASCSET1
+         lda     #-16       48-16 = ascii space
+ASCSET1  adda    #48        Add ascii offset for number
+         sta     ,Y+        Put result in score string
+         lda     ,X+        Get bcd score byte again
+         anda    #15        Mask off high nibble
+         beq     TSTFG2
+         incb
+TSTFG2   tstb
+         bne     ASCSET2
+         lda     #-16
+ASCSET2  adda    #48
+         sta     ,Y+
+         dec     SHCNT
+         bne     SFLOOP     Loop 3 times
+
+JUST1    leax   SCRPOS,U    Point to score string
+         ldy    #9          Output 9 characters
+         lbsr   OUTSTR      Go output string
+
+         rts
+
+*     Noise maker when pacman eats a dot
+
+
+*WOCWOC   lda    PATH
+*         ldb    #$98
+*         ldx    #$3202
+*         ldy    #3000
+*         os9    I$SetStt
+
+*         ldy    #2000
+*         os9    I$GetStt
+
+*     Return to MAIN
+
+*SCDONE   rts
+
+
+         ENDSECT
+
+
+                                                                              
--- a/3rdparty/packages/pacos9/score90.a	Mon Jan 27 23:49:14 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,499 +0,0 @@
-
-         NAM   Score
-         TTL   Routines to handle high score recording
-
-*     Program segment to be compiled using Level II RMA
-*          This is not a mainline program segment
-*                 Written by Larry Olson
-
-         IFP1
-*         use   /dd/defs/os9defs.a
-         ENDc
-
-STACK    EQU   100
-
-         PSECT SCORE,0,0,2,STACK,SBEGIN
-
-         VSECT
-
-*     Local Variables
-
-FPATH:   rmb    1           File path number
-FSCORE:  rmb    126         Names & scores put here
-PNAME:   rmb    15          Players name
-NAMLGH   rmb    2           Number of characters in name
-ENTCNT   rmb    1           Entry counter
-ENTPNT   rmb    2           Pointer to start of entry
-COUNT    rmb    1
-SAVEX    rmb    2
-CURPOS   rmb    3
-
-         rmb   STACK
-
-         ENDSECT
-
-FILLST:  fcc    '/dd/sys/pac_scores'
-
-WRTNBY   fcb    2,37,33,87,114,105,116,116
-         fcb    101,110,32,66,121,$1b,$32,1,2
-         fcb    35,36,76,97,114,114,121,32
-         fcb    69,46,32,79,108,115,111,110
-
-LDGSCR   fcb    2,33,34,76,111,97,100,105,110
-         fcb    103,32,72,105,103,104,32,83
-         fcb    99,111,114,101,115
-
-ENTNAM   fcb    $1b,$32,1,$1b,$33,0,$0c,2,33,33
-         fcb    80,76,69,65,83,69,32
-         fcb    69,78,84,69,82,32,89,79
-         fcb    85,82,32,78,65,77,69,32
-
-ARROW    fcb    $1b,$32,2,2,34,35,45,45,62
-         fcb    32,$1b,$32,3,95,2,38,35
-
-QUESTN   fcb    $1b,$32,9,2,32,35,32,73,115,32
-         fcb    78,97,109,101,32,67,111,114,114
-         fcb    101,99,116,32,40,89,47,78,41,32,63
-         fcb    2,55,35
-
-CONGRT   fcb    2,37,33,$1b,$32,2,67,79,78
-         fcb    71,82,65,84,85,76,65,84,73
-         fcb    79,78,83,$1b,$32,4,2,38,35
-
-NOTFND   fcb    $0c,$1b,$32,4,2,37,32,83,99,111
-         fcb    114,101,32,70,105,108,101,$1b,$32
-         fcb    2,2,34,34,47,100,100,47,115,121
-         fcb    115,47,112,97,99,95,115,99,111
-         fcb    114,101,115,$1b,$32,4,2,38,36
-         fcb    78,79,84,32,70,79,85,78,68
-
-CREATE   fcb    2,38,36,32,32,32,32,32,32,32,32
-         fcb    32,2,37,36,67,114,101,97,116
-         fcb    105,110,103,32,73,116
-
-CHGWK1   fcb    $1b,$25,0,0,40,24
-         fcb    $1b,$33,7
-
-CHGWK2   fcb    $1b,$25,8,9,22,7,2,32,32
-
-CRLF     fcb    $0d,$0a
-
-CLRSCN   fcb    $0c
-
-CURXY1   fcb    2,32,32
-
-CURXY2   fcb    $0c,2,38,33,$1b,$32,4
-
-CLNORM   fcb    $1b,$32,2,$1b,$33,0
-
-CLINVT   fcb    $1b,$32,4,$1b,$33,0
-
-CLNRM2   fcb    $1b,$32,2,$1b,$33,0
-
-
-SBEGIN:  leax   SCRBOX,pcr
-         ldy    #39
-         lbsr   OUTST2
-         leax   WRTNBY,pcr
-         ldy    #33
-         lbsr   OUTST2
-         ldx    #200
-         lbsr   WAIT
-         leax   CLRSCN,pcr
-         ldy    #1
-         lbsr   OUTST2
-         leax   LDGSCR,pcr
-         ldy    #22
-         lbsr   OUTST2
-         ldx    #75
-         lbsr   WAIT
-
-OPENFL   lda    #1          Set for read
-         leax   FILLST,pcr  Point to pathlist
-         os9    I$Open      Open file
-         lbcs   OPNERR      Go handle any errors
-         sta    FPATH,U
-READFL   leax   FSCORE,U    Point to data storage area
-         ldy    #126        Read entire file (126 bytes)
-         os9    I$Read      Go do read
-         lbcs   REDERR      Go handle any errors
-*    Close file
-         lda    FPATH,U
-         os9    I$Close
-         lbcs   ERR1
-
-         leax   CLRSCN,pcr
-         ldy    #1
-         lbsr   OUTST2
-
-         lbsr   PRFIL2      Print score data
-         leax   CHGWK1,pcr  Reset screen 0,0,40,24
-         ldy    #9
-         lbsr   OUTST2
-         rts
-
-SCEND:   lda    #0
-         sta    ENTCNT,U
-         lda    #2
-         sta    CURPOS,U
-         lda    #32
-         sta    CURPOS+1,U
-
-         lbsr   SCRCMP      Compare players score
-         lda    ENTCNT,U
-         cmpa   #-1
-         beq    SCRTN
-
-OPNFL2   lda    #2          Set to write
-         leax   FILLST,pcr
-         os9    I$Open
-         lbcs   ERR1
-         sta    FPATH,U
-WRITFL   leax   FSCORE,U
-         ldy    #126
-         os9    I$Write
-         lbcs   ERR1
-         lda    FPATH,U
-         os9    I$Close
-         lbcs   ERR1
-
-         ldx    #100
-         lbsr   WAIT
-SCRTN    rts
-
-*   File data has been put in memory
-*   now print it on screen
-*   This is used for path2
-PRFIL2   leax   CLNRM2,pcr
-         ldy    #6
-         lbsr   OUTST2
-         leax   CURXY1,pcr
-         ldy    #3
-         lbsr   OUTST2
-         leax   FSCORE,U
-         leax   -21,X
-         ldb    #7
-         pshs   B,X
-PLOOP2   puls   B,X
-         decb
-         beq    PDONE2
-         leax   21,X
-         pshs   B,X
-         ldy    #21
-         lbsr   OUTST2
-         leax   CRLF,pcr
-         ldy    #2
-         lbsr   OUTST2
-         bra    PLOOP2
-
-PDONE2   rts
-
-SCRCMP   lda    #0          Set entry count to zero
-         ldb    #0
-         sta    ENTCNT,U    Save it
-         std    ENTPNT,U    Set entry pointer
-         leay   FSCORE,U    Point to start of data
-SCLOOP   leay   15,Y        Move to first score
-         leax   SCRASC-1,U  Point to players score -1
-         ldb    #7          Set byte counter
-SCLOP2   decb               Decrement counter
-         beq    NEXTCK      If =, go get next score
-         lda    ,Y+         Get hi-score byte
-         leax   1,X         Bump player score pointer
-         cmpa   ,X          Compare them
-         beq    SCLOP2      If =, go check next byte
-         blo    MOVE        If <, insert players name
-
-NEXTCK   lda    ENTCNT,U    Get entry counter
-         inca               Bump it
-         cmpa   #6          Done 6 yet ?
-         bne    NEXT        Score not higher, Print old data
-         lda    #-1
-         sta    ENTCNT,U
-         bra    PRFILE
-
-NEXT     sta    ENTCNT,U    Save count
-         leay   FSCORE,U
-         ldb    #21
-         mul
-         leay   D,Y
-         std    ENTPNT,U
-         bra    SCLOOP
-
-*        This routine is used to insert the
-*        player's score into the hi-scores
-*   Move name & score data down to allow player's
-*   name & score to be inserted. This will remove
-*   the last item from the list
-
-MOVE     lda    #5          Set constant
-         suba   ENTCNT,U    Subtract entry counter
-         ldb    #21         Set multiplier
-         mul                B reg. holds loop counter
-         leax   FSCORE,U    Point to start of data
-         leax   126,X       Move to last byte entry 6 +1
-         leay   FSCORE,U
-         leay   105,Y       Move to last byte entry 5 +1
-         cmpd   #0          If on bottom, then don't
-         beq    PUTIT         move any down
-INLOOP   lda    ,-Y         Get a byte
-         sta    ,-X         Move it
-         decb               Decrement counter
-         bne    INLOOP      
-
-*   Now zero(underline) out previous entry at this location
-
-PUTIT    ldb    #15         Set byte counter
-         lda    #95         ASCII underline chacarter
-PUTLOP   decb               Decrement counter
-         beq    PUTSCR
-         sta    ,Y+         Store a '_' character
-         bra    PUTLOP      Loop till 15 are done
-*   Now transfer players score
-PUTSCR   lda    #32         Space character
-         sta    ,Y+
-         ldb    #7          Set transfer byte counter
-         leax   SCRASC,U    Point to players ascii score
-PLOOP    decb               Decrement counter
-         beq    PRFILE      If 0, then exit
-         lda    ,X+         Get byte & increment X
-         sta    ,Y+         Put byte & increment Y
-         bra    PLOOP
-*   File data has been put in memory
-*   now print it on screen
-*   This is used for path
-PRFILE   leax   CLNORM,pcr
-         ldy    #6
-         lbsr   OUTST2
-         leax   CHGWK2,pcr
-         ldy    #9
-         lbsr   OUTST2
-         leax   FSCORE,U
-         leax   -21,X
-         lda    #-1
-         ldb    #7
-         pshs   D,X
-PRLOOP   puls   D,X
-         decb
-         beq    PRDONE
-         leax   21,X        Point to line to print
-         inca               Increment compare count
-         pshs   D,X
-         cmpa   ENTCNT,U    Are we on the new line ?
-         bne    NORMPR
-         stx    SAVEX,U     Save X register
-         leax   CLINVT,pcr  Invert screen colors
-         ldy    #6
-         lbsr   OUTST2
-         ldx    SAVEX,U     Get X register value
-         ldy    #21         Output 21 bytes
-         lbsr   OUTST2
-         leax   CRLF,pcr    Do a carriage return
-         ldy    #2            and a line feed
-         lbsr   OUTST2
-         leax   CLNORM,pcr  Reset screen colors
-         ldy    #6
-         lbsr   OUTST2
-         bra    PRLOOP
-
-NORMPR   ldy    #21
-         lbsr   OUTST2
-         leax   CRLF,pcr
-         ldy    #2
-         lbsr   OUTST2
-         bra    PRLOOP
-
-PRDONE   lda    ENTCNT,U
-         cmpa   #-1
-         lbeq   RDDONE
-
-OPNBOT   ldx    #100
-         lbsr   WAIT
-         leax   BOTWIN,pcr
-         ldy    #47
-         lbsr   OUTST2
-
-PNAMLP   leax   ENTNAM,pcr  Print 'Please enter your name'
-         ldy    #33         Output 34 bytes
-         lbsr   OUTST2
-
-         leax   ARROW,pcr   Print '-->_'
-         ldy    #17
-         lbsr   OUTST2
-
-*   Now get players name
-
-GETNAM   leax   PNAME,U     Fill name storage
-         lda    #32           with spaces
-         ldb    #15
-PNLOOP   sta    ,X+
-         decb
-         bne    PNLOOP
-
-RDNAME   leax   PNAME,U     Get name from player
-         ldy    #15         14 + CR
-         lda    PATH2,U
-         os9    I$ReadLn
-         lbcs   ERR1
-         tfr    Y,D
-
-         leax   PNAME,U
-         subd   #1
-         leax   D,X
-         std    NAMLGH,U
-         lda    #32
-         sta    ,X          Remove CR
-
-NAMEOK   ldd    NAMLGH,U
-         cmpd   #0
-         beq    NAMASK
-
-         leax   CURXY2,pcr  Clear screen, Move to XY
-         ldy    #7            location 6,0
-         lbsr   OUTST2        and set color
-
-         leax   PNAME,U
-         ldy    NAMLGH,U
-         lbsr   OUTST2
-
-NAMASK   leax   QUESTN,pcr
-         ldy    #33
-         lbsr   OUTST2
-
-         lbsr   READ2
-         lda    RESPON,U
-         cmpa   #89
-         beq    PUTNAM
-         cmpa   #121
-         beq    PUTNAM
-         leax   CLRSCN,pcr
-         ldy    #1
-         lbsr   OUTST2
-
-         lbra   PNAMLP
-
-PUTNAM   leax   BOTEND,pcr
-         ldy    #15
-         lbsr   OUTST2
-
-         leax   PNAME,U
-         leay   FSCORE,U
-         ldd    ENTPNT,U
-         leay   D,Y
-         ldb    #14
-PUTNML   lda    ,X+
-         sta    ,Y+
-         decb
-         bne    PUTNML
-
-         lda    ENTCNT,U
-         adda   #32
-         sta    CURPOS+2,U
-
-         leax   CURPOS,U
-         ldy    #3
-         lbsr   OUTST2
-
-         leax   FSCORE,U
-         ldd    ENTPNT,U
-         leax   D,X
-         ldy    #21
-         lbsr   OUTST2
-
-         leax   BOTWIN,pcr
-         ldy    #47
-         lbsr   OUTST2
-
-         leax   CONGRT,pcr
-         ldy    #27
-         lbsr   OUTST2
-
-         leax   PNAME,U
-         ldy    NAMLGH,U
-         lbsr   OUTST2
-
-RDDONE   ldx    #200
-         lda    ENTCNT,U
-         cmpa   #-1
-         beq    RDWAIT
-         ldx    #150
-RDWAIT   lbsr   WAIT        Sleep for 150 or 200 ticks
-         lda    ENTCNT,U
-         cmpa   #-1
-         beq    RDEXIT
-
-         leax   BOTEND,pcr
-         ldy    #15
-         lbsr   OUTST2
-RDEXIT   rts
-
-*   Handle file errors here
-*   214- no permission
-*   216- path name not found
-*   
-
-OPNERR   cmpb   #216        Is it PATH NAME NOT FOUND ?
-         lbne   ERR1
-*   Print Creating score file
-         leax   NOTFND,pcr
-         ldy    #56
-         lbsr   OUTST2
-         ldx    #75
-         lbsr   WAIT
-FILLSC   leax   FSCORE,U    Point to data area
-         ldb    #7          Set counter
-         stb    COUNT,U
-DMLOOP   lda    COUNT,U
-         deca
-         beq    CRFILE
-         sta    COUNT,U     Save new count
-         ldb    #15
-         lda    #46         '.'
-DLOOP2   decb
-         beq    SPACE
-         sta    ,X+         Put 14 '.' in data area
-         bra    DLOOP2
-SPACE    lda    #32         ' '
-         sta    ,X+         Put a space in data area
-         lda    #32         Space
-         ldb    #6
-DLOOP3   decb
-         beq    DZERO
-         sta    ,X+         Put 5 spaces in data area
-         bra    DLOOP3
-DZERO    lda    #48         '0'
-         sta    ,X+
-         bra    DMLOOP
-
-*   File doesn't exist, so create it
-
-CRFILE   leax   CREATE,pcr
-         ldy    #26
-         lbsr   OUTST2
-         leax   FILLST,pcr  Point to path list
-         lda    #2          Access mode (2=write)
-         ldb    #47         Attributes (00101111)
-         os9    I$Create    Go create file
-         lbcs   ERR1
-         sta    FPATH,U     Save path #
-*   Write data to file
-WRTFIL   leax   FSCORE,U    Point to data
-         ldy    #126        Write 126 bytes
-         lda    FPATH,U     Set path #
-         os9    I$Write     Do write
-         lbcs   ERR1
-*   Now close file
-CLSFIL   lda    FPATH,U
-         os9    I$Close
-         lbcs   ERR1
-         ldx    #75
-         lbsr   WAIT
-
-         rts
-
-REDERR   lbra   ERR1
-
-
-         ENDSECT
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/pacos9/score90.as	Sat Feb 08 01:03:26 2014 +0100
@@ -0,0 +1,499 @@
+
+         NAM   Score
+         TTL   Routines to handle high score recording
+
+*     Program segment to be compiled using Level II RMA
+*          This is not a mainline program segment
+*                 Written by Larry Olson
+
+         IFP1
+*         use   /dd/defs/os9defs.a
+         ENDc
+
+STACK    EQU   100
+
+         PSECT SCORE,0,0,2,STACK,SBEGIN
+
+         VSECT
+
+*     Local Variables
+
+FPATH:   rmb    1           File path number
+FSCORE:  rmb    126         Names & scores put here
+PNAME:   rmb    15          Players name
+NAMLGH   rmb    2           Number of characters in name
+ENTCNT   rmb    1           Entry counter
+ENTPNT   rmb    2           Pointer to start of entry
+COUNT    rmb    1
+SAVEX    rmb    2
+CURPOS   rmb    3
+
+         rmb   STACK
+
+         ENDSECT
+
+FILLST:  fcc    '/dd/sys/pac_scores'
+
+WRTNBY   fcb    2,37,33,87,114,105,116,116
+         fcb    101,110,32,66,121,$1b,$32,1,2
+         fcb    35,36,76,97,114,114,121,32
+         fcb    69,46,32,79,108,115,111,110
+
+LDGSCR   fcb    2,33,34,76,111,97,100,105,110
+         fcb    103,32,72,105,103,104,32,83
+         fcb    99,111,114,101,115
+
+ENTNAM   fcb    $1b,$32,1,$1b,$33,0,$0c,2,33,33
+         fcb    80,76,69,65,83,69,32
+         fcb    69,78,84,69,82,32,89,79
+         fcb    85,82,32,78,65,77,69,32
+
+ARROW    fcb    $1b,$32,2,2,34,35,45,45,62
+         fcb    32,$1b,$32,3,95,2,38,35
+
+QUESTN   fcb    $1b,$32,9,2,32,35,32,73,115,32
+         fcb    78,97,109,101,32,67,111,114,114
+         fcb    101,99,116,32,40,89,47,78,41,32,63
+         fcb    2,55,35
+
+CONGRT   fcb    2,37,33,$1b,$32,2,67,79,78
+         fcb    71,82,65,84,85,76,65,84,73
+         fcb    79,78,83,$1b,$32,4,2,38,35
+
+NOTFND   fcb    $0c,$1b,$32,4,2,37,32,83,99,111
+         fcb    114,101,32,70,105,108,101,$1b,$32
+         fcb    2,2,34,34,47,100,100,47,115,121
+         fcb    115,47,112,97,99,95,115,99,111
+         fcb    114,101,115,$1b,$32,4,2,38,36
+         fcb    78,79,84,32,70,79,85,78,68
+
+CREATE   fcb    2,38,36,32,32,32,32,32,32,32,32
+         fcb    32,2,37,36,67,114,101,97,116
+         fcb    105,110,103,32,73,116
+
+CHGWK1   fcb    $1b,$25,0,0,40,24
+         fcb    $1b,$33,7
+
+CHGWK2   fcb    $1b,$25,8,9,22,7,2,32,32
+
+CRLF     fcb    $0d,$0a
+
+CLRSCN   fcb    $0c
+
+CURXY1   fcb    2,32,32
+
+CURXY2   fcb    $0c,2,38,33,$1b,$32,4
+
+CLNORM   fcb    $1b,$32,2,$1b,$33,0
+
+CLINVT   fcb    $1b,$32,4,$1b,$33,0
+
+CLNRM2   fcb    $1b,$32,2,$1b,$33,0
+
+
+SBEGIN:  leax   SCRBOX,pcr
+         ldy    #39
+         lbsr   OUTST2
+         leax   WRTNBY,pcr
+         ldy    #33
+         lbsr   OUTST2
+         ldx    #200
+         lbsr   WAIT
+         leax   CLRSCN,pcr
+         ldy    #1
+         lbsr   OUTST2
+         leax   LDGSCR,pcr
+         ldy    #22
+         lbsr   OUTST2
+         ldx    #75
+         lbsr   WAIT
+
+OPENFL   lda    #1          Set for read
+         leax   FILLST,pcr  Point to pathlist
+         os9    I$Open      Open file
+         lbcs   OPNERR      Go handle any errors
+         sta    FPATH,U
+READFL   leax   FSCORE,U    Point to data storage area
+         ldy    #126        Read entire file (126 bytes)
+         os9    I$Read      Go do read
+         lbcs   REDERR      Go handle any errors
+*    Close file
+         lda    FPATH,U
+         os9    I$Close
+         lbcs   ERR1
+
+         leax   CLRSCN,pcr
+         ldy    #1
+         lbsr   OUTST2
+
+         lbsr   PRFIL2      Print score data
+         leax   CHGWK1,pcr  Reset screen 0,0,40,24
+         ldy    #9
+         lbsr   OUTST2
+         rts
+
+SCEND:   lda    #0
+         sta    ENTCNT,U
+         lda    #2
+         sta    CURPOS,U
+         lda    #32
+         sta    CURPOS+1,U
+
+         lbsr   SCRCMP      Compare players score
+         lda    ENTCNT,U
+         cmpa   #-1
+         beq    SCRTN
+
+OPNFL2   lda    #2          Set to write
+         leax   FILLST,pcr
+         os9    I$Open
+         lbcs   ERR1
+         sta    FPATH,U
+WRITFL   leax   FSCORE,U
+         ldy    #126
+         os9    I$Write
+         lbcs   ERR1
+         lda    FPATH,U
+         os9    I$Close
+         lbcs   ERR1
+
+         ldx    #100
+         lbsr   WAIT
+SCRTN    rts
+
+*   File data has been put in memory
+*   now print it on screen
+*   This is used for path2
+PRFIL2   leax   CLNRM2,pcr
+         ldy    #6
+         lbsr   OUTST2
+         leax   CURXY1,pcr
+         ldy    #3
+         lbsr   OUTST2
+         leax   FSCORE,U
+         leax   -21,X
+         ldb    #7
+         pshs   B,X
+PLOOP2   puls   B,X
+         decb
+         beq    PDONE2
+         leax   21,X
+         pshs   B,X
+         ldy    #21
+         lbsr   OUTST2
+         leax   CRLF,pcr
+         ldy    #2
+         lbsr   OUTST2
+         bra    PLOOP2
+
+PDONE2   rts
+
+SCRCMP   lda    #0          Set entry count to zero
+         ldb    #0
+         sta    ENTCNT,U    Save it
+         std    ENTPNT,U    Set entry pointer
+         leay   FSCORE,U    Point to start of data
+SCLOOP   leay   15,Y        Move to first score
+         leax   SCRASC-1,U  Point to players score -1
+         ldb    #7          Set byte counter
+SCLOP2   decb               Decrement counter
+         beq    NEXTCK      If =, go get next score
+         lda    ,Y+         Get hi-score byte
+         leax   1,X         Bump player score pointer
+         cmpa   ,X          Compare them
+         beq    SCLOP2      If =, go check next byte
+         blo    MOVE        If <, insert players name
+
+NEXTCK   lda    ENTCNT,U    Get entry counter
+         inca               Bump it
+         cmpa   #6          Done 6 yet ?
+         bne    NEXT        Score not higher, Print old data
+         lda    #-1
+         sta    ENTCNT,U
+         bra    PRFILE
+
+NEXT     sta    ENTCNT,U    Save count
+         leay   FSCORE,U
+         ldb    #21
+         mul
+         leay   D,Y
+         std    ENTPNT,U
+         bra    SCLOOP
+
+*        This routine is used to insert the
+*        player's score into the hi-scores
+*   Move name & score data down to allow player's
+*   name & score to be inserted. This will remove
+*   the last item from the list
+
+MOVE     lda    #5          Set constant
+         suba   ENTCNT,U    Subtract entry counter
+         ldb    #21         Set multiplier
+         mul                B reg. holds loop counter
+         leax   FSCORE,U    Point to start of data
+         leax   126,X       Move to last byte entry 6 +1
+         leay   FSCORE,U
+         leay   105,Y       Move to last byte entry 5 +1
+         cmpd   #0          If on bottom, then don't
+         beq    PUTIT         move any down
+INLOOP   lda    ,-Y         Get a byte
+         sta    ,-X         Move it
+         decb               Decrement counter
+         bne    INLOOP      
+
+*   Now zero(underline) out previous entry at this location
+
+PUTIT    ldb    #15         Set byte counter
+         lda    #95         ASCII underline chacarter
+PUTLOP   decb               Decrement counter
+         beq    PUTSCR
+         sta    ,Y+         Store a '_' character
+         bra    PUTLOP      Loop till 15 are done
+*   Now transfer players score
+PUTSCR   lda    #32         Space character
+         sta    ,Y+
+         ldb    #7          Set transfer byte counter
+         leax   SCRASC,U    Point to players ascii score
+PLOOP    decb               Decrement counter
+         beq    PRFILE      If 0, then exit
+         lda    ,X+         Get byte & increment X
+         sta    ,Y+         Put byte & increment Y
+         bra    PLOOP
+*   File data has been put in memory
+*   now print it on screen
+*   This is used for path
+PRFILE   leax   CLNORM,pcr
+         ldy    #6
+         lbsr   OUTST2
+         leax   CHGWK2,pcr
+         ldy    #9
+         lbsr   OUTST2
+         leax   FSCORE,U
+         leax   -21,X
+         lda    #-1
+         ldb    #7
+         pshs   D,X
+PRLOOP   puls   D,X
+         decb
+         beq    PRDONE
+         leax   21,X        Point to line to print
+         inca               Increment compare count
+         pshs   D,X
+         cmpa   ENTCNT,U    Are we on the new line ?
+         bne    NORMPR
+         stx    SAVEX,U     Save X register
+         leax   CLINVT,pcr  Invert screen colors
+         ldy    #6
+         lbsr   OUTST2
+         ldx    SAVEX,U     Get X register value
+         ldy    #21         Output 21 bytes
+         lbsr   OUTST2
+         leax   CRLF,pcr    Do a carriage return
+         ldy    #2            and a line feed
+         lbsr   OUTST2
+         leax   CLNORM,pcr  Reset screen colors
+         ldy    #6
+         lbsr   OUTST2
+         bra    PRLOOP
+
+NORMPR   ldy    #21
+         lbsr   OUTST2
+         leax   CRLF,pcr
+         ldy    #2
+         lbsr   OUTST2
+         bra    PRLOOP
+
+PRDONE   lda    ENTCNT,U
+         cmpa   #-1
+         lbeq   RDDONE
+
+OPNBOT   ldx    #100
+         lbsr   WAIT
+         leax   BOTWIN,pcr
+         ldy    #47
+         lbsr   OUTST2
+
+PNAMLP   leax   ENTNAM,pcr  Print 'Please enter your name'
+         ldy    #33         Output 34 bytes
+         lbsr   OUTST2
+
+         leax   ARROW,pcr   Print '-->_'
+         ldy    #17
+         lbsr   OUTST2
+
+*   Now get players name
+
+GETNAM   leax   PNAME,U     Fill name storage
+         lda    #32           with spaces
+         ldb    #15
+PNLOOP   sta    ,X+
+         decb
+         bne    PNLOOP
+
+RDNAME   leax   PNAME,U     Get name from player
+         ldy    #15         14 + CR
+         lda    PATH2,U
+         os9    I$ReadLn
+         lbcs   ERR1
+         tfr    Y,D
+
+         leax   PNAME,U
+         subd   #1
+         leax   D,X
+         std    NAMLGH,U
+         lda    #32
+         sta    ,X          Remove CR
+
+NAMEOK   ldd    NAMLGH,U
+         cmpd   #0
+         beq    NAMASK
+
+         leax   CURXY2,pcr  Clear screen, Move to XY
+         ldy    #7            location 6,0
+         lbsr   OUTST2        and set color
+
+         leax   PNAME,U
+         ldy    NAMLGH,U
+         lbsr   OUTST2
+
+NAMASK   leax   QUESTN,pcr
+         ldy    #33
+         lbsr   OUTST2
+
+         lbsr   READ2
+         lda    RESPON,U
+         cmpa   #89
+         beq    PUTNAM
+         cmpa   #121
+         beq    PUTNAM
+         leax   CLRSCN,pcr
+         ldy    #1
+         lbsr   OUTST2
+
+         lbra   PNAMLP
+
+PUTNAM   leax   BOTEND,pcr
+         ldy    #15
+         lbsr   OUTST2
+
+         leax   PNAME,U
+         leay   FSCORE,U
+         ldd    ENTPNT,U
+         leay   D,Y
+         ldb    #14
+PUTNML   lda    ,X+
+         sta    ,Y+
+         decb
+         bne    PUTNML
+
+         lda    ENTCNT,U
+         adda   #32
+         sta    CURPOS+2,U
+
+         leax   CURPOS,U
+         ldy    #3
+         lbsr   OUTST2
+
+         leax   FSCORE,U
+         ldd    ENTPNT,U
+         leax   D,X
+         ldy    #21
+         lbsr   OUTST2
+
+         leax   BOTWIN,pcr
+         ldy    #47
+         lbsr   OUTST2
+
+         leax   CONGRT,pcr
+         ldy    #27
+         lbsr   OUTST2
+
+         leax   PNAME,U
+         ldy    NAMLGH,U
+         lbsr   OUTST2
+
+RDDONE   ldx    #200
+         lda    ENTCNT,U
+         cmpa   #-1
+         beq    RDWAIT
+         ldx    #150
+RDWAIT   lbsr   WAIT        Sleep for 150 or 200 ticks
+         lda    ENTCNT,U
+         cmpa   #-1
+         beq    RDEXIT
+
+         leax   BOTEND,pcr
+         ldy    #15
+         lbsr   OUTST2
+RDEXIT   rts
+
+*   Handle file errors here
+*   214- no permission
+*   216- path name not found
+*   
+
+OPNERR   cmpb   #216        Is it PATH NAME NOT FOUND ?
+         lbne   ERR1
+*   Print Creating score file
+         leax   NOTFND,pcr
+         ldy    #56
+         lbsr   OUTST2
+         ldx    #75
+         lbsr   WAIT
+FILLSC   leax   FSCORE,U    Point to data area
+         ldb    #7          Set counter
+         stb    COUNT,U
+DMLOOP   lda    COUNT,U
+         deca
+         beq    CRFILE
+         sta    COUNT,U     Save new count
+         ldb    #15
+         lda    #46         '.'
+DLOOP2   decb
+         beq    SPACE
+         sta    ,X+         Put 14 '.' in data area
+         bra    DLOOP2
+SPACE    lda    #32         ' '
+         sta    ,X+         Put a space in data area
+         lda    #32         Space
+         ldb    #6
+DLOOP3   decb
+         beq    DZERO
+         sta    ,X+         Put 5 spaces in data area
+         bra    DLOOP3
+DZERO    lda    #48         '0'
+         sta    ,X+
+         bra    DMLOOP
+
+*   File doesn't exist, so create it
+
+CRFILE   leax   CREATE,pcr
+         ldy    #26
+         lbsr   OUTST2
+         leax   FILLST,pcr  Point to path list
+         lda    #2          Access mode (2=write)
+         ldb    #47         Attributes (00101111)
+         os9    I$Create    Go create file
+         lbcs   ERR1
+         sta    FPATH,U     Save path #
+*   Write data to file
+WRTFIL   leax   FSCORE,U    Point to data
+         ldy    #126        Write 126 bytes
+         lda    FPATH,U     Set path #
+         os9    I$Write     Do write
+         lbcs   ERR1
+*   Now close file
+CLSFIL   lda    FPATH,U
+         os9    I$Close
+         lbcs   ERR1
+         ldx    #75
+         lbsr   WAIT
+
+         rts
+
+REDERR   lbra   ERR1
+
+
+         ENDSECT
+
+
--- a/3rdparty/packages/pacos9/scrns90.a	Mon Jan 27 23:49:14 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,490 +0,0 @@
-
-
-         NAM    SCRNS
-         TTL    Screen handling routines
-
-*     Program segment to be compiled using Level II RMA
-*           This is not a mainline program segment
-*                 Written by Larry Olson
-
-         IFP1
-*         use    /dd/defs/os9defs.a
-         ENDc
-
-STACK    EQU    100
-
-         PSECT  SCRNS,0,0,2,STACK,DELPAC
-
-         VSECT
-
-*    Local variables
-
-         RMB    STACK
-
-         ENDSECT
-
-
-ERSCRN   fcb    2,32,33,$0B
-
-SETCOL   fcb    $1b,$32,10
-
-DELPAC:  lda    PLAYRS      Check for 1 or 2 players
-         bne    CHKTWO
-         lda    PACMAN      Get # of pacmen
-         deca               Subtract 1
-         sta    PACMAN      Save new player count
-         lbeq   GAMOVR      If 0 then END GAME
-         lbra   NEWSC1
-
-*    2 players, so check who's up
-
-CHKTWO   lda    PLCRNT      Get current player
-         cmpa   #1          Is it player #1 ?
-         bne    PLAY2
-*    Player 1 was up so kill one of his pacmen
-         lda    PACMN1      Get number of pacmen
-         deca               Subtract 1
-         sta    PACMN1      Save new total
-         bne    TFRTWO
-         lbsr   GAMOV2      Game over for player 1
-
-*    Transfer player2 variables
-TFRTWO   lda    PACMN2      Get player 2 pacmen total
-         sta    PACMAN      Put it in current pacman
-         lda    #2
-         sta    PLCRNT      Set current player to 2
-         leax   SCR2,pcr    Point arrow at player 2
-         bra    TFRSCR      Go transfer score & run NEWSCREEN
-
-PLAY2    lda    PACMN2      Get player 2 pacmen
-         deca               Subtract 1
-         sta    PACMN2      Save new pacmen count
-         lbeq   GAMOVR       Game over
-         lda    PACMN1      Get player 1 pacmen
-         sta    PACMAN      Put it in current pacman
-         lda    #1
-         sta    PLCRNT      Set current player to 1
-         leax   SCR1,pcr    Point arrow at player 1
-
-*    Transfer score variables
-
-TFRSCR   ldy    #18         Output 18 characters to screen
-         lbsr   OUTSTR      Go output arrow
-         leax   SCRPOS,U    Point to score string
-         leay   SCRPO2,U    Point to score save area
-         ldb    #12         Set count to 12 bytes
-         stb    DOTCNT      Save counter
-SRLOOP   lda    ,X
-         ldb    ,Y
-         sta    ,Y+
-         stb    ,X+
-         dec    DOTCNT
-         bne    SRLOOP      Loop till 12 bytes done
-
-         ldd    EXTPAC,U
-         pshs   d
-         ldd    EXTPC2,U
-         std    EXTPAC,U
-         puls   D
-         std    EXTPC2,U
-
-*    Transfer board variables
-
-         leax   DOTTOT,U
-         leay   DOTTMP,U
-         ldb    #6          Transfer 6 bytes
-         stb    DOTCNT      Save counter
-SBLOOP   lda    ,X
-         ldb    ,Y
-         sta    ,Y+
-         stb    ,X+
-         dec    DOTCNT
-         bne    SBLOOP
-
-******************************
-NEWSC1   leax   SELECT,pcr  *---- Remark out for testing
-         ldy    #2          *
-         lbsr   OUTST2      *
-******************************
-
-         ldx    #75
-         lbsr   WAIT
-         lda    PLAYRS      Check for 1 or 2 players
-         beq    ONEPLR
-         lbsr   BELL
-         leax   GETRD1,pcr
-         lda    PLCRNT      Get current player
-         cmpa   #1
-         beq    PUTPLR
-         leax   GETRD2,pcr
-PUTPLR   ldy    #29         Output 29 bytes 
-         lbsr   POPUP
-         bra    NEWSC2
-
-         ldx    #75
-         lbsr   WAIT
-
-         lbsr   BELL
-
-ONEPLR   leax   GETRDY,pcr
-         ldy    #12
-         lbsr   POPUP       Do popup and output GETRDY
-
-NEWSC2   bsr    NEWSCN      Erase ghosts & pacman
-         lda    PLAYRS      Check for 1 or 2 players
-         beq    SKIPTR
-
-         lbsr   TRANSF      Transfer table to array
-
-SKIPTR   nop
-         ldx    #50
-         lbsr   WAIT
-
-         lbsr   BELL
-
-         leax   SELECT,pcr
-         ldy    #2
-         lbsr   OUTSTR
-
-         leax   POPEND,pcr
-         ldy    #15
-         lbsr   OUTST2
-
-         lbra   MAIN
-
-*   New screen routines
-
-NEWSCN:  ldd    PXNEW       First erase pacman
-         std    PXLOC
-         ldd    PYNEW
-         std    PYLOC
-         lda    #37         Blank round pacman
-         sta    PBFN
-         lbsr   PUTBLK
-*   Now erase ghosts
-         lda    #1
-         sta    PGBFN
-         lda    #80
-         sta    GCOUNT
-GHRSET   lda    GCOUNT
-         suba   #20
-         bmi    GHRST2
-         sta    GCOUNT
-         leax   G1OFST,U
-         leax   A,X
-         ldd    2,X
-         std    PGXLOC
-         ldd    4,X
-         std    PGYLOC
-         lbsr   PUTGHT
-         bra    GHRSET
-GHRST2   lbsr   GHDATA
-*    Reset palette registers
-         leax   PALST1,pcr
-         ldy    #16
-         lbsr   OUTSTR
-
-*    Clear and setup array
-*    Only clear array and dot total at start of game
-
-         ldd    DOTTOT      Check dot total
-         cmpd   SCNTOT      Cleared screen ?
-         beq    NEWBRD
-
-         lda    PLAYRS      Check for 2 player mode
-         beq    PTDOTS
-
-         lda    BRDNUM
-         cmpa   BRDTMP      Are players on same board?
-         beq    SETVR2
-
-         leax   ERSCRN,pcr  Erase scrn, leave score
-         ldy    #4          Output 4 bytes
-         lbsr   OUTSTR
-         lbsr   BOARDB      Go draw players board
-         leax   SETCOL,pcr  Reset foreground color
-         ldy    #3          Output 3 bytes
-         lbsr   OUTSTR
-         bra    SETVR2
-
-NEWBRD:  dec    SCNFLG
-         bne    NEWBR2
-         lda    #2
-         sta    SCNFLG      Reset screen flag to 2
-         lda    BRDNUM      Get board number
-         inca
-         cmpa   #9          Only 8 boards
-         bne    GETBRD
-         lda    #1          Reset board to #1
-GETBRD   sta    BRDNUM      Save new board number
-         leax   ERSCRN,pcr  Erase scrn, leave score
-         ldy    #4          Output 4 bytes
-         lbsr   OUTSTR
-         lbsr   BOARDB      Go draw new board
-         leax   SETCOL,pcr  Reset forgroung color
-         ldy    #3
-         lbsr   OUTSTR
-NEWBR2   lbsr   CLRARR      Clear array, fill with dots
-         ldd    #0
-         std    DOTTOT      Reset dot total
-
-*    Redraw DOTS and PILLS that may have been
-*     partially erased by ghosts or pacman
-
-PTDOTS   lbsr   PDOTS
-
-RSTBON   lbsr   RESBON      Go reset bonus
-
-*    Reset pacman variables
-SETVR2   ldd    #308  
-         std    PXNEW
-         std    PCXLOC
-         std    PXLOC,U
-         ldd    #94
-         std    PYNEW
-         std    PCYLOC
-         std    PYLOC,U
-         lda    #28
-         sta    BUFF
-         sta    PBFN,U
-         lbsr   PUTBLK      Put starting pacman
-         ldd    #1966
-         std    POFSET
-         lda    #3
-         sta    CYCLE
-         lda    #80
-         sta    GCOUNT
-         clr    HITFLG
-         clr    POWFLG
-
-RETURN   rts                Return to  main loop
-
-*   Transfer player table to array & array to table
-*   Used to save one players screen when switching
-*   to second player.
-
-
-TRANSF   leay   TABLE1,U    Point to player 1 table
-         lda    PLCRNT,U
-         cmpa   #2          Is new player #2 ?
-         beq    TRFPUT
-         leay   TABLE2,U    Point to player 2 table
-TRFPUT   leax   ARRAY,U     Point to start of array
-         leax   70,X        Move to first dot location
-         clr    DOTCNT
-TRLOOP   inc    DOTCNT      Bump dot counter
-         lda    ,X          Get a byte from array
-         ldb    ,Y          Get a byte from table
-         sta    ,Y+         Put array byte in table
-         stb    ,X++        Put byte in array,bump pointer
-         lda    DOTCNT      Get dot counter
-         cmpa   #34         Done 34 yet?
-         bne    TRLOOP
-         cmpx   #ARREND-69  Are we done?
-         bge    TRCLR
-         leax   139,X       Move down 2 lines in array
-         clr    DOTCNT
-         bra    TRLOOP
-
-TRCLR    lbsr   CLRARR      Go clear and setup array
-
-         leay   TABLE1,U    Point to player 1 table
-         lda    PLCRNT,U
-         cmpa   #1          Is new player #1 ?
-         beq    TFRPT2
-         leay   TABLE2,U    Point to player 2 table
-TFRPT2   leax   ARRAY,U     Point to start of array
-         leax   70,X
-         clr    DOTCNT
-TRLOP2   inc    DOTCNT
-         lda    ,X
-         ldb    ,Y
-         sta    ,Y+
-         stb    ,X++
-         lda    DOTCNT
-         cmpa   #34
-         bne    TRLOP2
-         cmpx   #ARREND-69
-         bge    TRDONE
-         leax   139,X
-         clr    DOTCNT
-         bra    TRLOP2
-
-TRDONE   lbsr   PDOTS       Go put dots on screen
-
-*    Transfer players bonus variables (2 player mode only)
-*     Erase last players bonus items from screen
-
-TRFBON   lda    #69         Blank Bonus
-         sta    PBFN,U
-         ldd    BONUSX      Get scrn x value
-         std    PXLOC,U
-         ldd    BONUSY      Get scrn Y value
-         std    PYLOC,U
-         lda    BONCNT      Get count of items
-         inca
-         sta    BONTMP
-TBLOOP   dec    BONTMP
-         beq    TRBON2      Leave routine if 0
-         lbsr   PUTBLK      Go erase item
-         ldd    PXLOC,U
-         subd   #28
-         std    PXLOC,U
-         bra    TBLOOP
-
-*    Now transfer bonus variables
-
-TRBON2   lda    #15         Transfer 15 bytes
-         sta    BONTMP
-         leax   BONUSX,U    Point to first block
-         leay   BTEMP,U     Point to second block
-TLOOP2   lda    ,X
-         ldb    ,Y
-         sta    ,Y+
-         stb    ,X+
-         dec    BONTMP
-         bne    TLOOP2
-
-*    Now put new players bonus items on screen
-
-PBONUS   ldd    #8
-         std    PXLOC,U
-         ldd    #181
-         std    PYLOC,U
-         leax   BONTAB,U    Point to table
-         stx    BONTMP      Save table pointer
-         lda    BONCNT
-         beq    PBDONE
-PBLOOP   pshs   A           Save count
-         ldd    PXLOC,U
-         addd   #28
-         std    PXLOC,U
-         ldx    BONTMP      Get pointer
-         ldb    ,X+         Get next table item
-         stb    PBFN,U
-         stx    BONTMP      Save pointer
-         lbsr   PUTBLK      Go put item on screen
-         puls   A
-         deca               Decrement counter
-         bne    PBLOOP
-
-*  Pacman may have to be put back on screen here
-
-PBDONE   rts
-
-*   Reset bonus variables
-
-RESBON:  lda    BONFLG      Check flag
-         beq    RESBN2      If 0, bonus not on screen
-         ldd    #310
-         std    PXLOC
-         ldd    #95
-         std    PYLOC
-         lda    #69
-         sta    PBFN
-         lbsr   PUTBLK      Erase bonus from screen
-         leax   ARRAY,U
-         ldd    #1966
-         leax   D,X
-         clr    ,X          Erase bonus from array
-         clr    BONFLG
-RESBN2   lda    #69
-         sta    BONBUF      Reset bonus buffer #
-         lda    #250
-         sta    BONTIM      Reset bonus timer
-         rts
-
-*    Bonus was eaten by pacman, so erase it
-*    and put it at bottom of screen
-
-SETBON:  ldd    #310        X scrn location of bonus
-         std    PXLOC,U
-         ldd    #95         Y scrn location of bonus
-         std    PYLOC,U
-         lda    #69         Number for blank bonus
-         sta    PBFN,U
-         lbsr   PUTBLK      Go erase bonus
-*    Restore pacman (if erased)
-         leax   PUTPACM,U
-         ldy    #8
-         lda    PATH
-         OS9    I$Write
-         lbcs   ERR1
-*    Make noise
-
-         ldx    #$3f01
-         ldy    #3850
-         lbsr   SND
-         ldx    #$3401
-         ldy    #4000
-         lbsr   SND
-
-         leax   BONTAB,U    Point to item table
-         lda    BONCNT
-         leax   A,X         Move to next table location
-         ldb    BONBUF      Get buffer number
-         stb    ,X          Put it in table
-
-         ldd    BONUSX
-         addd   #28         Move to next location
-         std    BONUSX      Save new location
-         std    PXLOC,U
-         ldd    BONUSY
-         std    PYLOC,U
-         lda    BONBUF      Get Bonus buffer number
-         sta    PBFN,U
-         lbsr   PUTBLK      Put bonus at bottom of scrn
-         inc    BONCNT      Bump bonus counter
-         rts
-
-*    When screen has been cleared, give an additional
-*    100 points for each bonus at bottom of screen.
-*    Erase bonus item at bottom as it is added up.
-
-CNTBON:  lda    BONCNT      Check for 0 bonus's
-         beq    CTRTS       If zero, then return
-         ldd    BONUSY
-         std    PYLOC,U
-         lda    #69         Blank Bonus
-         sta    PBFN,U
-         ldd    BONUSX
-         std    PXLOC,U
-CTLOOP   lbsr   PUTBLK      Go erase bonus item
-
-*     Make noise
-
-         ldx    #$3f02
-         ldy    #4000
-         lbsr   SND
-         ldx    #$3f03
-         ldy    #3800
-         lbsr   SND
-         ldx    #$3f02
-         ldy    #4000
-         lbsr   SND
-
-*     Bump score
-
-         lda    #1          Add 100 points to score
-         sta    POINTS+1
-         clr    POINTS+2
-         lbsr   ADDUP
-         dec    BONCNT      Decrement bonus counter
-         beq    CTDONE
-         ldd    PXLOC,U
-         subd   #28         Move to next item
-         std    PXLOC,U
-         bra    CTLOOP
-
-CTDONE   clr    POINTS+1
-         ldd    #8
-         std    BONUSX
-
-CTRTS    rts
-
-
-
-         ENDSECT
-
-
-                                                                              
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/pacos9/scrns90.as	Sat Feb 08 01:03:26 2014 +0100
@@ -0,0 +1,490 @@
+
+
+         NAM    SCRNS
+         TTL    Screen handling routines
+
+*     Program segment to be compiled using Level II RMA
+*           This is not a mainline program segment
+*                 Written by Larry Olson
+
+         IFP1
+*         use    /dd/defs/os9defs.a
+         ENDc
+
+STACK    EQU    100
+
+         PSECT  SCRNS,0,0,2,STACK,DELPAC
+
+         VSECT
+
+*    Local variables
+
+         RMB    STACK
+
+         ENDSECT
+
+
+ERSCRN   fcb    2,32,33,$0B
+
+SETCOL   fcb    $1b,$32,10
+
+DELPAC:  lda    PLAYRS      Check for 1 or 2 players
+         bne    CHKTWO
+         lda    PACMAN      Get # of pacmen
+         deca               Subtract 1
+         sta    PACMAN      Save new player count
+         lbeq   GAMOVR      If 0 then END GAME
+         lbra   NEWSC1
+
+*    2 players, so check who's up
+
+CHKTWO   lda    PLCRNT      Get current player
+         cmpa   #1          Is it player #1 ?
+         bne    PLAY2
+*    Player 1 was up so kill one of his pacmen
+         lda    PACMN1      Get number of pacmen
+         deca               Subtract 1
+         sta    PACMN1      Save new total
+         bne    TFRTWO
+         lbsr   GAMOV2      Game over for player 1
+
+*    Transfer player2 variables
+TFRTWO   lda    PACMN2      Get player 2 pacmen total
+         sta    PACMAN      Put it in current pacman
+         lda    #2
+         sta    PLCRNT      Set current player to 2
+         leax   SCR2,pcr    Point arrow at player 2
+         bra    TFRSCR      Go transfer score & run NEWSCREEN
+
+PLAY2    lda    PACMN2      Get player 2 pacmen
+         deca               Subtract 1
+         sta    PACMN2      Save new pacmen count
+         lbeq   GAMOVR       Game over
+         lda    PACMN1      Get player 1 pacmen
+         sta    PACMAN      Put it in current pacman
+         lda    #1
+         sta    PLCRNT      Set current player to 1
+         leax   SCR1,pcr    Point arrow at player 1
+
+*    Transfer score variables
+
+TFRSCR   ldy    #18         Output 18 characters to screen
+         lbsr   OUTSTR      Go output arrow
+         leax   SCRPOS,U    Point to score string
+         leay   SCRPO2,U    Point to score save area
+         ldb    #12         Set count to 12 bytes
+         stb    DOTCNT      Save counter
+SRLOOP   lda    ,X
+         ldb    ,Y
+         sta    ,Y+
+         stb    ,X+
+         dec    DOTCNT
+         bne    SRLOOP      Loop till 12 bytes done
+
+         ldd    EXTPAC,U
+         pshs   d
+         ldd    EXTPC2,U
+         std    EXTPAC,U
+         puls   D
+         std    EXTPC2,U
+
+*    Transfer board variables
+
+         leax   DOTTOT,U
+         leay   DOTTMP,U
+         ldb    #6          Transfer 6 bytes
+         stb    DOTCNT      Save counter
+SBLOOP   lda    ,X
+         ldb    ,Y
+         sta    ,Y+
+         stb    ,X+
+         dec    DOTCNT
+         bne    SBLOOP
+
+******************************
+NEWSC1   leax   SELECT,pcr  *---- Remark out for testing
+         ldy    #2          *
+         lbsr   OUTST2      *
+******************************
+
+         ldx    #75
+         lbsr   WAIT
+         lda    PLAYRS      Check for 1 or 2 players
+         beq    ONEPLR
+         lbsr   BELL
+         leax   GETRD1,pcr
+         lda    PLCRNT      Get current player
+         cmpa   #1
+         beq    PUTPLR
+         leax   GETRD2,pcr
+PUTPLR   ldy    #29         Output 29 bytes 
+         lbsr   POPUP
+         bra    NEWSC2
+
+         ldx    #75
+         lbsr   WAIT
+
+         lbsr   BELL
+
+ONEPLR   leax   GETRDY,pcr
+         ldy    #12
+         lbsr   POPUP       Do popup and output GETRDY
+
+NEWSC2   bsr    NEWSCN      Erase ghosts & pacman
+         lda    PLAYRS      Check for 1 or 2 players
+         beq    SKIPTR
+
+         lbsr   TRANSF      Transfer table to array
+
+SKIPTR   nop
+         ldx    #50
+         lbsr   WAIT
+
+         lbsr   BELL
+
+         leax   SELECT,pcr
+         ldy    #2
+         lbsr   OUTSTR
+
+         leax   POPEND,pcr
+         ldy    #15
+         lbsr   OUTST2
+
+         lbra   MAIN
+
+*   New screen routines
+
+NEWSCN:  ldd    PXNEW       First erase pacman
+         std    PXLOC
+         ldd    PYNEW
+         std    PYLOC
+         lda    #37         Blank round pacman
+         sta    PBFN
+         lbsr   PUTBLK
+*   Now erase ghosts
+         lda    #1
+         sta    PGBFN
+         lda    #80
+         sta    GCOUNT
+GHRSET   lda    GCOUNT
+         suba   #20
+         bmi    GHRST2
+         sta    GCOUNT
+         leax   G1OFST,U
+         leax   A,X
+         ldd    2,X
+         std    PGXLOC
+         ldd    4,X
+         std    PGYLOC
+         lbsr   PUTGHT
+         bra    GHRSET
+GHRST2   lbsr   GHDATA
+*    Reset palette registers
+         leax   PALST1,pcr
+         ldy    #16
+         lbsr   OUTSTR
+
+*    Clear and setup array
+*    Only clear array and dot total at start of game
+
+         ldd    DOTTOT      Check dot total
+         cmpd   SCNTOT      Cleared screen ?
+         beq    NEWBRD
+
+         lda    PLAYRS      Check for 2 player mode
+         beq    PTDOTS
+
+         lda    BRDNUM
+         cmpa   BRDTMP      Are players on same board?
+         beq    SETVR2
+
+         leax   ERSCRN,pcr  Erase scrn, leave score
+         ldy    #4          Output 4 bytes
+         lbsr   OUTSTR
+         lbsr   BOARDB      Go draw players board
+         leax   SETCOL,pcr  Reset foreground color
+         ldy    #3          Output 3 bytes
+         lbsr   OUTSTR
+         bra    SETVR2
+
+NEWBRD:  dec    SCNFLG
+         bne    NEWBR2
+         lda    #2
+         sta    SCNFLG      Reset screen flag to 2
+         lda    BRDNUM      Get board number
+         inca
+         cmpa   #9          Only 8 boards
+         bne    GETBRD
+         lda    #1          Reset board to #1
+GETBRD   sta    BRDNUM      Save new board number
+         leax   ERSCRN,pcr  Erase scrn, leave score
+         ldy    #4          Output 4 bytes
+         lbsr   OUTSTR
+         lbsr   BOARDB      Go draw new board
+         leax   SETCOL,pcr  Reset forgroung color
+         ldy    #3
+         lbsr   OUTSTR
+NEWBR2   lbsr   CLRARR      Clear array, fill with dots
+         ldd    #0
+         std    DOTTOT      Reset dot total
+
+*    Redraw DOTS and PILLS that may have been
+*     partially erased by ghosts or pacman
+
+PTDOTS   lbsr   PDOTS
+
+RSTBON   lbsr   RESBON      Go reset bonus
+
+*    Reset pacman variables
+SETVR2   ldd    #308  
+         std    PXNEW
+         std    PCXLOC
+         std    PXLOC,U
+         ldd    #94
+         std    PYNEW
+         std    PCYLOC
+         std    PYLOC,U
+         lda    #28
+         sta    BUFF
+         sta    PBFN,U
+         lbsr   PUTBLK      Put starting pacman
+         ldd    #1966
+         std    POFSET
+         lda    #3
+         sta    CYCLE
+         lda    #80
+         sta    GCOUNT
+         clr    HITFLG
+         clr    POWFLG
+
+RETURN   rts                Return to  main loop
+
+*   Transfer player table to array & array to table
+*   Used to save one players screen when switching
+*   to second player.
+
+
+TRANSF   leay   TABLE1,U    Point to player 1 table
+         lda    PLCRNT,U
+         cmpa   #2          Is new player #2 ?
+         beq    TRFPUT
+         leay   TABLE2,U    Point to player 2 table
+TRFPUT   leax   ARRAY,U     Point to start of array
+         leax   70,X        Move to first dot location
+         clr    DOTCNT
+TRLOOP   inc    DOTCNT      Bump dot counter
+         lda    ,X          Get a byte from array
+         ldb    ,Y          Get a byte from table
+         sta    ,Y+         Put array byte in table
+         stb    ,X++        Put byte in array,bump pointer
+         lda    DOTCNT      Get dot counter
+         cmpa   #34         Done 34 yet?
+         bne    TRLOOP
+         cmpx   #ARREND-69  Are we done?
+         bge    TRCLR
+         leax   139,X       Move down 2 lines in array
+         clr    DOTCNT
+         bra    TRLOOP
+
+TRCLR    lbsr   CLRARR      Go clear and setup array
+
+         leay   TABLE1,U    Point to player 1 table
+         lda    PLCRNT,U
+         cmpa   #1          Is new player #1 ?
+         beq    TFRPT2
+         leay   TABLE2,U    Point to player 2 table
+TFRPT2   leax   ARRAY,U     Point to start of array
+         leax   70,X
+         clr    DOTCNT
+TRLOP2   inc    DOTCNT
+         lda    ,X
+         ldb    ,Y
+         sta    ,Y+
+         stb    ,X++
+         lda    DOTCNT
+         cmpa   #34
+         bne    TRLOP2
+         cmpx   #ARREND-69
+         bge    TRDONE
+         leax   139,X
+         clr    DOTCNT
+         bra    TRLOP2
+
+TRDONE   lbsr   PDOTS       Go put dots on screen
+
+*    Transfer players bonus variables (2 player mode only)
+*     Erase last players bonus items from screen
+
+TRFBON   lda    #69         Blank Bonus
+         sta    PBFN,U
+         ldd    BONUSX      Get scrn x value
+         std    PXLOC,U
+         ldd    BONUSY      Get scrn Y value
+         std    PYLOC,U
+         lda    BONCNT      Get count of items
+         inca
+         sta    BONTMP
+TBLOOP   dec    BONTMP
+         beq    TRBON2      Leave routine if 0
+         lbsr   PUTBLK      Go erase item
+         ldd    PXLOC,U
+         subd   #28
+         std    PXLOC,U
+         bra    TBLOOP
+
+*    Now transfer bonus variables
+
+TRBON2   lda    #15         Transfer 15 bytes
+         sta    BONTMP
+         leax   BONUSX,U    Point to first block
+         leay   BTEMP,U     Point to second block
+TLOOP2   lda    ,X
+         ldb    ,Y
+         sta    ,Y+
+         stb    ,X+
+         dec    BONTMP
+         bne    TLOOP2
+
+*    Now put new players bonus items on screen
+
+PBONUS   ldd    #8
+         std    PXLOC,U
+         ldd    #181
+         std    PYLOC,U
+         leax   BONTAB,U    Point to table
+         stx    BONTMP      Save table pointer
+         lda    BONCNT
+         beq    PBDONE
+PBLOOP   pshs   A           Save count
+         ldd    PXLOC,U
+         addd   #28
+         std    PXLOC,U
+         ldx    BONTMP      Get pointer
+         ldb    ,X+         Get next table item
+         stb    PBFN,U
+         stx    BONTMP      Save pointer
+         lbsr   PUTBLK      Go put item on screen
+         puls   A
+         deca               Decrement counter
+         bne    PBLOOP
+
+*  Pacman may have to be put back on screen here
+
+PBDONE   rts
+
+*   Reset bonus variables
+
+RESBON:  lda    BONFLG      Check flag
+         beq    RESBN2      If 0, bonus not on screen
+         ldd    #310
+         std    PXLOC
+         ldd    #95
+         std    PYLOC
+         lda    #69
+         sta    PBFN
+         lbsr   PUTBLK      Erase bonus from screen
+         leax   ARRAY,U
+         ldd    #1966
+         leax   D,X
+         clr    ,X          Erase bonus from array
+         clr    BONFLG
+RESBN2   lda    #69
+         sta    BONBUF      Reset bonus buffer #
+         lda    #250
+         sta    BONTIM      Reset bonus timer
+         rts
+
+*    Bonus was eaten by pacman, so erase it
+*    and put it at bottom of screen
+
+SETBON:  ldd    #310        X scrn location of bonus
+         std    PXLOC,U
+         ldd    #95         Y scrn location of bonus
+         std    PYLOC,U
+         lda    #69         Number for blank bonus
+         sta    PBFN,U
+         lbsr   PUTBLK      Go erase bonus
+*    Restore pacman (if erased)
+         leax   PUTPACM,U
+         ldy    #8
+         lda    PATH
+         OS9    I$Write
+         lbcs   ERR1
+*    Make noise
+
+         ldx    #$3f01
+         ldy    #3850
+         lbsr   SND
+         ldx    #$3401
+         ldy    #4000
+         lbsr   SND
+
+         leax   BONTAB,U    Point to item table
+         lda    BONCNT
+         leax   A,X         Move to next table location
+         ldb    BONBUF      Get buffer number
+         stb    ,X          Put it in table
+
+         ldd    BONUSX
+         addd   #28         Move to next location
+         std    BONUSX      Save new location
+         std    PXLOC,U
+         ldd    BONUSY
+         std    PYLOC,U
+         lda    BONBUF      Get Bonus buffer number
+         sta    PBFN,U
+         lbsr   PUTBLK      Put bonus at bottom of scrn
+         inc    BONCNT      Bump bonus counter
+         rts
+
+*    When screen has been cleared, give an additional
+*    100 points for each bonus at bottom of screen.
+*    Erase bonus item at bottom as it is added up.
+
+CNTBON:  lda    BONCNT      Check for 0 bonus's
+         beq    CTRTS       If zero, then return
+         ldd    BONUSY
+         std    PYLOC,U
+         lda    #69         Blank Bonus
+         sta    PBFN,U
+         ldd    BONUSX
+         std    PXLOC,U
+CTLOOP   lbsr   PUTBLK      Go erase bonus item
+
+*     Make noise
+
+         ldx    #$3f02
+         ldy    #4000
+         lbsr   SND
+         ldx    #$3f03
+         ldy    #3800
+         lbsr   SND
+         ldx    #$3f02
+         ldy    #4000
+         lbsr   SND
+
+*     Bump score
+
+         lda    #1          Add 100 points to score
+         sta    POINTS+1
+         clr    POINTS+2
+         lbsr   ADDUP
+         dec    BONCNT      Decrement bonus counter
+         beq    CTDONE
+         ldd    PXLOC,U
+         subd   #28         Move to next item
+         std    PXLOC,U
+         bra    CTLOOP
+
+CTDONE   clr    POINTS+1
+         ldd    #8
+         std    BONUSX
+
+CTRTS    rts
+
+
+
+         ENDSECT
+
+
+                                                                              
--- a/3rdparty/packages/pacos9/setup90.a	Mon Jan 27 23:49:14 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,847 +0,0 @@
-
-         NAM    SETUP
-         TTL    Routine to put objects in buffers
-
-         IFP1
-*         use    /h0/defs/os9defs.a
-         ENDc
-
-STACK    EQU    100
-
-
-         PSECT  SETUP,0,0,0,STACK,SETUPB
-
-         VSECT
-
-*    Local variables
-
-TABCNT   RMB    1
-XVALUE   RMB    2
-YVALUE   RMB    2
-DOTCNT   RMB    1
-BYTE     RMB    1
-READCT   RMB    2
-         RMB    STACK
-
-
-         ENDSECT
-
-
-*   The following fcb's,(up to SETLEN), will be put
-*   in Group Buffer #= (Process ID) 
-
-*     Change palette colors
-PALSET   fcb    $1b,$31,0,54     Bright Yellow
-         fcb    $1b,$31,1,9      Blue
-         fcb    $1b,$31,2,0      Black
-         fcb    $1b,$31,3,18     Green
-         fcb    $1b,$31,4,36     Bright Red
-         fcb    $1b,$31,5,63     White
-         fcb    $1b,$31,6,25     Medium Blue
-         fcb    $1b,$31,7,52     Medium Yellow-Orange
-         fcb    $1b,$31,8,32     Medium Red
-         fcb    $1b,$31,9,16     Medium Green
-         fcb    $1b,$31,10,36    Bright Red
-         fcb    $1b,$31,11,48    Medium Yellow
-         fcb    $1b,$31,12,63    White
-         fcb    $1b,$31,13,43    Medium Blue-Magenta
-
-*     Draw and save dot
-BLDOT    fcb    $1b,$2c,254,46,0,50,0,1,0,6,0,4
-
-DOT      fcb    $1b,$32,7
-         fcb    $1b,$40,0,50,0,2
-         fcb    $1b,$4a,0,55,0,3
-         fcb    $1b,$40,0,52,0,1
-         fcb    $1b,$4a,0,53,0,4
-         fcb    $1b,$2c,254,40,0,50,0,1,0,6,0,4
-
-DOT2     fcb    $1b,$2c,254,42,0,50,0,1,0,6,0,3
-         fcb    $1b,$2d,254,42,0,25,0,5
-
-DOT3     fcb    $1b,$2c,254,43,0,50,0,2,0,6,0,3
-         fcb    $1b,$2d,254,43,0,25,0,10
-
-*     Draw and save power pill
-BLPILL   fcb    $1b,$2c,254,56,0,60,0,10,0,10,0,4
-
-POWPIL   fcb    $1b,$32,8
-         fcb    $1b,$40,0,60,0,11
-         fcb    $1b,$4a,0,69,0,12
-         fcb    $1b,$40,0,62,0,10
-         fcb    $1b,$4a,0,67,0,13
-         fcb    $1b,$2c,254,50,0,60,0,10,0,10,0,4
-
-POW2     fcb    $1b,$2c,254,52,0,60,0,10,0,10,0,3
-         fcb    $1b,$2d,254,52,0,25,0,55
-
-POW3     fcb    $1b,$2c,254,53,0,60,0,11,0,10,0,3
-         fcb    $1b,$2d,254,53,0,25,0,60
-*   Blank bonus
-BLBON    fcb    $1b,$2c,254,69,0,50,0,170,0,20,0,8
-
-BONUS1   fcb    $1b,$32,10
-         fcb    $1b,$40,0,50,0,174
-         fcb    $1b,$4a,0,57,0,175
-         fcb    $1b,$40,0,52,0,173
-         fcb    $1b,$4a,0,55,0,176
-         fcb    $1b,$40,0,60,0,175
-         fcb    $1b,$4a,0,67,0,176
-         fcb    $1b,$40,0,62,0,174
-         fcb    $1b,$4a,0,65,0,177
-         fcb    $1b,$32,9
-         fcb    $1b,$40,0,56,0,173
-         fcb    $1b,$42,0,56,0,173
-         fcb    $1b,$40,0,58,0,172
-         fcb    $1b,$4a,0,61,0,174
-         fcb    $1b,$40,0,60,0,171
-         fcb    $1b,$44,0,62,0,171
-         fcb    $1b,$40,0,62,0,170
-         fcb    $1b,$44,0,64,0,170
-         fcb    $1b,$2c,254,70,0,50,0,170,0,18,0,8
-
-BONUS2   fcb    $1b,$32,10
-         fcb    $1b,$40,0,88,0,170
-         fcb    $1b,$48,0,90,0,171
-         fcb    $1b,$32,12
-         fcb    $1b,$40,0,80,0,172
-         fcb    $1b,$4a,0,98,0,176
-         fcb    $1b,$32,2
-         fcb    $1b,$44,0,82,0,72
-         fcb    $1b,$40,0,96,0,172
-         fcb    $1b,$44,0,98,0,172
-         fcb    $1b,$42,0,80,0,173
-         fcb    $1b,$42,0,98,0,173
-         fcb    $1b,$32,13
-         fcb    $1b,$40,0,82,0,176
-         fcb    $1b,$4a,0,96,0,177
-         fcb    $1b,$40,0,86,0,176
-         fcb    $1b,$44,0,88,0,176
-         fcb    $1b,$2c,254,71,0,80,0,170,0,20,0,8
-
-BONUS3   fcb    $1b,$32,0
-         fcb    $1b,$40,0,114,0,175
-         fcb    $1b,$4a,0,122,0,177
-         fcb    $1b,$32,10
-         fcb    $1b,$40,0,110,0,171
-         fcb    $1b,$4a,0,126,0,174
-         fcb    $1b,$32,12
-         fcb    $1b,$40,0,116,0,171
-         fcb    $1b,$44,0,118,0,171
-         fcb    $1b,$42,0,124,0,171
-         fcb    $1b,$42,0,126,0,173
-         fcb    $1b,$40,0,110,0,173
-         fcb    $1b,$44,0,112,0,173
-         fcb    $1b,$40,0,118,0,173
-         fcb    $1b,$44,0,120,0,173
-         fcb    $1b,$32,2
-         fcb    $1b,$42,0,110,0,171
-         fcb    $1b,$42,0,126,0,171
-         fcb    $1b,$2c,254,72,0,110,0,170,0,20,0,8
-
-*     Get blank pacman
-BLPAC    fcb    $1b,$2c,254,37,0,50,0,25,0,22,0,10
-*     Draw and save round full pacman
-RFPAC    fcb    $1b,$32,0
-         fcb    $1b,$40,0,50,0,29
-         fcb    $1b,$4a,0,71,0,32
-         fcb    $1b,$40,0,52,0,28
-         fcb    $1b,$4a,0,69,0,33
-         fcb    $1b,$40,0,54,0,27
-         fcb    $1b,$4a,0,67,0,34
-         fcb    $1b,$40,0,58,0,26
-         fcb    $1b,$4a,0,62,0,35
-         fcb    $1b,$2c,254,38,0,50,0,26,0,22,0,10
-*     Right facing pacman cycle #1
-RFPAC1   fcb    $1b,$2d,254,38,0,90,0,1
-         fcb    $1b,$40,0,98,0,5
-         fcb    $1b,$32,2
-         fcb    $1b,$4a,0,111,0,6
-         fcb    $1b,$2c,254,25,0,82,0,1,0,30,0,10
-*     Right facing pacman cycle #2
-RFPAC2   fcb    $1b,$2d,254,25,0,82,0,25
-         fcb    $1b,$40,0,106,0,28
-         fcb    $1b,$4a,0,111,0,31
-         fcb    $1b,$2c,254,26,0,82,0,25,0,30,0,10
-*     Right facing pacman cycle #3
-RFPAC3   fcb    $1b,$2d,254,26,0,82,0,50
-         fcb    $1b,$40,0,102,0,53
-         fcb    $1b,$4a,0,105,0,56
-         fcb    $1b,$40,0,106,0,52
-         fcb    $1b,$4a,0,109,0,57
-         fcb    $1b,$2c,254,27,0,82,0,50,0,30,0,10
-*     Left facing pacman cycle #1
-LFPAC1   fcb    $1b,$2d,254,38,0,130,0,1
-         fcb    $1b,$40,0,130,0,5
-         fcb    $1b,$4a,0,143,0,6
-         fcb    $1b,$2c,254,28,0,130,0,1,0,30,0,10
-*     Left facing pacman cycle #2
-LFPAC2   fcb    $1b,$2d,254,28,0,130,0,25
-         fcb    $1b,$40,0,130,0,28
-         fcb    $1b,$4a,0,135,0,31
-         fcb    $1b,$2c,254,29,0,130,0,25,0,30,0,10
-*     Left facing pacman cycle #3
-LFPAC3   fcb    $1b,$2d,254,29,0,130,0,50
-         fcb    $1b,$40,0,130,0,53
-         fcb    $1b,$4a,0,139,0,56
-         fcb    $1b,$40,0,132,0,52
-         fcb    $1b,$4a,0,135,0,57
-         fcb    $1b,$2c,254,30,0,130,0,50,0,30,0,10
-*     Up facing pacman cycle #1
-UFPAC1   fcb    $1b,$2d,254,38,0,170,0,1
-         fcb    $1b,$40,0,180,0,1
-         fcb    $1b,$4a,0,181,0,6
-         fcb    $1b,$2c,254,31,0,170,0,1,0,22,0,13
-*     Up facing pacman cycle #2
-UFPAC2   fcb    $1b,$2d,254,31,0,170,0,25
-         fcb    $1b,$40,0,178,0,25
-         fcb    $1b,$4a,0,183,0,29
-         fcb    $1b,$2c,254,32,0,170,0,25,0,22,0,13
-*     Up facing pacman cycle #3
-UFPAC3   fcb    $1b,$2d,254,32,0,170,0,50
-         fcb    $1b,$40,0,176,0,51
-         fcb    $1b,$4a,0,185,0,52
-         fcb    $1b,$2c,254,33,0,170,0,50,0,22,0,13
-*     Down facing pacman cycle #1
-DFPAC1   fcb    $1b,$2d,254,38,0,170,0,75
-         fcb    $1b,$40,0,180,0,79
-         fcb    $1b,$4a,0,181,0,84
-         fcb    $1b,$2c,254,34,0,170,0,72,0,22,0,13
-*     Down facing pacman cycle #2
-DFPAC2   fcb    $1b,$2d,254,34,0,170,0,96
-         fcb    $1b,$40,0,178,0,105
-         fcb    $1b,$4a,0,183,0,109
-         fcb    $1b,$2c,254,35,0,170,0,96,0,22,0,13
-*     Down facing pacman cycle #3
-DFPAC3   fcb    $1b,$2d,254,35,0,170,0,121
-         fcb    $1b,$40,0,176,0,132
-         fcb    $1b,$4a,0,185,0,133
-         fcb    $1b,$2c,254,36,0,170,0,121,0,22,0,13
-
-*     The following are used when pacman is killed
-*   #1
-         fcb    $1b,$2d,254,33,0,200,0,1
-         fcb    $1b,$2c,254,60,0,200,0,1,0,22,0,10
-*   #2
-         fcb    $1b,$2d,254,60,0,200,0,25
-         fcb    $1b,$40,0,204,0,26
-         fcb    $1b,$4a,0,216,0,28
-         fcb    $1b,$40,0,206,0,29
-         fcb    $1b,$44,0,214,0,29
-         fcb    $1b,$2c,254,61,0,200,0,25,0,22,0,10
-*   #3
-         fcb    $1b,$2d,254,61,0,200,0,50
-         fcb    $1b,$40,0,204,0,54
-         fcb    $1b,$4a,0,216,0,55
-         fcb    $1b,$40,0,208,0,56
-         fcb    $1b,$44,0,212,0,56
-         fcb    $1b,$42,0,204,0,58
-         fcb    $1b,$42,0,216,0,58
-         fcb    $1b,$2c,254,62,0,200,0,50,0,22,0,10
-*   #4
-         fcb    $1b,$2d,254,62,0,200,0,70
-         fcb    $1b,$40,0,200,0,72
-         fcb    $1b,$4a,0,220,0,73
-         fcb    $1b,$42,0,200,0,76
-         fcb    $1b,$42,0,220,0,76
-         fcb    $1b,$42,0,202,0,77
-         fcb    $1b,$42,0,218,0,77
-         fcb    $1b,$42,0,206,0,78
-         fcb    $1b,$42,0,214,0,78
-         fcb    $1b,$42,0,208,0,79
-         fcb    $1b,$42,0,212,0,79
-         fcb    $1b,$2c,254,63,0,200,0,70,0,22,0,10
-*   #5
-         fcb    $1b,$2d,254,63,0,200,0,90
-         fcb    $1b,$40,0,200,0,94
-         fcb    $1b,$44,0,220,0,94
-         fcb    $1b,$42,0,202,0,96
-         fcb    $1b,$42,0,218,0,96
-         fcb    $1b,$40,0,204,0,97
-         fcb    $1b,$44,0,206,0,97
-         fcb    $1b,$40,0,214,0,97
-         fcb    $1b,$44,0,216,0,97
-         fcb    $1b,$42,0,210,0,99
-         fcb    $1b,$2c,254,64,0,200,0,90,0,22,0,10
-*   #6
-         fcb    $1b,$2d,254,64,0,200,0,110
-         fcb    $1b,$40,0,200,0,115
-         fcb    $1b,$44,0,220,0,115
-         fcb    $1b,$40,0,208,0,118
-         fcb    $1b,$44,0,212,0,118
-         fcb    $1b,$32,0
-         fcb    $1b,$42,0,202,0,116
-         fcb    $1b,$42,0,218,0,116
-         fcb    $1b,$2c,254,65,0,200,0,110,0,22,0,10
-*   #7
-         fcb    $1b,$40,0,210,0,135
-         fcb    $1b,$44,0,210,0,139
-         fcb    $1b,$40,0,206,0,137
-         fcb    $1b,$44,0,214,0,137
-         fcb    $1b,$42,0,206,0,135
-         fcb    $1b,$42,0,214,0,135
-         fcb    $1b,$42,0,206,0,139
-         fcb    $1b,$42,0,214,0,139
-         fcb    $1b,$2c,254,66,0,200,0,130,0,22,0,10
-*   #8
-         fcb    $1b,$2d,254,66,0,200,0,150
-         fcb    $1b,$32,2
-         fcb    $1b,$40,0,206,0,157
-         fcb    $1b,$44,0,214,0,157
-         fcb    $1b,$40,0,210,0,155
-         fcb    $1b,$44,0,210,0,159
-         fcb    $1b,$32,0
-         fcb    $1b,$42,0,210,0,157
-         fcb    $1b,$2c,254,67,0,200,0,150,0,22,0,10
-
-*     Blank cage door
-BLCGDR   fcb    $1b,$2c,254,22,0,170,0,180,0,24,0,1
-*     Cage door
-CAGDOR   fcb    $1b,$32,8
-         fcb    $1b,$40,0,170,0,180
-         fcb    $1b,$44,0,199,0,180
-         fcb    $1b,$2c,254,23,0,170,0,180,0,24,0,1
-
-
-*     The following fcb's will draw the ghost objects
-*     which will be put in Group buffer #= (Process ID +1)
-
-*     Get blank ghost
-BLGHST   fcb    $1b,$2c,254,1,0,50,0,50,0,20,0,10
-*     Draw and save basic ghost (no eyes)
-BCGHST   fcb    $1b,$32,4                 Set color to red
-         fcb    $1b,$40,0,50,0,50         Set draw pointer
-         fcb    $1b,$4a,0,69,0,59         Draw bar rectangle
-         fcb    $1b,$40,0,50,0,50         Set draw pointer
-         fcb    $1b,$32,2                 Set color to black
-         fcb    $1b,$4a,0,51,0,51         Draw bar rectangle
-         fcb    $1b,$44,0,53,0,50         Draw line
-         fcb    $1b,$40,0,69,0,50         Set draw pointer
-         fcb    $1b,$4a,0,68,0,51         Draw bar rectangle
-         fcb    $1b,$44,0,66,0,50         Draw line
-         fcb    $1b,$40,0,54,0,59         Set draw pointer
-         fcb    $1b,$44,0,57,0,59         Draw line
-         fcb    $1b,$40,0,62,0,59         Set draw pointer
-         fcb    $1b,$44,0,65,0,59         Draw line
-         fcb    $1b,$2c,254,18,0,50,0,50,0,20,0,10
-*     Get blank eyes
-*BLKEYE   fcb    $1b,$2c,254,21,0,60,0,1,0,14,0,3
-*     Draw and save one eye
-EYE      fcb    $1b,$40,0,62,0,2
-         fcb    $1b,$32,5
-         fcb    $1b,$44,0,63,0,2
-         fcb    $1b,$2c,254,19,0,60,0,1,0,6,0,3
-*     Put second eye an save
-EYES     fcb    $1b,$2d,254,19,0,68,0,1
-         fcb    $1b,$2c,254,20,0,60,0,1,0,14,0,3
-*     Draw and save RED ghost up
-RGHUP    fcb    $1b,$2d,254,18,0,50,0,75
-         fcb    $1b,$2d,254,19,0,52,0,78
-         fcb    $1b,$2d,254,19,0,62,0,78
-         fcb    $1b,$2c,254,2,0,50,0,75,0,20,0,13
-         fcb    $1b,$2d,254,2,0,50,0,150
-*     WHITE ghost up
-WGHUP    fcb    $1b,$32,5
-         fcb    $1b,$40,0,52,0,77
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,6,0,50,0,75,0,20,0,13
-         fcb    $1b,$2d,254,6,0,50,0,125
-*     GREEN ghost up
-GGHUP    fcb    $1b,$32,3
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,10,0,50,0,75,0,20,0,13
-         fcb    $1b,$2d,254,10,0,50,0,100
-*     BLUE ghost up
-BGHUP    fcb    $1b,$32,6
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,14,0,50,0,75,0,20,0,13
-*     RED ghost facing left
-RDGHL    fcb    $1b,$2d,254,18,0,80,0,75
-         fcb    $1b,$2d,254,19,0,82,0,78
-         fcb    $1b,$2d,254,19,0,90,0,78
-         fcb    $1b,$2c,254,3,0,80,0,75,0,28,0,10
-         fcb    $1b,$2d,254,3,0,80,0,150
-*     WHITE ghost facing left
-WTGHL    fcb    $1b,$32,5
-         fcb    $1b,$40,0,82,0,77
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,7,0,80,0,75,0,28,0,10
-         fcb    $1b,$2d,254,7,0,80,0,125
-*     GREEN ghost facing left
-GRGHL    fcb    $1b,$32,3
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,11,0,80,0,75,0,28,0,10
-         fcb    $1b,$2d,254,11,0,80,0,100
-*     BLUE ghost facing left
-BLGHL    fcb    $1b,$32,6
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,15,0,80,0,75,0,28,0,10
-*     RED ghost facing right
-RDGHR    fcb    $1b,$2d,254,18,0,110,0,75
-         fcb    $1b,$2d,254,19,0,114,0,78
-         fcb    $1b,$2d,254,19,0,122,0,78
-         fcb    $1b,$2c,254,4,0,102,0,75,0,28,0,10
-         fcb    $1b,$2d,254,4,0,102,0,150
-*     WHITE ghost facing right
-WTGHR    fcb    $1b,$32,5
-         fcb    $1b,$40,0,112,0,77
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,8,0,102,0,75,0,28,0,10
-         fcb    $1b,$2d,254,8,0,102,0,125
-*     GREEN ghost facing right
-GRGHR    fcb    $1b,$32,3
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,12,0,102,0,75,0,28,0,10
-         fcb    $1b,$2d,254,12,0,102,0,100
-*     BLUE ghost facing right
-BLGHR    fcb    $1b,$32,6
-         fcb    $1b,$4f 
-         fcb    $1b,$2c,254,16,0,102,0,100,0,28,0,10
-
-         fcb    $1b,$2d,254,16,1,94,0,25
-         fcb    $1b,$40,1,102,0,27
-         fcb    $1b,$32,6
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,16,1,94,0,25,0,28,0,10
-
-*     Red ghost facing down
-RGHDN    fcb    $1b,$2d,254,18,0,140,0,75
-         fcb    $1b,$2d,254,19,0,142,0,78
-         fcb    $1b,$2d,254,19,0,152,0,78
-         fcb    $1b,$2c,254,5,0,140,0,72,0,20,0,13
-         fcb    $1b,$2d,254,5,0,140,0,148
-*     White ghost facing down
-WGHDN    fcb    $1b,$32,5
-         fcb    $1b,$40,0,142,0,77
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,9,0,140,0,72,0,20,0,13
-         fcb    $1b,$2d,254,9,0,140,0,123
-*     Green ghost facing down
-GGHDN    fcb    $1b,$32,3
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,13,0,140,0,72,0,20,0,13
-         fcb    $1b,$2d,254,13,0,140,0,98
-*     Blue ghost facing down
-BGHDN    fcb    $1b,$32,6
-         fcb    $1b,$4f
-         fcb    $1b,$2d,254,5,1,100,0,48
-         fcb    $1b,$40,1,110,0,56 
-         fcb    $1b,$32,6
-         fcb    $1b,$4f
-         fcb    $1b,$2c,254,17,1,100,0,48,0,20,0,13
-
-         fcb    255
-SETLEN   EQU    *-PALSET
-
-
-DOTAB1   fdb    284
-         fcb    21,1,1,14,41,1,14,13,7,22,1,10,7
-         fcb    55,10,7,21,13,4,41,13,4,1,16,7
-         fcb    55,16,7,21,19,14,1,25,11,47,25,11
-         fcb    21,28,14,1,34,14,41,34,14,7,40,28
-         fcb    1,46,4,21,46,4,41,46,4,61,46,4
-         fcb    1,52,34
-
-         fcb    1,1,6,1,34,7,7,40,3,9,16,7,13,1,6
-         fcb    13,34,3,21,7,3,21,19,6,21,40,3
-         fcb    27,1,3,27,13,3,27,34,3,27,46,3
-         fcb    41,1,3,41,13,3,41,34,3,41,46,3
-         fcb    47,7,3,47,19,6,47,40,3,55,1,6
-         fcb    55,34,3,59,16,7,61,40,3,67,1,6
-         fcb    67,34,7,0,0
-
-         fcb    1,7,4,67,7,4,1,40,5,67,40,5
-         fcb    1,25,0,67,25,0,33,28,0,35,28,0
-         fcb    0,25,0,68,25,0,0,0
-
-DOTAB2   fdb    302
-         fcb    24,1,1,7,55,1,7,13,4,22,1,7,7
-         fcb    55,7,7,1,13,7,21,13,6,37,13,6 
-         fcb    55,13,7,1,19,7,21,19,14,55,19,7
-         fcb    13,25,5,47,25,5,21,28,14,1,34,16
-         fcb    37,34,16,1,40,3,13,40,22,63,40,3
-         fcb    1,46,7,21,46,14,55,46,7,1,52,34
-
-         fcb    1,1,14,1,46,3,5,40,3,7,19,6,13,1,5
-         fcb    13,19,10,21,4,4,21,19,6,21,40,3
-         fcb    31,13,3,31,34,3,33,1,2,35,46,3
-         fcb    37,13,3,37,34,3,47,4,4,47,19,6
-         fcb    47,40,3,55,1,5,55,19,10,61,19,6
-         fcb    63,40,3,67,1,14,67,46,3,0,0
-
-         fcb    1,7,5,67,7,5,1,40,5,67,40,5
-         fcb    33,0,0,33,1,0,35,52,0,35,53,0
-         fcb    33,28,0,35,28,0,0,0
-
-DOTAB3   fdb    294
-         fcb    23,1,1,16,37,1,16,13,7,22,1,10,7
-         fcb    55,10,7,21,13,6,37,13,6,1,16,7
-         fcb    55,16,7,21,19,14,1,25,11,47,25,11
-         fcb    21,28,14,1,34,16,37,34,16,1,40,3
-         fcb    13,40,22,63,40,3,1,46,7,21,46,6
-         fcb    37,46,6,55,46,7,1,52,34
-
-         fcb    1,1,6,1,34,3,1,46,3,5,40,3
-         fcb    13,1,16,21,7,3,21,19,6,21,40,3
-         fcb    31,1,3,31,13,3,31,34,3,31,46,3
-         fcb    37,1,3,37,13,3,37,34,3,37,46,3
-         fcb    47,7,3,47,19,6,47,40,3,55,1,16
-         fcb    63,40,3,67,1,6,67,34,3,67,46,3
-         fcb    0,0
-
-         fcb    1,7,4,67,7,4,1,40,5,67,40,5
-         fcb    0,25,0,1,25,0,3,25,0,5,25,0
-         fcb    7,25,0,9,25,0,11,25,0
-         fcb    57,25,0,59,25,0,61,25,0
-         fcb    63,25,0,65,25,0,67,25,0
-         fcb    68,25,0,33,28,0,35,28,0
-         fcb    0,0
-
-DOTAB4   fdb    327
-         fcb    24,1,1,34,21,7,14,1,10,7,55,10,7
-         fcb    13,13,22,1,16,7,55,16,7,21,19,14
-         fcb    3,22,6,55,22,6,13,25,5,47,25,5
-         fcb    3,28,6,21,28,14,55,28,6,1,34,16
-         fcb    37,34,16,1,40,7,21,40,14,55,40,7
-         fcb    1,46,7,21,46,14,55,46,7,1,52,34
-
-         fcb    1,1,6,1,34,3,1,46,3,3,22,3,7,1,4
-         fcb    7,40,3,13,1,14,13,46,3,21,1,3
-         fcb    21,19,12,25,7,3,31,34,3,33,1,3
-         fcb    33,13,3,35,46,3,37,34,3,43,7,3
-         fcb    47,1,3,47,19,12,55,1,14,55,46,3
-         fcb    61,1,4,61,40,3,65,22,3,67,1,6
-         fcb    67,34,3,67,46,3,0,0
-
-         fcb    1,7,4,67,7,4,1,40,5,67,40,5
-         fcb    33,28,0,35,28,0,33,1,0,35,52,0
-         fcb    33,0,0,35,53,0,0,0
-
-DOTAB5   fdb    310
-         fcb    29,1,1,16,37,1,16,7,7,28,7,13,4
-         fcb    21,13,6,37,13,6,55,13,4,1,19,7
-         fcb    21,19,14,55,19,7,13,22,5,47,22,5
-         fcb    1,25,7,55,25,7,21,28,14,1,31,4
-         fcb    61,31,4,7,34,4,21,34,4,31,34,4
-         fcb    41,34,4,55,34,4,7,40,4,21,40,6
-         fcb    37,40,6,55,40,4,1,46,34
-         fcb    1,52,16,37,52,16
-
-         fcb    1,1,7,1,31,8,7,1,3,7,13,3,7,25,6
-         fcb    13,7,3,13,19,6,13,40,3,21,7,3
-         fcb    21,19,4,21,34,5,27,28,3,31,1,3
-         fcb    31,13,3,31,34,3,31,46,3,37,1,3
-         fcb    37,13,3,37,34,3,37,46,3,41,28,3
-         fcb    47,7,3,47,19,4,47,34,5,55,7,3
-         fcb    55,19,6,55,40,3,61,1,3,61,13,3
-         fcb    61,25,6,67,1,7,67,31,8,0,0
-
-         fcb    1,7,4,67,7,4,1,40,5,67,40,5
-         fcb    1,25,0,67,25,0,33,28,0,35,28,0
-         fcb    0,25,0,68,25,0,0,0
-
-DOTAB6   fdb    336
-         fcb    25,1,1,34,1,7,4,19,7,16,61,7,4
-         fcb    7,13,7,25,13,4,37,13,4,49,13,7
-         fcb    1,19,34,1,25,4,15,25,4,47,25,4
-         fcb    61,25,4,7,28,5,21,28,14,53,28,5
-         fcb    1,34,16,37,34,16,7,40,7,25,40,10
-         fcb    49,40,7,1,46,4,19,46,16,61,46,4
-         fcb    1,52,34
-
-         fcb    1,1,18,7,7,3,7,19,6,7,40,3,13,1,7
-         fcb    13,34,7,15,25,2,19,7,3,19,40,3
-         fcb    21,19,6,25,1,7,25,34,7,31,13,3
-         fcb    31,34,3,33,1,3,35,46,3,37,13,3
-         fcb    37,34,3,43,1,7,43,34,7,47,19,6
-         fcb    49,7,3,49,40,3,53,25,2,55,1,7
-         fcb    55,34,7,61,7,3,61,19,6,61,40,3
-         fcb    67,1,18,0,0
-
-         fcb    1,7,5,67,7,5,1,40,4,67,40,4
-         fcb    33,1,0,35,52,0,33,28,0,35,28,0
-         fcb    33,0,0,35,53,0,0,0
-
-DOTAB7   fdb    318
-         fcb    31,1,1,15,39,1,15,21,7,14,5,10,3
-         fcb    13,10,5,47,10,5,59,10,3,21,13,5
-         fcb    39,13,5,1,16,7,55,16,7,13,19,22
-         fcb    5,22,3,59,22,3,1,25,3,13,25,5
-         fcb    47,25,5,63,25,3,5,28,5,21,28,14
-         fcb    55,28,5,1,34,11,27,34,8,47,34,11
-         fcb    7,40,13,37,40,13,1,46,4,21,46,6
-         fcb    37,46,6,61,46,4,1,52,34
-
-         fcb    1,1,6,1,34,7,5,10,3,5,22,3,7,40,3
-         fcb    9,1,4,9,16,3,9,28,3,13,1,10,13,34,3
-         fcb    15,40,5,21,7,3,21,19,6,21,40,3
-         fcb    27,28,3,29,1,3,29,13,3,31,34,3
-         fcb    31,46,3,37,34,3,37,46,3,39,1,3
-         fcb    39,13,3,41,28,3,47,7,3,47,19,6
-         fcb    47,40,3,53,40,5,55,1,10,55,34,3
-         fcb    59,1,4,59,16,3,59,28,3,61,40,3
-         fcb    63,10,3,63,22,3,67,1,6,67,34,7,0,0
-
-         fcb    1,7,4,67,7,4,1,40,5,67,40,5
-         fcb    1,25,0,67,25,0,33,28,0,35,28,0
-         fcb    0,25,0,68,25,0,0,0
-
-DOTAB8   fdb    332
-         fcb    32,1,1,15,37,1,16,7,7,4,19,7,3
-         fcb    29,7,5,43,7,3,55,7,4,1,10,4,61,10,4
-         fcb    19,13,15,1,16,7,55,16,7,13,19,22
-         fcb    1,22,5,59,22,5,13,25,5,47,25,5
-         fcb    1,28,5,21,28,14,59,28,5,1,34,16
-         fcb    37,34,16,1,40,7,21,40,15,55,40,7
-         fcb    1,46,7,21,46,3,31,46,5,45,46,3
-         fcb    55,46,7,1,52,16,39,52,15
-
-         fcb    1,1,14,1,46,3,7,1,6,7,40,3,9,22,3
-         fcb    13,1,14,13,46,3,19,7,3,21,19,6
-         fcb    21,40,3,23,1,3,25,13,3,25,46,3,29,1,3
-         fcb    31,34,3,31,46,3,33,1,5,35,40,5
-         fcb    37,1,3,37,34,3,39,46,3,41,13,3
-         fcb    43,1,3,45,46,3,47,7,3,47,19,6
-         fcb    49,40,3,55,1,14,55,46,3,59,22,3
-         fcb    61,1,6,61,40,3,67,1,14,67,46,3,0,0
-
-         fcb    1,7,4,67,7,4,1,40,5,67,40,5
-         fcb    33,0,0,33,1,0,35,52,0,35,53,0
-         fcb    33,28,0,35,28,0,0,0
-
-
-GHSET
-         fcb    6,77,0,245,0,79,0,245,0,79
-         fcb    -1,2,150,150,0,0,4,4,4,36
-
-         fcb    6,93,1,117,0,79,1,117,0,79
-         fcb    -1,14,100,100,0,0,4,4,6,25
-
-         fcb    6,82,1,29,0,79,1,29,0,79
-         fcb    -1,6,50,50,0,0,4,4,5,63
-
-         fcb    6,88,1,77,0,79,1,77,0,79
-         fcb    -1,10,10,10,0,0,4,4,3,18
-
-
-*
-*   The SETUPB routine is used to insert the PROCESS I.D. number into
-* the GROUP BUFFER numbers of the GETBLK and PUTBLK strings.
-*   This had me stumped for a while because the draw codes are in FCB's
-* in the program area, which legally in OS9 can't be changed. The way I
-* found to get around this is that since the memory area for the board array
-* has already been allocated (3726 bytes), but it has not yet been filled,
-* all the object draw fcb's can be transfered to this memory area and as
-* the data is transfered I change the dummy GROUP BUFFER (254) number in 
-* the GETBLK and PUTBLK commands, to the PROCESS I.D. number.
-*
-
-SETUPB:  leay   ARRAY,U     Point to where data is to go
-         leax   PALSET,pcr  Point to FCB's to read
-TRLOOP   lda    ,X+         Get a byte from program area
-         cmpa   #255        255 = end of data
-         beq    WRTOUT      If so, then go write it out
-         cmpa   #254        Do we put I.D. here ?
-         bne    TRSTOR      If not, then store this byte
-         lda    PROCID      If so, then get process I.D. byte
-TRSTOR   sta    ,Y+         Store byte in data area
-         bra    TRLOOP      Loop till end of FCB's (255)
-
-*     The fcb's have been transfered so now output them to path
-
-WRTOUT   leax   ARRAY,U     Point to where FCB data was put
-         ldy    #SETLEN-1   Get byte count to output
-         lda    PATH        Set output path
-         os9    I$Write     Go output data
-         lbcs   ERR1        Branch if any errors
-         rts
-
-*     Initially we clear the array then put the array data
-*     in the screen save table, in case there are more than
-*     one players. The array will be filled with $ff s.
-
-SETUPC:  bsr    CLRARR      Go setup the array & variables
-
-FILTAB   leay   TABLE2,U    Point to player 2 table
-         sty    YVALUE      Save temporary pointer
-         leay   TABLE1,U    Point to player 1 table
-         sty    XVALUE,U    Save temporary value
-         leax   ARRAY,U     Point X reg. at array
-         leax   68,X        Move to first dot location -2
-         clr    DOTCNT
-FLOOP    leax   2,X         Bump X reg. 2 times
-         inc    DOTCNT
-         lda    ,X          Get a byte from the array
-         ldy    XVALUE,U
-         sta    ,Y+         Put it in table 1,bump pointer
-         sty    XVALUE,U
-         ldy    YVALUE,U
-         sta    ,Y+         Put it in table 2,bump pointer
-         sty    YVALUE,U
-         lda    DOTCNT
-         cmpa   #34
-         bne    FLOOP
-         cmpx   #ARREND-73  Are we done ?
-         bge    FILEND      If so then get out
-         leax   139,X       Move down 3 lines
-         clr    DOTCNT
-         bra    FLOOP
-
-FILEND   lbra   RETURN      Leave setup routine
-
-*     This routine fills the entire array with -1's
-*     The -1's will represent walls when the rest of the array is filled
-
-CLRARR:  leax   ARRAY,U     Point to array
-         ldd    #$ffff
-CLRLOP   std    ,X++        Fill 2 bytes in array
-         cmpx   #ARREND     End of array yet?
-         ble    CLRLOP
-         leax   ARRAY,U
-         ldd    #$0000
-         std    -36,X
-         std    -105,X
-         std    3761,X
-         std    3830,X
-
-*     This routine will put DOTS (=2) and SPACES (=0) in array
-
-FILARR   lda    BRDNUM      Get board number
-         deca
-         bne    SEL2
-         leay   DOTAB1,pcr
-         bra    SELEND
-SEL2     deca
-         bne    SEL3
-         leay   DOTAB2,pcr
-         bra    SELEND
-SEL3     deca
-         bne    SEL4
-         leay   DOTAB3,pcr
-         bra    SELEND
-SEL4     deca
-         bne    SEL5
-         leay   DOTAB4,pcr
-         bra    SELEND
-SEL5     deca
-         bne    SEL6
-         leay   DOTAB5,pcr
-         bra    SELEND
-SEL6     deca
-         bne    SEL7
-         leay   DOTAB6,pcr
-         bra    SELEND
-SEL7     deca
-         bne    SEL8
-         leay   DOTAB7,pcr
-         bra    SELEND
-SEL8     leay   DOTAB8,pcr
-
-SELEND   ldd    ,Y++        Get Dot total
-         std    SCNTOT
-         lda    ,Y+         Get number of entries
-         sta    TABCNT
-LOOP     ldd    ,Y++        Get 2 bytes & bump Y reg. twice
-         beq    PUTLOP      End of DOT table=0000,Go do PILLS
-         sta    XVALUE      Save xvalue, B holds yvalue
-         lda    ,Y+         Get # of dots to put on line
-         sta    DOTCNT      Save this number
-CALC     lda    #69
-         mul                Multiply yvalue by 69
-         addb   XVALUE      Add xvalue to result
-         adca   #$00        Add any carry to result
-         leax   ARRAY,U     Point to start of array
-         leax   D,X         Add offset to spot in array
-         lda    #$02        a 2 in array signifies a dot
-         clrb               a 0 in array signifies a space
-         cmpb   TABCNT      Done all dots on line yet ?
-         beq    DNLOOP      If so then do the down lines
-
-*     This loop writes dots and spaces across
-ACLOOP   sta    ,X+         Put a dot in array
-         lda    #1 
-         cmpa   DOTCNT      If dotcnt=1 then
-         beq    SKIP         don't put spaces
-         stb    ,X+         Put 1 space in array
-SKIP     lda    #$02
-         dec    DOTCNT      Decrement dot counter
-         bne    ACLOOP      Loop till zero
-         dec    TABCNT      Decrement table item counter
-         bra    LOOP        Loop till tabcnt=0
-
-*     This loop writes dots and spaces down
-*     When it puts a dot it also checks to see
-*     if where it puts the dot, it is an
-*     intersection. If so it adds 1 to number
-*     to flag that spot as an intersection.
-
-DNLOOP   tst    -1,X        Look at spot to left
-         bmi    TEST2       Branch if wall
-         adda   #1          Intersection, add 1 to it
-         bra    PUTIT       Go put byte in array
-TEST2    tst    1,X         Look at spot to right
-         bmi    PUTIT
-         adda   #1          Intersection
-
-PUTIT    sta    ,X          Put a dot in array
-         lda    #1
-         cmpa   DOTCNT      If dotcnt=1 then
-         beq    SKIP2        don't put spaces
-         leax   69,X        Add 69 to index reg.
-         stb    ,X          Store a space
-         leax   69,X        Add 69 to index reg.
-         stb    ,X          Store a space
-         leax   69,X        Add 69 to index reg.
-SKIP2    lda    #$02
-         dec    DOTCNT      Decrement dot counter
-         bne    DNLOOP      Loop till zero
-         bra    LOOP        Go get another table item
-
-*     This routine will put POWER PILLS (=4) in array
-*     Y reg. already points to power pill table
-*PUTPOW   leay   POWDOT,pcr  Point to power pill table
-
-PUTLOP   ldd    ,Y++        Get xvalue and yvalue
-         cmpd   #$0000      End of table yet?
-         beq    DONE
-         sta    XVALUE      Save for later
-         lda    ,Y+         Get byte to put in array
-         sta    BYTE        Save it
-         lda    #69
-         mul                Multiply (yvalue-1) by 69
-         addb   XVALUE      Add xvalue to result
-         adca   #$00        Add in any carry
-         leax   ARRAY,U     Point to start of array
-         leax   D,X         Add offset to spot in array
-         lda    BYTE        Get byte to put in array
-         sta    ,X          Put byte in array
-         bra    PUTLOP      Loop till done
-
-DONE     nop
-*         ldd    DTOTAL,pcr  Get total # of dots
-*         std    SCNTOT      Give it to screen total
-
-*    Fill tables with ghost data 
-
-GHFILL   leax   GHSET,pcr   Point to bytes to transfer
-         leay   GHTABL,U    Point to where bytes go
-         ldb    #80         Transfer 80 bytes
-FLLOOP   lda    ,X+         Get a byte
-         sta    ,Y+         Store it
-         decb               Decrement loop counter
-         bne    FLLOOP      Loop till done
-
-GHDATA:  leax   GHSET,pcr   Point to bytes to transfer
-         leay   G1OFST,U    Point to where bytes go
-         ldb    #80         Transfer 80 bytes
-GHLOOP   lda    ,X+         Get a byte
-         sta    ,Y+         Store it
-         decb               Decrement counter
-         bne    GHLOOP      Loop till done
-
-RETURN   rts
-
-
-
-         ENDSECT
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/pacos9/setup90.as	Sat Feb 08 01:03:26 2014 +0100
@@ -0,0 +1,847 @@
+
+         NAM    SETUP
+         TTL    Routine to put objects in buffers
+
+         IFP1
+*         use    /h0/defs/os9defs.a
+         ENDc
+
+STACK    EQU    100
+
+
+         PSECT  SETUP,0,0,0,STACK,SETUPB
+
+         VSECT
+
+*    Local variables
+
+TABCNT   RMB    1
+XVALUE   RMB    2
+YVALUE   RMB    2
+DOTCNT   RMB    1
+BYTE     RMB    1
+READCT   RMB    2
+         RMB    STACK
+
+
+         ENDSECT
+
+
+*   The following fcb's,(up to SETLEN), will be put
+*   in Group Buffer #= (Process ID) 
+
+*     Change palette colors
+PALSET   fcb    $1b,$31,0,54     Bright Yellow
+         fcb    $1b,$31,1,9      Blue
+         fcb    $1b,$31,2,0      Black
+         fcb    $1b,$31,3,18     Green
+         fcb    $1b,$31,4,36     Bright Red
+         fcb    $1b,$31,5,63     White
+         fcb    $1b,$31,6,25     Medium Blue
+         fcb    $1b,$31,7,52     Medium Yellow-Orange
+         fcb    $1b,$31,8,32     Medium Red
+         fcb    $1b,$31,9,16     Medium Green
+         fcb    $1b,$31,10,36    Bright Red
+         fcb    $1b,$31,11,48    Medium Yellow
+         fcb    $1b,$31,12,63    White
+         fcb    $1b,$31,13,43    Medium Blue-Magenta
+
+*     Draw and save dot
+BLDOT    fcb    $1b,$2c,254,46,0,50,0,1,0,6,0,4
+
+DOT      fcb    $1b,$32,7
+         fcb    $1b,$40,0,50,0,2
+         fcb    $1b,$4a,0,55,0,3
+         fcb    $1b,$40,0,52,0,1
+         fcb    $1b,$4a,0,53,0,4
+         fcb    $1b,$2c,254,40,0,50,0,1,0,6,0,4
+
+DOT2     fcb    $1b,$2c,254,42,0,50,0,1,0,6,0,3
+         fcb    $1b,$2d,254,42,0,25,0,5
+
+DOT3     fcb    $1b,$2c,254,43,0,50,0,2,0,6,0,3
+         fcb    $1b,$2d,254,43,0,25,0,10
+
+*     Draw and save power pill
+BLPILL   fcb    $1b,$2c,254,56,0,60,0,10,0,10,0,4
+
+POWPIL   fcb    $1b,$32,8
+         fcb    $1b,$40,0,60,0,11
+         fcb    $1b,$4a,0,69,0,12
+         fcb    $1b,$40,0,62,0,10
+         fcb    $1b,$4a,0,67,0,13
+         fcb    $1b,$2c,254,50,0,60,0,10,0,10,0,4
+
+POW2     fcb    $1b,$2c,254,52,0,60,0,10,0,10,0,3
+         fcb    $1b,$2d,254,52,0,25,0,55
+
+POW3     fcb    $1b,$2c,254,53,0,60,0,11,0,10,0,3
+         fcb    $1b,$2d,254,53,0,25,0,60
+*   Blank bonus
+BLBON    fcb    $1b,$2c,254,69,0,50,0,170,0,20,0,8
+
+BONUS1   fcb    $1b,$32,10
+         fcb    $1b,$40,0,50,0,174
+         fcb    $1b,$4a,0,57,0,175
+         fcb    $1b,$40,0,52,0,173
+         fcb    $1b,$4a,0,55,0,176
+         fcb    $1b,$40,0,60,0,175
+         fcb    $1b,$4a,0,67,0,176
+         fcb    $1b,$40,0,62,0,174
+         fcb    $1b,$4a,0,65,0,177
+         fcb    $1b,$32,9
+         fcb    $1b,$40,0,56,0,173
+         fcb    $1b,$42,0,56,0,173
+         fcb    $1b,$40,0,58,0,172
+         fcb    $1b,$4a,0,61,0,174
+         fcb    $1b,$40,0,60,0,171
+         fcb    $1b,$44,0,62,0,171
+         fcb    $1b,$40,0,62,0,170
+         fcb    $1b,$44,0,64,0,170
+         fcb    $1b,$2c,254,70,0,50,0,170,0,18,0,8
+
+BONUS2   fcb    $1b,$32,10
+         fcb    $1b,$40,0,88,0,170
+         fcb    $1b,$48,0,90,0,171
+         fcb    $1b,$32,12
+         fcb    $1b,$40,0,80,0,172
+         fcb    $1b,$4a,0,98,0,176
+         fcb    $1b,$32,2
+         fcb    $1b,$44,0,82,0,72
+         fcb    $1b,$40,0,96,0,172
+         fcb    $1b,$44,0,98,0,172
+         fcb    $1b,$42,0,80,0,173
+         fcb    $1b,$42,0,98,0,173
+         fcb    $1b,$32,13
+         fcb    $1b,$40,0,82,0,176
+         fcb    $1b,$4a,0,96,0,177
+         fcb    $1b,$40,0,86,0,176
+         fcb    $1b,$44,0,88,0,176
+         fcb    $1b,$2c,254,71,0,80,0,170,0,20,0,8
+
+BONUS3   fcb    $1b,$32,0
+         fcb    $1b,$40,0,114,0,175
+         fcb    $1b,$4a,0,122,0,177
+         fcb    $1b,$32,10
+         fcb    $1b,$40,0,110,0,171
+         fcb    $1b,$4a,0,126,0,174
+         fcb    $1b,$32,12
+         fcb    $1b,$40,0,116,0,171
+         fcb    $1b,$44,0,118,0,171
+         fcb    $1b,$42,0,124,0,171
+         fcb    $1b,$42,0,126,0,173
+         fcb    $1b,$40,0,110,0,173
+         fcb    $1b,$44,0,112,0,173
+         fcb    $1b,$40,0,118,0,173
+         fcb    $1b,$44,0,120,0,173
+         fcb    $1b,$32,2
+         fcb    $1b,$42,0,110,0,171
+         fcb    $1b,$42,0,126,0,171
+         fcb    $1b,$2c,254,72,0,110,0,170,0,20,0,8
+
+*     Get blank pacman
+BLPAC    fcb    $1b,$2c,254,37,0,50,0,25,0,22,0,10
+*     Draw and save round full pacman
+RFPAC    fcb    $1b,$32,0
+         fcb    $1b,$40,0,50,0,29
+         fcb    $1b,$4a,0,71,0,32
+         fcb    $1b,$40,0,52,0,28
+         fcb    $1b,$4a,0,69,0,33
+         fcb    $1b,$40,0,54,0,27
+         fcb    $1b,$4a,0,67,0,34
+         fcb    $1b,$40,0,58,0,26
+         fcb    $1b,$4a,0,62,0,35
+         fcb    $1b,$2c,254,38,0,50,0,26,0,22,0,10
+*     Right facing pacman cycle #1
+RFPAC1   fcb    $1b,$2d,254,38,0,90,0,1
+         fcb    $1b,$40,0,98,0,5
+         fcb    $1b,$32,2
+         fcb    $1b,$4a,0,111,0,6
+         fcb    $1b,$2c,254,25,0,82,0,1,0,30,0,10
+*     Right facing pacman cycle #2
+RFPAC2   fcb    $1b,$2d,254,25,0,82,0,25
+         fcb    $1b,$40,0,106,0,28
+         fcb    $1b,$4a,0,111,0,31
+         fcb    $1b,$2c,254,26,0,82,0,25,0,30,0,10
+*     Right facing pacman cycle #3
+RFPAC3   fcb    $1b,$2d,254,26,0,82,0,50
+         fcb    $1b,$40,0,102,0,53
+         fcb    $1b,$4a,0,105,0,56
+         fcb    $1b,$40,0,106,0,52
+         fcb    $1b,$4a,0,109,0,57
+         fcb    $1b,$2c,254,27,0,82,0,50,0,30,0,10
+*     Left facing pacman cycle #1
+LFPAC1   fcb    $1b,$2d,254,38,0,130,0,1
+         fcb    $1b,$40,0,130,0,5
+         fcb    $1b,$4a,0,143,0,6
+         fcb    $1b,$2c,254,28,0,130,0,1,0,30,0,10
+*     Left facing pacman cycle #2
+LFPAC2   fcb    $1b,$2d,254,28,0,130,0,25
+         fcb    $1b,$40,0,130,0,28
+         fcb    $1b,$4a,0,135,0,31
+         fcb    $1b,$2c,254,29,0,130,0,25,0,30,0,10
+*     Left facing pacman cycle #3
+LFPAC3   fcb    $1b,$2d,254,29,0,130,0,50
+         fcb    $1b,$40,0,130,0,53
+         fcb    $1b,$4a,0,139,0,56
+         fcb    $1b,$40,0,132,0,52
+         fcb    $1b,$4a,0,135,0,57
+         fcb    $1b,$2c,254,30,0,130,0,50,0,30,0,10
+*     Up facing pacman cycle #1
+UFPAC1   fcb    $1b,$2d,254,38,0,170,0,1
+         fcb    $1b,$40,0,180,0,1
+         fcb    $1b,$4a,0,181,0,6
+         fcb    $1b,$2c,254,31,0,170,0,1,0,22,0,13
+*     Up facing pacman cycle #2
+UFPAC2   fcb    $1b,$2d,254,31,0,170,0,25
+         fcb    $1b,$40,0,178,0,25
+         fcb    $1b,$4a,0,183,0,29
+         fcb    $1b,$2c,254,32,0,170,0,25,0,22,0,13
+*     Up facing pacman cycle #3
+UFPAC3   fcb    $1b,$2d,254,32,0,170,0,50
+         fcb    $1b,$40,0,176,0,51
+         fcb    $1b,$4a,0,185,0,52
+         fcb    $1b,$2c,254,33,0,170,0,50,0,22,0,13
+*     Down facing pacman cycle #1
+DFPAC1   fcb    $1b,$2d,254,38,0,170,0,75
+         fcb    $1b,$40,0,180,0,79
+         fcb    $1b,$4a,0,181,0,84
+         fcb    $1b,$2c,254,34,0,170,0,72,0,22,0,13
+*     Down facing pacman cycle #2
+DFPAC2   fcb    $1b,$2d,254,34,0,170,0,96
+         fcb    $1b,$40,0,178,0,105
+         fcb    $1b,$4a,0,183,0,109
+         fcb    $1b,$2c,254,35,0,170,0,96,0,22,0,13
+*     Down facing pacman cycle #3
+DFPAC3   fcb    $1b,$2d,254,35,0,170,0,121
+         fcb    $1b,$40,0,176,0,132
+         fcb    $1b,$4a,0,185,0,133
+         fcb    $1b,$2c,254,36,0,170,0,121,0,22,0,13
+
+*     The following are used when pacman is killed
+*   #1
+         fcb    $1b,$2d,254,33,0,200,0,1
+         fcb    $1b,$2c,254,60,0,200,0,1,0,22,0,10
+*   #2
+         fcb    $1b,$2d,254,60,0,200,0,25
+         fcb    $1b,$40,0,204,0,26
+         fcb    $1b,$4a,0,216,0,28
+         fcb    $1b,$40,0,206,0,29
+         fcb    $1b,$44,0,214,0,29
+         fcb    $1b,$2c,254,61,0,200,0,25,0,22,0,10
+*   #3
+         fcb    $1b,$2d,254,61,0,200,0,50
+         fcb    $1b,$40,0,204,0,54
+         fcb    $1b,$4a,0,216,0,55
+         fcb    $1b,$40,0,208,0,56
+         fcb    $1b,$44,0,212,0,56
+         fcb    $1b,$42,0,204,0,58
+         fcb    $1b,$42,0,216,0,58
+         fcb    $1b,$2c,254,62,0,200,0,50,0,22,0,10
+*   #4
+         fcb    $1b,$2d,254,62,0,200,0,70
+         fcb    $1b,$40,0,200,0,72
+         fcb    $1b,$4a,0,220,0,73
+         fcb    $1b,$42,0,200,0,76
+         fcb    $1b,$42,0,220,0,76
+         fcb    $1b,$42,0,202,0,77
+         fcb    $1b,$42,0,218,0,77
+         fcb    $1b,$42,0,206,0,78
+         fcb    $1b,$42,0,214,0,78
+         fcb    $1b,$42,0,208,0,79
+         fcb    $1b,$42,0,212,0,79
+         fcb    $1b,$2c,254,63,0,200,0,70,0,22,0,10
+*   #5
+         fcb    $1b,$2d,254,63,0,200,0,90
+         fcb    $1b,$40,0,200,0,94
+         fcb    $1b,$44,0,220,0,94
+         fcb    $1b,$42,0,202,0,96
+         fcb    $1b,$42,0,218,0,96
+         fcb    $1b,$40,0,204,0,97
+         fcb    $1b,$44,0,206,0,97
+         fcb    $1b,$40,0,214,0,97
+         fcb    $1b,$44,0,216,0,97
+         fcb    $1b,$42,0,210,0,99
+         fcb    $1b,$2c,254,64,0,200,0,90,0,22,0,10
+*   #6
+         fcb    $1b,$2d,254,64,0,200,0,110
+         fcb    $1b,$40,0,200,0,115
+         fcb    $1b,$44,0,220,0,115
+         fcb    $1b,$40,0,208,0,118
+         fcb    $1b,$44,0,212,0,118
+         fcb    $1b,$32,0
+         fcb    $1b,$42,0,202,0,116
+         fcb    $1b,$42,0,218,0,116
+         fcb    $1b,$2c,254,65,0,200,0,110,0,22,0,10
+*   #7
+         fcb    $1b,$40,0,210,0,135
+         fcb    $1b,$44,0,210,0,139
+         fcb    $1b,$40,0,206,0,137
+         fcb    $1b,$44,0,214,0,137
+         fcb    $1b,$42,0,206,0,135
+         fcb    $1b,$42,0,214,0,135
+         fcb    $1b,$42,0,206,0,139
+         fcb    $1b,$42,0,214,0,139
+         fcb    $1b,$2c,254,66,0,200,0,130,0,22,0,10
+*   #8
+         fcb    $1b,$2d,254,66,0,200,0,150
+         fcb    $1b,$32,2
+         fcb    $1b,$40,0,206,0,157
+         fcb    $1b,$44,0,214,0,157
+         fcb    $1b,$40,0,210,0,155
+         fcb    $1b,$44,0,210,0,159
+         fcb    $1b,$32,0
+         fcb    $1b,$42,0,210,0,157
+         fcb    $1b,$2c,254,67,0,200,0,150,0,22,0,10
+
+*     Blank cage door
+BLCGDR   fcb    $1b,$2c,254,22,0,170,0,180,0,24,0,1
+*     Cage door
+CAGDOR   fcb    $1b,$32,8
+         fcb    $1b,$40,0,170,0,180
+         fcb    $1b,$44,0,199,0,180
+         fcb    $1b,$2c,254,23,0,170,0,180,0,24,0,1
+
+
+*     The following fcb's will draw the ghost objects
+*     which will be put in Group buffer #= (Process ID +1)
+
+*     Get blank ghost
+BLGHST   fcb    $1b,$2c,254,1,0,50,0,50,0,20,0,10
+*     Draw and save basic ghost (no eyes)
+BCGHST   fcb    $1b,$32,4                 Set color to red
+         fcb    $1b,$40,0,50,0,50         Set draw pointer
+         fcb    $1b,$4a,0,69,0,59         Draw bar rectangle
+         fcb    $1b,$40,0,50,0,50         Set draw pointer
+         fcb    $1b,$32,2                 Set color to black
+         fcb    $1b,$4a,0,51,0,51         Draw bar rectangle
+         fcb    $1b,$44,0,53,0,50         Draw line
+         fcb    $1b,$40,0,69,0,50         Set draw pointer
+         fcb    $1b,$4a,0,68,0,51         Draw bar rectangle
+         fcb    $1b,$44,0,66,0,50         Draw line
+         fcb    $1b,$40,0,54,0,59         Set draw pointer
+         fcb    $1b,$44,0,57,0,59         Draw line
+         fcb    $1b,$40,0,62,0,59         Set draw pointer
+         fcb    $1b,$44,0,65,0,59         Draw line
+         fcb    $1b,$2c,254,18,0,50,0,50,0,20,0,10
+*     Get blank eyes
+*BLKEYE   fcb    $1b,$2c,254,21,0,60,0,1,0,14,0,3
+*     Draw and save one eye
+EYE      fcb    $1b,$40,0,62,0,2
+         fcb    $1b,$32,5
+         fcb    $1b,$44,0,63,0,2
+         fcb    $1b,$2c,254,19,0,60,0,1,0,6,0,3
+*     Put second eye an save
+EYES     fcb    $1b,$2d,254,19,0,68,0,1
+         fcb    $1b,$2c,254,20,0,60,0,1,0,14,0,3
+*     Draw and save RED ghost up
+RGHUP    fcb    $1b,$2d,254,18,0,50,0,75
+         fcb    $1b,$2d,254,19,0,52,0,78
+         fcb    $1b,$2d,254,19,0,62,0,78
+         fcb    $1b,$2c,254,2,0,50,0,75,0,20,0,13
+         fcb    $1b,$2d,254,2,0,50,0,150
+*     WHITE ghost up
+WGHUP    fcb    $1b,$32,5
+         fcb    $1b,$40,0,52,0,77
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,6,0,50,0,75,0,20,0,13
+         fcb    $1b,$2d,254,6,0,50,0,125
+*     GREEN ghost up
+GGHUP    fcb    $1b,$32,3
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,10,0,50,0,75,0,20,0,13
+         fcb    $1b,$2d,254,10,0,50,0,100
+*     BLUE ghost up
+BGHUP    fcb    $1b,$32,6
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,14,0,50,0,75,0,20,0,13
+*     RED ghost facing left
+RDGHL    fcb    $1b,$2d,254,18,0,80,0,75
+         fcb    $1b,$2d,254,19,0,82,0,78
+         fcb    $1b,$2d,254,19,0,90,0,78
+         fcb    $1b,$2c,254,3,0,80,0,75,0,28,0,10
+         fcb    $1b,$2d,254,3,0,80,0,150
+*     WHITE ghost facing left
+WTGHL    fcb    $1b,$32,5
+         fcb    $1b,$40,0,82,0,77
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,7,0,80,0,75,0,28,0,10
+         fcb    $1b,$2d,254,7,0,80,0,125
+*     GREEN ghost facing left
+GRGHL    fcb    $1b,$32,3
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,11,0,80,0,75,0,28,0,10
+         fcb    $1b,$2d,254,11,0,80,0,100
+*     BLUE ghost facing left
+BLGHL    fcb    $1b,$32,6
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,15,0,80,0,75,0,28,0,10
+*     RED ghost facing right
+RDGHR    fcb    $1b,$2d,254,18,0,110,0,75
+         fcb    $1b,$2d,254,19,0,114,0,78
+         fcb    $1b,$2d,254,19,0,122,0,78
+         fcb    $1b,$2c,254,4,0,102,0,75,0,28,0,10
+         fcb    $1b,$2d,254,4,0,102,0,150
+*     WHITE ghost facing right
+WTGHR    fcb    $1b,$32,5
+         fcb    $1b,$40,0,112,0,77
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,8,0,102,0,75,0,28,0,10
+         fcb    $1b,$2d,254,8,0,102,0,125
+*     GREEN ghost facing right
+GRGHR    fcb    $1b,$32,3
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,12,0,102,0,75,0,28,0,10
+         fcb    $1b,$2d,254,12,0,102,0,100
+*     BLUE ghost facing right
+BLGHR    fcb    $1b,$32,6
+         fcb    $1b,$4f 
+         fcb    $1b,$2c,254,16,0,102,0,100,0,28,0,10
+
+         fcb    $1b,$2d,254,16,1,94,0,25
+         fcb    $1b,$40,1,102,0,27
+         fcb    $1b,$32,6
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,16,1,94,0,25,0,28,0,10
+
+*     Red ghost facing down
+RGHDN    fcb    $1b,$2d,254,18,0,140,0,75
+         fcb    $1b,$2d,254,19,0,142,0,78
+         fcb    $1b,$2d,254,19,0,152,0,78
+         fcb    $1b,$2c,254,5,0,140,0,72,0,20,0,13
+         fcb    $1b,$2d,254,5,0,140,0,148
+*     White ghost facing down
+WGHDN    fcb    $1b,$32,5
+         fcb    $1b,$40,0,142,0,77
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,9,0,140,0,72,0,20,0,13
+         fcb    $1b,$2d,254,9,0,140,0,123
+*     Green ghost facing down
+GGHDN    fcb    $1b,$32,3
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,13,0,140,0,72,0,20,0,13
+         fcb    $1b,$2d,254,13,0,140,0,98
+*     Blue ghost facing down
+BGHDN    fcb    $1b,$32,6
+         fcb    $1b,$4f
+         fcb    $1b,$2d,254,5,1,100,0,48
+         fcb    $1b,$40,1,110,0,56 
+         fcb    $1b,$32,6
+         fcb    $1b,$4f
+         fcb    $1b,$2c,254,17,1,100,0,48,0,20,0,13
+
+         fcb    255
+SETLEN   EQU    *-PALSET
+
+
+DOTAB1   fdb    284
+         fcb    21,1,1,14,41,1,14,13,7,22,1,10,7
+         fcb    55,10,7,21,13,4,41,13,4,1,16,7
+         fcb    55,16,7,21,19,14,1,25,11,47,25,11
+         fcb    21,28,14,1,34,14,41,34,14,7,40,28
+         fcb    1,46,4,21,46,4,41,46,4,61,46,4
+         fcb    1,52,34
+
+         fcb    1,1,6,1,34,7,7,40,3,9,16,7,13,1,6
+         fcb    13,34,3,21,7,3,21,19,6,21,40,3
+         fcb    27,1,3,27,13,3,27,34,3,27,46,3
+         fcb    41,1,3,41,13,3,41,34,3,41,46,3
+         fcb    47,7,3,47,19,6,47,40,3,55,1,6
+         fcb    55,34,3,59,16,7,61,40,3,67,1,6
+         fcb    67,34,7,0,0
+
+         fcb    1,7,4,67,7,4,1,40,5,67,40,5
+         fcb    1,25,0,67,25,0,33,28,0,35,28,0
+         fcb    0,25,0,68,25,0,0,0
+
+DOTAB2   fdb    302
+         fcb    24,1,1,7,55,1,7,13,4,22,1,7,7
+         fcb    55,7,7,1,13,7,21,13,6,37,13,6 
+         fcb    55,13,7,1,19,7,21,19,14,55,19,7
+         fcb    13,25,5,47,25,5,21,28,14,1,34,16
+         fcb    37,34,16,1,40,3,13,40,22,63,40,3
+         fcb    1,46,7,21,46,14,55,46,7,1,52,34
+
+         fcb    1,1,14,1,46,3,5,40,3,7,19,6,13,1,5
+         fcb    13,19,10,21,4,4,21,19,6,21,40,3
+         fcb    31,13,3,31,34,3,33,1,2,35,46,3
+         fcb    37,13,3,37,34,3,47,4,4,47,19,6
+         fcb    47,40,3,55,1,5,55,19,10,61,19,6
+         fcb    63,40,3,67,1,14,67,46,3,0,0
+
+         fcb    1,7,5,67,7,5,1,40,5,67,40,5
+         fcb    33,0,0,33,1,0,35,52,0,35,53,0
+         fcb    33,28,0,35,28,0,0,0
+
+DOTAB3   fdb    294
+         fcb    23,1,1,16,37,1,16,13,7,22,1,10,7
+         fcb    55,10,7,21,13,6,37,13,6,1,16,7
+         fcb    55,16,7,21,19,14,1,25,11,47,25,11
+         fcb    21,28,14,1,34,16,37,34,16,1,40,3
+         fcb    13,40,22,63,40,3,1,46,7,21,46,6
+         fcb    37,46,6,55,46,7,1,52,34
+
+         fcb    1,1,6,1,34,3,1,46,3,5,40,3
+         fcb    13,1,16,21,7,3,21,19,6,21,40,3
+         fcb    31,1,3,31,13,3,31,34,3,31,46,3
+         fcb    37,1,3,37,13,3,37,34,3,37,46,3
+         fcb    47,7,3,47,19,6,47,40,3,55,1,16
+         fcb    63,40,3,67,1,6,67,34,3,67,46,3
+         fcb    0,0
+
+         fcb    1,7,4,67,7,4,1,40,5,67,40,5
+         fcb    0,25,0,1,25,0,3,25,0,5,25,0
+         fcb    7,25,0,9,25,0,11,25,0
+         fcb    57,25,0,59,25,0,61,25,0
+         fcb    63,25,0,65,25,0,67,25,0
+         fcb    68,25,0,33,28,0,35,28,0
+         fcb    0,0
+
+DOTAB4   fdb    327
+         fcb    24,1,1,34,21,7,14,1,10,7,55,10,7
+         fcb    13,13,22,1,16,7,55,16,7,21,19,14
+         fcb    3,22,6,55,22,6,13,25,5,47,25,5
+         fcb    3,28,6,21,28,14,55,28,6,1,34,16
+         fcb    37,34,16,1,40,7,21,40,14,55,40,7
+         fcb    1,46,7,21,46,14,55,46,7,1,52,34
+
+         fcb    1,1,6,1,34,3,1,46,3,3,22,3,7,1,4
+         fcb    7,40,3,13,1,14,13,46,3,21,1,3
+         fcb    21,19,12,25,7,3,31,34,3,33,1,3
+         fcb    33,13,3,35,46,3,37,34,3,43,7,3
+         fcb    47,1,3,47,19,12,55,1,14,55,46,3
+         fcb    61,1,4,61,40,3,65,22,3,67,1,6
+         fcb    67,34,3,67,46,3,0,0
+
+         fcb    1,7,4,67,7,4,1,40,5,67,40,5
+         fcb    33,28,0,35,28,0,33,1,0,35,52,0
+         fcb    33,0,0,35,53,0,0,0
+
+DOTAB5   fdb    310
+         fcb    29,1,1,16,37,1,16,7,7,28,7,13,4
+         fcb    21,13,6,37,13,6,55,13,4,1,19,7
+         fcb    21,19,14,55,19,7,13,22,5,47,22,5
+         fcb    1,25,7,55,25,7,21,28,14,1,31,4
+         fcb    61,31,4,7,34,4,21,34,4,31,34,4
+         fcb    41,34,4,55,34,4,7,40,4,21,40,6
+         fcb    37,40,6,55,40,4,1,46,34
+         fcb    1,52,16,37,52,16
+
+         fcb    1,1,7,1,31,8,7,1,3,7,13,3,7,25,6
+         fcb    13,7,3,13,19,6,13,40,3,21,7,3
+         fcb    21,19,4,21,34,5,27,28,3,31,1,3
+         fcb    31,13,3,31,34,3,31,46,3,37,1,3
+         fcb    37,13,3,37,34,3,37,46,3,41,28,3
+         fcb    47,7,3,47,19,4,47,34,5,55,7,3
+         fcb    55,19,6,55,40,3,61,1,3,61,13,3
+         fcb    61,25,6,67,1,7,67,31,8,0,0
+
+         fcb    1,7,4,67,7,4,1,40,5,67,40,5
+         fcb    1,25,0,67,25,0,33,28,0,35,28,0
+         fcb    0,25,0,68,25,0,0,0
+
+DOTAB6   fdb    336
+         fcb    25,1,1,34,1,7,4,19,7,16,61,7,4
+         fcb    7,13,7,25,13,4,37,13,4,49,13,7
+         fcb    1,19,34,1,25,4,15,25,4,47,25,4
+         fcb    61,25,4,7,28,5,21,28,14,53,28,5
+         fcb    1,34,16,37,34,16,7,40,7,25,40,10
+         fcb    49,40,7,1,46,4,19,46,16,61,46,4
+         fcb    1,52,34
+
+         fcb    1,1,18,7,7,3,7,19,6,7,40,3,13,1,7
+         fcb    13,34,7,15,25,2,19,7,3,19,40,3
+         fcb    21,19,6,25,1,7,25,34,7,31,13,3
+         fcb    31,34,3,33,1,3,35,46,3,37,13,3
+         fcb    37,34,3,43,1,7,43,34,7,47,19,6
+         fcb    49,7,3,49,40,3,53,25,2,55,1,7
+         fcb    55,34,7,61,7,3,61,19,6,61,40,3
+         fcb    67,1,18,0,0
+
+         fcb    1,7,5,67,7,5,1,40,4,67,40,4
+         fcb    33,1,0,35,52,0,33,28,0,35,28,0
+         fcb    33,0,0,35,53,0,0,0
+
+DOTAB7   fdb    318
+         fcb    31,1,1,15,39,1,15,21,7,14,5,10,3
+         fcb    13,10,5,47,10,5,59,10,3,21,13,5
+         fcb    39,13,5,1,16,7,55,16,7,13,19,22
+         fcb    5,22,3,59,22,3,1,25,3,13,25,5
+         fcb    47,25,5,63,25,3,5,28,5,21,28,14
+         fcb    55,28,5,1,34,11,27,34,8,47,34,11
+         fcb    7,40,13,37,40,13,1,46,4,21,46,6
+         fcb    37,46,6,61,46,4,1,52,34
+
+         fcb    1,1,6,1,34,7,5,10,3,5,22,3,7,40,3
+         fcb    9,1,4,9,16,3,9,28,3,13,1,10,13,34,3
+         fcb    15,40,5,21,7,3,21,19,6,21,40,3
+         fcb    27,28,3,29,1,3,29,13,3,31,34,3
+         fcb    31,46,3,37,34,3,37,46,3,39,1,3
+         fcb    39,13,3,41,28,3,47,7,3,47,19,6
+         fcb    47,40,3,53,40,5,55,1,10,55,34,3
+         fcb    59,1,4,59,16,3,59,28,3,61,40,3
+         fcb    63,10,3,63,22,3,67,1,6,67,34,7,0,0
+
+         fcb    1,7,4,67,7,4,1,40,5,67,40,5
+         fcb    1,25,0,67,25,0,33,28,0,35,28,0
+         fcb    0,25,0,68,25,0,0,0
+
+DOTAB8   fdb    332
+         fcb    32,1,1,15,37,1,16,7,7,4,19,7,3
+         fcb    29,7,5,43,7,3,55,7,4,1,10,4,61,10,4
+         fcb    19,13,15,1,16,7,55,16,7,13,19,22
+         fcb    1,22,5,59,22,5,13,25,5,47,25,5
+         fcb    1,28,5,21,28,14,59,28,5,1,34,16
+         fcb    37,34,16,1,40,7,21,40,15,55,40,7
+         fcb    1,46,7,21,46,3,31,46,5,45,46,3
+         fcb    55,46,7,1,52,16,39,52,15
+
+         fcb    1,1,14,1,46,3,7,1,6,7,40,3,9,22,3
+         fcb    13,1,14,13,46,3,19,7,3,21,19,6
+         fcb    21,40,3,23,1,3,25,13,3,25,46,3,29,1,3
+         fcb    31,34,3,31,46,3,33,1,5,35,40,5
+         fcb    37,1,3,37,34,3,39,46,3,41,13,3
+         fcb    43,1,3,45,46,3,47,7,3,47,19,6
+         fcb    49,40,3,55,1,14,55,46,3,59,22,3
+         fcb    61,1,6,61,40,3,67,1,14,67,46,3,0,0
+
+         fcb    1,7,4,67,7,4,1,40,5,67,40,5
+         fcb    33,0,0,33,1,0,35,52,0,35,53,0
+         fcb    33,28,0,35,28,0,0,0
+
+
+GHSET
+         fcb    6,77,0,245,0,79,0,245,0,79
+         fcb    -1,2,150,150,0,0,4,4,4,36
+
+         fcb    6,93,1,117,0,79,1,117,0,79
+         fcb    -1,14,100,100,0,0,4,4,6,25
+
+         fcb    6,82,1,29,0,79,1,29,0,79
+         fcb    -1,6,50,50,0,0,4,4,5,63
+
+         fcb    6,88,1,77,0,79,1,77,0,79
+         fcb    -1,10,10,10,0,0,4,4,3,18
+
+
+*
+*   The SETUPB routine is used to insert the PROCESS I.D. number into
+* the GROUP BUFFER numbers of the GETBLK and PUTBLK strings.
+*   This had me stumped for a while because the draw codes are in FCB's
+* in the program area, which legally in OS9 can't be changed. The way I
+* found to get around this is that since the memory area for the board array
+* has already been allocated (3726 bytes), but it has not yet been filled,
+* all the object draw fcb's can be transfered to this memory area and as
+* the data is transfered I change the dummy GROUP BUFFER (254) number in 
+* the GETBLK and PUTBLK commands, to the PROCESS I.D. number.
+*
+
+SETUPB:  leay   ARRAY,U     Point to where data is to go
+         leax   PALSET,pcr  Point to FCB's to read
+TRLOOP   lda    ,X+         Get a byte from program area
+         cmpa   #255        255 = end of data
+         beq    WRTOUT      If so, then go write it out
+         cmpa   #254        Do we put I.D. here ?
+         bne    TRSTOR      If not, then store this byte
+         lda    PROCID      If so, then get process I.D. byte
+TRSTOR   sta    ,Y+         Store byte in data area
+         bra    TRLOOP      Loop till end of FCB's (255)
+
+*     The fcb's have been transfered so now output them to path
+
+WRTOUT   leax   ARRAY,U     Point to where FCB data was put
+         ldy    #SETLEN-1   Get byte count to output
+         lda    PATH        Set output path
+         os9    I$Write     Go output data
+         lbcs   ERR1        Branch if any errors
+         rts
+
+*     Initially we clear the array then put the array data
+*     in the screen save table, in case there are more than
+*     one players. The array will be filled with $ff s.
+
+SETUPC:  bsr    CLRARR      Go setup the array & variables
+
+FILTAB   leay   TABLE2,U    Point to player 2 table
+         sty    YVALUE      Save temporary pointer
+         leay   TABLE1,U    Point to player 1 table
+         sty    XVALUE,U    Save temporary value
+         leax   ARRAY,U     Point X reg. at array
+         leax   68,X        Move to first dot location -2
+         clr    DOTCNT
+FLOOP    leax   2,X         Bump X reg. 2 times
+         inc    DOTCNT
+         lda    ,X          Get a byte from the array
+         ldy    XVALUE,U
+         sta    ,Y+         Put it in table 1,bump pointer
+         sty    XVALUE,U
+         ldy    YVALUE,U
+         sta    ,Y+         Put it in table 2,bump pointer
+         sty    YVALUE,U
+         lda    DOTCNT
+         cmpa   #34
+         bne    FLOOP
+         cmpx   #ARREND-73  Are we done ?
+         bge    FILEND      If so then get out
+         leax   139,X       Move down 3 lines
+         clr    DOTCNT
+         bra    FLOOP
+
+FILEND   lbra   RETURN      Leave setup routine
+
+*     This routine fills the entire array with -1's
+*     The -1's will represent walls when the rest of the array is filled
+
+CLRARR:  leax   ARRAY,U     Point to array
+         ldd    #$ffff
+CLRLOP   std    ,X++        Fill 2 bytes in array
+         cmpx   #ARREND     End of array yet?
+         ble    CLRLOP
+         leax   ARRAY,U
+         ldd    #$0000
+         std    -36,X
+         std    -105,X
+         std    3761,X
+         std    3830,X
+
+*     This routine will put DOTS (=2) and SPACES (=0) in array
+
+FILARR   lda    BRDNUM      Get board number
+         deca
+         bne    SEL2
+         leay   DOTAB1,pcr
+         bra    SELEND
+SEL2     deca
+         bne    SEL3
+         leay   DOTAB2,pcr
+         bra    SELEND
+SEL3     deca
+         bne    SEL4
+         leay   DOTAB3,pcr
+         bra    SELEND
+SEL4     deca
+         bne    SEL5
+         leay   DOTAB4,pcr
+         bra    SELEND
+SEL5     deca
+         bne    SEL6
+         leay   DOTAB5,pcr
+         bra    SELEND
+SEL6     deca
+         bne    SEL7
+         leay   DOTAB6,pcr
+         bra    SELEND
+SEL7     deca
+         bne    SEL8
+         leay   DOTAB7,pcr
+         bra    SELEND
+SEL8     leay   DOTAB8,pcr
+
+SELEND   ldd    ,Y++        Get Dot total
+         std    SCNTOT
+         lda    ,Y+         Get number of entries
+         sta    TABCNT
+LOOP     ldd    ,Y++        Get 2 bytes & bump Y reg. twice
+         beq    PUTLOP      End of DOT table=0000,Go do PILLS
+         sta    XVALUE      Save xvalue, B holds yvalue
+         lda    ,Y+         Get # of dots to put on line
+         sta    DOTCNT      Save this number
+CALC     lda    #69
+         mul                Multiply yvalue by 69
+         addb   XVALUE      Add xvalue to result
+         adca   #$00        Add any carry to result
+         leax   ARRAY,U     Point to start of array
+         leax   D,X         Add offset to spot in array
+         lda    #$02        a 2 in array signifies a dot
+         clrb               a 0 in array signifies a space
+         cmpb   TABCNT      Done all dots on line yet ?
+         beq    DNLOOP      If so then do the down lines
+
+*     This loop writes dots and spaces across
+ACLOOP   sta    ,X+         Put a dot in array
+         lda    #1 
+         cmpa   DOTCNT      If dotcnt=1 then
+         beq    SKIP         don't put spaces
+         stb    ,X+         Put 1 space in array
+SKIP     lda    #$02
+         dec    DOTCNT      Decrement dot counter
+         bne    ACLOOP      Loop till zero
+         dec    TABCNT      Decrement table item counter
+         bra    LOOP        Loop till tabcnt=0
+
+*     This loop writes dots and spaces down
+*     When it puts a dot it also checks to see
+*     if where it puts the dot, it is an
+*     intersection. If so it adds 1 to number
+*     to flag that spot as an intersection.
+
+DNLOOP   tst    -1,X        Look at spot to left
+         bmi    TEST2       Branch if wall
+         adda   #1          Intersection, add 1 to it
+         bra    PUTIT       Go put byte in array
+TEST2    tst    1,X         Look at spot to right
+         bmi    PUTIT
+         adda   #1          Intersection
+
+PUTIT    sta    ,X          Put a dot in array
+         lda    #1
+         cmpa   DOTCNT      If dotcnt=1 then
+         beq    SKIP2        don't put spaces
+         leax   69,X        Add 69 to index reg.
+         stb    ,X          Store a space
+         leax   69,X        Add 69 to index reg.
+         stb    ,X          Store a space
+         leax   69,X        Add 69 to index reg.
+SKIP2    lda    #$02
+         dec    DOTCNT      Decrement dot counter
+         bne    DNLOOP      Loop till zero
+         bra    LOOP        Go get another table item
+
+*     This routine will put POWER PILLS (=4) in array
+*     Y reg. already points to power pill table
+*PUTPOW   leay   POWDOT,pcr  Point to power pill table
+
+PUTLOP   ldd    ,Y++        Get xvalue and yvalue
+         cmpd   #$0000      End of table yet?
+         beq    DONE
+         sta    XVALUE      Save for later
+         lda    ,Y+         Get byte to put in array
+         sta    BYTE        Save it
+         lda    #69
+         mul                Multiply (yvalue-1) by 69
+         addb   XVALUE      Add xvalue to result
+         adca   #$00        Add in any carry
+         leax   ARRAY,U     Point to start of array
+         leax   D,X         Add offset to spot in array
+         lda    BYTE        Get byte to put in array
+         sta    ,X          Put byte in array
+         bra    PUTLOP      Loop till done
+
+DONE     nop
+*         ldd    DTOTAL,pcr  Get total # of dots
+*         std    SCNTOT      Give it to screen total
+
+*    Fill tables with ghost data 
+
+GHFILL   leax   GHSET,pcr   Point to bytes to transfer
+         leay   GHTABL,U    Point to where bytes go
+         ldb    #80         Transfer 80 bytes
+FLLOOP   lda    ,X+         Get a byte
+         sta    ,Y+         Store it
+         decb               Decrement loop counter
+         bne    FLLOOP      Loop till done
+
+GHDATA:  leax   GHSET,pcr   Point to bytes to transfer
+         leay   G1OFST,U    Point to where bytes go
+         ldb    #80         Transfer 80 bytes
+GHLOOP   lda    ,X+         Get a byte
+         sta    ,Y+         Store it
+         decb               Decrement counter
+         bne    GHLOOP      Loop till done
+
+RETURN   rts
+
+
+
+         ENDSECT
+