$PAGINATE
$title(Arnold 5 test)
$subtitle(All the static messages and fixed value DBs)
$copyright(Copyright (c) 1989, 1990, Amstrad plc.)
$pagewidth=131

        DEFSEG  FixedData, CLASS=DATA

        SEG     FixedData


        PUBLIC  .MainMenuTable          ;accessed from TESTPACK
;        PUBLIC  .StepOnMenuTable        ;acessed from ALLTESTS
        PUBLIC  .CRTCInitialValues      ;accessed from SUPPORT
        PUBLIC  .Initial16ColorPalette  ;accessed from SUPPORT
        PUBLIC  .HexDigits              ;accessed from SUPPORT
        PUBLIC  .MatrixDefinitions      ;accessed from SUPPORT
        PUBLIC  .Arnold5Key             ;accessed from SUPPORT
        PUBLIC  .RetestMess             ;accessed from SUPPORT
        PUBLIC  .KeyTranslateTable      ;accessed from FLOPCMND
        PUBLIC  .RecognizableString     ;accessed from RAMTEST
        PUBLIC  .ModeMess               ;accessed from MODES
        PUBLIC  .Mode0MaskTable         ;accessed from MODES
        PUBLIC  .Mode1MaskTable         ;accessed from MODES
        PUBLIC  .Mode2MaskTable         ;accessed from MODES
        PUBLIC  .LenRecogString         ;accessed from RAMTEST
        PUBLIC  .ErrorMessageTable      ;accessed from ERROR
        PUBLIC  .LowMess                ;accessed from ERROR
        PUBLIC  .HighMess               ;accessed from ERROR
        PUBLIC  .RAMFillMess            ;accessed from ERROR
        PUBLIC  .RAMWaveUpStoredMess    ;accessed from ERROR
        PUBLIC  .RAMWaveUpInverseMess   ;accessed from ERROR
        PUBLIC  .RAMWaveDnInverseMess   ;accessed from ERROR
        PUBLIC  .RAMWaveDnStoredMess    ;accessed from ERROR
        PUBLIC  .RAMBlockMess           ;accessed from ERROR
        PUBLIC  .RAMOffsetMess          ;accessed from ERROR
        PUBLIC  .RAMBitMess             ;accessed from ERROR
        PUBLIC  .FlybackLowMess         ;accessed from ERROR
        PUBLIC  .FlybackHighMess        ;accessed from ERROR
        PUBLIC  .FlybackActiveMess      ;accessed from ERROR
        PUBLIC  .FlybackInactiveMess    ;accessed from ERROR
        PUBLIC  .IntPeriodMess          ;accessed from ERROR
        PUBLIC  .IntNotThereMess        ;accessed from ERROR
        PUBLIC  .InitProcessorMessPt1   ;accessed from TESTPACK
        PUBLIC  .InitProcessorMessPt2   ;accessed from TESTPACK
        PUBLIC  .CrLfMess               ;accessed from TESTPACK
        PUBLIC  .Arnold5ErrorMess       ;accessed from TESTPACK
        PUBLIC  .CheckSumMess           ;accessed from TESTPACK
        PUBLIC  .TestingBlockMess       ;accessed from RAMTEST
        PUBLIC  .LoopCountMess          ;accessed from COUNTER
        PUBLIC  .LoopLimitMess          ;accessed from COUNTER
        PUBLIC  .FrameFlybackMess       ;accessed from FLYBACK
        PUBLIC  .InterruptMess          ;accessed from INTTEST
        PUBLIC  .PlayChannelAMess       ;accessed from SOUND
        PUBLIC  .PlayChannelBMess       ;accessed from SOUND
        PUBLIC  .PlayChannelCMess       ;accessed from SOUND
        PUBLIC  .TestStereoMess         ;accessed from SOUND
        PUBLIC  .PlayAnBMess            ;accessed from SOUND
        PUBLIC  .PlayAnCMess            ;accessed from SOUND
        PUBLIC  .PlayBnCMess            ;accessed from SOUND
        PUBLIC  .PlayAnBnCMess          ;accessed from SOUND
        PUBLIC  .PlayEnvelopesMess      ;accessed from SOUND
        PUBLIC  .EnvelopeEqualMess      ;accessed from SOUND
        PUBLIC  .EnvelopeBackMess       ;accessed from SOUND
        PUBLIC  .EnvelopeShapeTable     ;accessed from SOUND
        PUBLIC  .Pal27TestMess          ;accessed from PALET27
        PUBLIC  .PalWhiteoutMess        ;accessed from PALET27
        PUBLIC  .Pal27Line1Mess         ;accessed from PALET27
        PUBLIC  .Pal27Line9Mess         ;accessed from PALET27
        PUBLIC  .Pal27Line17Mess        ;accessed from PALET27
        PUBLIC  .PalVector0to8          ;accessed from PALET27
        PUBLIC  .PalVector9to11         ;accessed from PALET27
        PUBLIC  .PalVector12to1A        ;accessed from PALET27
        PUBLIC  .KeyTestLegend1         ;accessed from KEYBOARD
        PUBLIC  .KeyTestLegend2         ;accessed from KEYBOARD
        PUBLIC  .KeyTestLegend3         ;accessed from KEYBOARD
        PUBLIC  .KeyTestLegend4         ;accessed from KEYBOARD
        PUBLIC  .KeyTestLegend5         ;accessed from KEYBOARD
        PUBLIC  .KeyboardDiagTable      ;accessed from KEYBOARD
        PUBLIC  .PrinterOFFMess         ;accessed from PRINTER
        PUBLIC  .PrinterONMess          ;accessed from PRINTER
        PUBLIC  .TapeTestMess           ;accessed from TAPE
        PUBLIC  .TapeSampleMess         ;accessed from TAPE
        PUBLIC  .AnalogTestMess         ;accessed from ANALOGUE
        PUBLIC  .AnalogChannelMess      ;accessed from ANALOGUE
        PUBLIC  .AnalogColonMess        ;accessed from ANALOGUE
        PUBLIC  .Palette4096Mess        ;accessed from PALET496
        PUBLIC  .SpriteTestMess         ;accessed from SPRITES
        PUBLIC  .SpriteSunDefinition    ;accessed from SPRITES
        PUBLIC  .SpriteMountainData     ;accessed from SPRITES
        PUBLIC  .SpritePalette          ;accessed from SPRITES
        PUBLIC  .SpriteDefinitions      ;accessed from SPRITES
        PUBLIC  .SpritePalDefinitions   ;accessed from SPRITPAL
        PUBLIC  .SpritePalMess          ;accessed from SPRITPAL
        PUBLIC  .SpriteStartPositions   ;accessed from SPRITES
        PUBLIC  .SpriteEndPositions     ;accessed from SPRITES
        PUBLIC  .SpriteMoveVectors      ;accessed from SPRITES
        PUBLIC  .SpriteMoveStarts       ;accessed from SPRITES
        PUBLIC  .RasterRainbow          ;accessed from RASTER
        PUBLIC  .SoundInstructions      ;accessed from SOUNDDMA
        PUBLIC  .NoDiskControllerMess   ;accessed from FLOPPY

        PUBLIC  .OrionKeyMess           ;accessed from ORION
        PUBLIC  .OrnSoundPlayingLeft    ;accessed from ORNSOUND
        PUBLIC  .OrnSoundPlayingRight   ;accessed from ORNSOUND
        PUBLIC  .OrnSoundPlayingBoth    ;accessed from ORNSOUND
        PUBLIC  .OrionKeyDiag           ;accessed from ORNCNTRL
        PUBLIC  .OrionKeyTable          ;accessed from ORNCNTRL
        PUBLIC  .AnalogOkMess           ;accessed from ORNCNTRL
        PUBLIC  .AnalogNGMess           ;accessed from ORNCNTRL
        PUBLIC  .NotOKorNGMess          ;accessed from ORNCNTRL


;        EXTERN  AllTests                ;in ALLTESTS
        EXTERN  OrionTests              ;in ORION
        EXTERN  FrameFlybackTest        ;in FLYBACK
        EXTERN  InterruptTest           ;in INTTEST
        EXTERN  RAMTest                 ;in RAMTEST
        EXTERN  SimpleSoundTest         ;in SOUND
        EXTERN  ScreenModesTest         ;in MODES
        EXTERN  Palette27Test           ;in PALET27
        EXTERN  KeyboardTest            ;in KEYBOARD
        EXTERN  PrinterTest             ;in PRINTER
        EXTERN  DatacorderTest          ;in TAPE
        EXTERN  FloppyTest              ;in FLOPPY
        EXTERN  AnalogueJoystickTest    ;in ANALOGUE
        EXTERN  Palette4096Test         ;in PALET496
        EXTERN  SpritesTest             ;in SPRITES
        EXTERN  SpritePaletteTest       ;in SPRITPAL
        EXTERN  SplitScreenTest         ;in SPLIT
        EXTERN  SoftScrollTest          ;in SSCROLL
        EXTERN  RasterInterruptTest     ;in RASTER
        EXTERN  DMASoundTest            ;in SOUNDDMA
        EXTERN  IncrementLoopLimit      ;in COUNTER
        EXTERN  DecrementLoopLimit      ;in COUNTER

        INCLUDE "Equates.inc"


.MainMenuTable
                defb    2               ;row 2
                defb    4               ;column 6
;                defb    "All the following in sequence:$"
                defb    "Orion Factory Tests$"
                defb    "Frame Flyback Test$"
                defb    "Interrupt Test$"
                defb    "RAM Test$"
                defb    "Simple Sound Test$"
                defb    "Screen Modes Test$"
                defb    "27 Color Palette Test$"
                defb    "Keyboard Test$"
                defb    "Printer Test$"
                defb    "DataCorder Test$"
                defb    "Floppy disk test (DTEST)$"
                defb    "Analogue Joystick Test$"
                defb    "4096 Color Palette Test$"
                defb    "Sprites Movement Test$"
                defb    "Sprite Palette Test$"
                defb    "Split Screen Test$"
                defb    "Soft Scroll Test$"
                defb    "Raster Interrupt Test$"
                defb    "DMA driven Sound Test$"
                defb    "Increment loop limit$"
                defb    "Decrement loop limit$"
                defb    0                               ;end of text marker

;                defw    AllTests
                defw    OrionTests
                defw    FrameFlybackTest
                defw    InterruptTest
                defw    RAMTest
                defw    SimpleSoundTest
                defw    ScreenModesTest + 4000h
                defw    Palette27Test + 4000h   ;bit 6 in H set means don't
                defw    KeyboardTest + 4000h    ;CLS but do loop process
                defw    PrinterTest
                defw    DatacorderTest + 4000h
                defw    FloppyTest
                defw    AnalogueJoystickTest
                defw    Palette4096Test + 4000h
                defw    SpritesTest + 4000h
                defw    SpritePaletteTest
                defw    SplitScreenTest
                defw    SoftScrollTest
                defw    RasterInterruptTest
                defw    DMASoundTest
                defw    IncrementLoopLimit + 8000h ;top bit set means don't
                defw    DecrementLoopLimit + 8000h ;clear the screen

;.StepOnMenuTable
;                defb    8                       ;row 8
;                defb    2                       ;column 2
;                defb    "Pass Test and step on to next$"
;                defb    "Fail Test and step on to next$"
;                defb    "Ignore result, repeat test$"
;                defb    "Ignore result, perform previous test$"
;                defb    "End test loop, return to main menu$"
;                defb    0

;                defw    1111h           ;these are fixed flag values instead
;                defw    2222h           ;of being routine addresses to be
;                defw    3333h           ;run.
;                defw    4444h
;                defw    5555h

.CRTCInitialValues
                defb    000h            ;register 15 = cursor low
                defb    0C0h            ;register 14 = cursor high
                defb    000h            ;register 13 = start addr high
                defb    030h            ;register 12 = start addr low
                defb    000h            ;register 11 = cursor end raster
                defb    000h            ;register 10 = cursor start raster
                defb    007h            ;register 9  = max raster addr
                defb    000h            ;register 8  = interlace & skew
                defb    01Eh            ;register 7  = vert sync pos
                defb    019h            ;register 6  = vertical displayed
                defb    000h            ;register 5  = vert total adjust
                defb    026h            ;register 4  = vertical total
                defb    00Eh            ;register 3  = vsync/hsync widths
                defb    02Eh            ;register 2  = horiz sync pos
                defb    028h            ;register 1  = horiz displayed
                defb    03Fh            ;register 0  = horiz total

.Initial16ColorPalette
                defb    22              ;border = Green
                defb    14              ;pen 15 = Orange (normally flashing)
                defb    23              ;pen 14 = Sky Blue (normally flashing)
                defb    25              ;pen 13 = Pastel Green
                defb    18              ;pen 12 = Bright Green
                defb    7               ;pen 11 = Pink
                defb    31              ;pen 10 = Pastel Blue
                defb    30              ;pen  9 = Yellow
                defb    6               ;pen  8 = Cyan
                defb    13              ;pen  7 = Bright Magenta
                defb    21              ;pen  6 = Bright Blue
                defb    20              ;pen  5 = Black
                defb    11              ;pen  4 = Bright White
                defb    12              ;pen  3 = Bright Red
                defb    19              ;pen  2 = Bright Cyan
                defb    10              ;pen  1 = Bright Yellow (text)
                defb    4               ;pen  0 = Blue  (background)

.HexDigits
        defb    "0123456789ABCDEF"


.MatrixDefinitions
;
; definitions of characters 32..127 stolen from Arnolds ROM
;
        defb    000h,000h,000h,000h,000h,000h,000h,000h ;<space>
        defb    018h,018h,018h,018h,018h,000h,018h,000h ;!
        defb    06Ch,06Ch,06Ch,000h,000h,000h,000h,000h ;"
        defb    06Ch,06Ch,0FEh,06Ch,0FEh,06Ch,06Ch,000h ;#
        defb    018h,03Eh,058h,03Ch,01Ah,07Ch,018h,000h ;$
        defb    000h,0C6h,0CCh,018h,030h,066h,0C6h,000h ;%
        defb    038h,06Ch,038h,076h,0DCh,0CCh,076h,000h ;&
        defb    018h,018h,030h,000h,000h,000h,000h,000h ;'
        defb    00Ch,018h,030h,030h,030h,018h,00Ch,000h ;(
        defb    030h,018h,00Ch,00Ch,00Ch,018h,030h,000h ;)
        defb    000h,066h,03Ch,0FFh,03Ch,066h,000h,000h ;*
        defb    000h,018h,018h,07Eh,018h,018h,000h,000h ;+
        defb    000h,000h,000h,000h,000h,018h,018h,030h ;,
        defb    000h,000h,000h,07Eh,000h,000h,000h,000h ;-
        defb    000h,000h,000h,000h,000h,018h,018h,000h ;.
        defb    006h,00Ch,018h,030h,060h,0C0h,080h,000h ;/
        defb    07Ch,0C6h,0CEh,0D6h,0E6h,0C6h,07Ch,000h ;0
        defb    018h,038h,018h,018h,018h,018h,07Eh,000h ;1
        defb    03Ch,066h,006h,03Ch,060h,066h,07Eh,000h ;2
        defb    03Ch,066h,006h,01Ch,006h,066h,03Ch,000h ;3
        defb    01Ch,03Ch,06Ch,0CCh,0FEh,00Ch,01Eh,000h ;4
        defb    07Eh,062h,060h,07Ch,006h,066h,03Ch,000h ;5
        defb    03Ch,066h,060h,07Ch,066h,066h,03Ch,000h ;6
        defb    07Eh,066h,006h,00Ch,018h,018h,018h,000h ;7
        defb    03Ch,066h,066h,03Ch,066h,066h,03Ch,000h ;8
        defb    03Ch,066h,066h,03Eh,006h,066h,03Ch,000h ;9
        defb    000h,000h,018h,018h,000h,018h,018h,000h ;:
        defb    000h,000h,018h,018h,000h,018h,018h,030h ;;
        defb    00Ch,018h,030h,060h,030h,018h,00Ch,000h ;<
        defb    000h,000h,07Eh,000h,000h,07Eh,000h,000h ;=
        defb    060h,030h,018h,00Ch,018h,030h,060h,000h ;>
        defb    03Ch,066h,066h,00Ch,018h,000h,018h,000h ;?
        defb    07Ch,0C6h,0DEh,0DEh,0DEh,0C0h,07Ch,000h ;@
        defb    018h,03Ch,066h,066h,07Eh,066h,066h,000h ;A
        defb    0FCh,066h,066h,07Ch,066h,066h,0FCh,000h ;B
        defb    03Ch,066h,0C0h,0C0h,0C0h,066h,03Ch,000h ;C
        defb    0F8h,06Ch,066h,066h,066h,06Ch,0F8h,000h ;D
        defb    0FEh,062h,068h,078h,068h,062h,0FEh,000h ;E
        defb    0FEh,062h,068h,078h,068h,060h,0F0h,000h ;F
        defb    03Ch,066h,0C0h,0C0h,0CEh,066h,03Eh,000h ;G
        defb    066h,066h,066h,07Eh,066h,066h,066h,000h ;H
        defb    07Eh,018h,018h,018h,018h,018h,07Eh,000h ;I
        defb    01Eh,00Ch,00Ch,00Ch,0CCh,0CCh,078h,000h ;J
        defb    0E6h,066h,06Ch,078h,06Ch,066h,0E6h,000h ;K
        defb    0F0h,060h,060h,060h,062h,066h,0FEh,000h ;L
        defb    0C6h,0EEh,0FEh,0FEh,0D6h,0C6h,0C6h,000h ;M
        defb    0C6h,0E6h,0F6h,0DEh,0CEh,0C6h,0C6h,000h ;N
        defb    038h,06Ch,0C6h,0C6h,0C6h,06Ch,038h,000h ;O
        defb    0FCh,066h,066h,07Ch,060h,060h,0F0h,000h ;P
        defb    038h,06Ch,0C6h,0C6h,0DAh,0CCh,076h,000h ;Q
        defb    0FCh,066h,066h,07Ch,06Ch,066h,0E6h,000h ;R
        defb    03Ch,066h,060h,03Ch,006h,066h,03Ch,000h ;S
        defb    07Eh,05Ah,018h,018h,018h,018h,03Ch,000h ;T
        defb    066h,066h,066h,066h,066h,066h,03Ch,000h ;U
        defb    066h,066h,066h,066h,066h,03Ch,018h,000h ;V
        defb    0C6h,0C6h,0C6h,0D6h,0FEh,0EEh,0C6h,000h ;W
        defb    0C6h,06Ch,038h,038h,06Ch,0C6h,0C6h,000h ;X
        defb    066h,066h,066h,03Ch,018h,018h,03Ch,000h ;Y
        defb    0FEh,0C6h,08Ch,018h,032h,066h,0FEh,000h ;Z
        defb    03Ch,030h,030h,030h,030h,030h,03Ch,000h ;[
        defb    0C0h,060h,030h,018h,00Ch,006h,002h,000h ;
        defb    03Ch,00Ch,00Ch,00Ch,00Ch,00Ch,03Ch,000h ;]
        defb    018h,03Ch,07Eh,018h,018h,018h,018h,000h ;^
        defb    000h,000h,000h,000h,000h,000h,000h,0FFh ;_
        defb    030h,018h,00Ch,000h,000h,000h,000h,000h ;'
        defb    000h,000h,078h,00Ch,07Ch,0CCh,076h,000h ;a
        defb    0E0h,060h,07Ch,066h,066h,066h,0DCh,000h ;b
        defb    000h,000h,03Ch,066h,060h,066h,03Ch,000h ;c
        defb    01Ch,00Ch,07Ch,0CCh,0CCh,0CCh,076h,000h ;d
        defb    000h,000h,03Ch,066h,07Eh,060h,03Ch,000h ;e
        defb    01Ch,036h,030h,078h,030h,030h,078h,000h ;f
        defb    000h,000h,03Eh,066h,066h,03Eh,006h,07Ch ;g
        defb    0E0h,060h,06Ch,076h,066h,066h,0E6h,000h ;h
        defb    018h,000h,038h,018h,018h,018h,03Ch,000h ;i
        defb    006h,000h,00Eh,006h,006h,066h,066h,03Ch ;j
        defb    0E0h,060h,066h,06Ch,078h,06Ch,0E6h,000h ;k
        defb    038h,018h,018h,018h,018h,018h,03Ch,000h ;l
        defb    000h,000h,06Ch,0FEh,0D6h,0D6h,0C6h,000h ;m
        defb    000h,000h,0DCh,066h,066h,066h,066h,000h ;n
        defb    000h,000h,03Ch,066h,066h,066h,03Ch,000h ;o
        defb    000h,000h,0DCh,066h,066h,07Ch,060h,0F0h ;p
        defb    000h,000h,076h,0CCh,0CCh,07Ch,00Ch,01Eh ;q
        defb    000h,000h,0DCh,076h,060h,060h,0F0h,000h ;r
        defb    000h,000h,03Ch,060h,03Ch,006h,07Ch,000h ;s
        defb    030h,030h,07Ch,030h,030h,036h,01Ch,000h ;t
        defb    000h,000h,066h,066h,066h,066h,03Eh,000h ;u
        defb    000h,000h,066h,066h,066h,03Ch,018h,000h ;v
        defb    000h,000h,0C6h,0D6h,0D6h,0FEh,06Ch,000h ;w
        defb    000h,000h,0C6h,06Ch,038h,06Ch,0C6h,000h ;x
        defb    000h,000h,066h,066h,066h,03Eh,006h,07Ch ;y
        defb    000h,000h,07Eh,04Ch,018h,032h,07Eh,000h ;z
        defb    00Eh,018h,018h,070h,018h,018h,00Eh,000h ;{
        defb    018h,018h,018h,018h,018h,018h,018h,000h ;|
        defb    070h,018h,018h,00Eh,018h,018h,070h,000h ;}
        defb    076h,0DCh,000h,000h,000h,000h,000h,000h ;~
        defb    0CCh,033h,0CCh,033h,0CCh,033h,0CCh,033h ;<checker>
        defb    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh ;solid blob        128
        defb    0FFh,0FFh,0C0h,0C0h,0C0h,0C0h,0C0h,0C0h ;top left keyb box 129
        defb    0FFh,0FFh,000h,000h,000h,000h,000h,000h ;top of keyb box   130
        defb    0C0h,0C0h,0C0h,0C0h,0C0h,0C0h,0C0h,0C0h ;left keyb box     131
        defb    018h,03Ch,07Eh,0FFh,018h,018h,018h,018h ;up arrow          132
        defb    018h,018h,018h,018h,0FFh,07Eh,03Ch,018h ;down arrow        133
        defb    010h,030h,070h,0FFh,0FFh,070h,030h,010h ;left arrow        134
        defb    008h,00Ch,00Eh,0FFh,0FFh,00Eh,00Ch,008h ;right arrow       135
        defb    083h,0C3h,063h,033h,01Bh,00Fh,007h,003h ;down/vert envelop 136
        defb    080h,0C0h,060h,030h,018h,00Ch,006h,003h ;down envelop      137
        defb    003h,007h,00Fh,01Bh,033h,063h,0C3h,083h ;up/vert envelop   138
        defb    003h,006h,00Ch,018h,030h,060h,0C0h,080h ;up envelop        139
        defb    0FFh,000h,000h,000h,000h,000h,000h,000h ;top envelop       140


.Arnold5Key
                defb    0AAh,0          ;synchronise
                defb    0FFh,077h,0B3h,051h,0A8h,0D4h,062h,039h,09Ch,046h
                defb    02Bh,015h,08Ah,0CDh,0EEh,0FFh

.RetestMess
        defb    "    Press ",132," to re-run that test",0dh,0ah
        defb    "    Any other key to continue$"

.KeyTranslateTable
                defb    0,0,0,"963",0Dh,".",0,0,"785120",7,"[",0Dh,"]4" ;0..20
                defb    0,"\",0,"^-@P;:?.09OILKM,87UYHJN "      ;21..47
                defb    "65RTGFBV43EWSDCX12",0,"Q",9,"A",0,"Z",0,0,0,0,0,0,0,8

.RecognizableString
                defb    "This is a fairly recognizable string"
.LenRecogString equ     $ - .RecognizableString

.TestingBlockMess
                defb    "Currently testing RAM block xx of $"

.ModeMess
        defb    "This is MODE $"

.Mode0MaskTable
        defb    000h,0C0h,00Ch,0CCh
        defb    030h,0F0h,03Ch,0FCh
        defb    003h,0C3h,00Fh,0CFh
        defb    033h,0F3h,03Fh,0FFh

.Mode1MaskTable
        defb    000h,0F0h,00Fh,0FFh

.Mode2MaskTable
        defb    000h,0FFh

.ErrorMessageTable
        defb    "Processor ERROR - Test Failed$"        ;ERROR 1

        defb    "RAM ERROR on $"                        ;ERROR 2
                ;followed by "fill" / "wave up" / "wave down"
                ;followed by " - block="
                ;followed by var (block number)
                ;followed by "  offset="
                ;followed by var (offset)
                ;followed by "  bit="
                ;followed by var (fail bit)

        defb    "RAM Bank Switching ERROR$"             ;ERROR 3

        defb    "Frame Flyback ERROR",0dh,0ah,"$"       ;ERROR 4
                ;followed by "Signal permanently " / "Period incorrect"
                             ;followed by "low" / "high"

        defb    "Interrupt ERROR",0dh,0ah,"$"           ;ERROR 5
                ;followed by "No timer interrupt" /
                ;            "Period is too low" /
                ;            "Period is too high (INT may be stuck high)"

        defb    "Printer ERROR",0dh,0ah,0ah
        defb    "  BUSY signal permanently $"             ;ERROR 6
                ;followed by "high"/"low"

.LowMess
        defb    "low$"

.HighMess
        defb    "high$"

.RAMFillMess
        defb    "initial fill$"
.RAMWaveUpStoredMess
        defb    "wave up,",0dh,0ah
        defb    "  checking normal pattern$"
.RAMWaveUpInverseMess
        defb    "wave up,",0dh,0ah
        defb    "  checking inverse pattern$"
.RAMWaveDnInverseMess
        defb    "wave down,",0dh,0ah
        defb    "  checking inverse pattern$"
.RAMWaveDnStoredMess
        defb    "wave down,",0dh,0ah
        defb    "  checking normal pattern$"

.RAMBlockMess
        defb    0dh,0ah,"  Block = $"
.RAMOffsetMess
        defb    0dh,0ah,"  Offset = $"
.RAMBitMess
        defb    0dh,0ah,"  Failing Bit = $"

.FlybackLowMess
        defb    "Flyback Signal stuck low$"
.FlybackHighMess
        defb    "Flyback Signal stuck high$"
.FlybackActiveMess
        defb    "Active period is incorrect$"
.FlybackInactiveMess
        defb    "Inactive period is incorrect$"

.IntPeriodMess
        defb    "INT signal period is wrong$"
.IntNotThereMess
        defb    "No INT signal detected$"


.InitProcessorMessPt1
        defb    "Arnold 5 Diagnostic ROM Version $"
.InitProcessorMessPt2
        defb    "Processor test PASSED$"

.CrLfMess
        defb    0dh,0ah,"$"

.Arnold5ErrorMess
        defb    0dh,0ah,"Unable to disable new features !$"

.CheckSumMess
        defb    0dh,0ah,0ah,"ROM Checksum = $"

.LoopCountMess
        defb    "Loop Count = $"

.LoopLimitMess
        defb    "Loop Limit = $"

.FrameFlybackMess
        defb    "Testing Frame Flyback signal$"

.InterruptMess
        defb    "Testing Interrupt Signal$"

.PlayChannelAMess
        defb    "Note now playing on Sound Channel A",0dh,0ah,"$"
.PlayChannelBMess
        defb    "Note now playing on Sound Channel B",0dh,0ah,"$"
.PlayChannelCMess
        defb    "Note now playing on Sound Channel C",0dh,0ah,"$"
.PlayAnBMess
        defb    "Playing on channels A and B",0dh,0ah,"$"
.PlayAnCMess
        defb    "Playing on channels A and C",0dh,0ah,"$"
.PlayBnCMess
        defb    "Playing on channels B and C",0dh,0ah,"$"

.TestStereoMess
        defb    "Testing stereo by sweeping from A to C",0dh,0ah,"$"

.PlayAnBnCMess
        defb    "Playing on channels A B and C",0dh,0ah,"$"

.PlayEnvelopesMess
        defb    0dh,0ah,"Using Envelope 00 =       $"

.EnvelopeEqualMess
        defb    " = $"

.EnvelopeBackMess
        defb    bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,"$"

.EnvelopeShapeTable
        defb    136,136,136,136,136,136,"$$"    ;down/vert repeated
        defb    137,"_____$$"                   ;down then quiet
        defb    137,139,137,139,137,139,"$$"    ;down up repeated
        defb    136,140,140,140,140,140,"$$"    ;down/vert then stay up
        defb    138,138,138,138,138,138,"$$"    ;up/vert repeated
        defb    139,140,140,140,140,140,"$$"    ;up then stay up
        defb    139,137,139,137,139,137,"$$"    ;up down repeated
        defb    138,"_____$$"                   ;up/vert then stay down


.Pal27TestMess
        defb    "Use ",132," and ",133," to vary the background colour$"

.PalWhiteoutMess
        defb    "Use ",134," or ",135," to turn screen white$"

.Pal27Line1Mess
        defb    "Bright                          Bright          Bright",0dh,0ah
        defb    "    Black   Blue    Blue    Red     Magenta Mauve   Red     Purple  Magenta$"
.Pal27Line9Mess
        defb    "Sky                     Pastel                  Pastel",0dh,0ah
        defb    "    Green   Cyan    Blue    Yellow  White   Blue    Orange  Pink    Magenta$"
.Pal27Line17Mess
        defb    "Bright  Sea     Bright          Pastel  Pastel  Bright  Pastel  Bright",0dh,0ah
        defb    "    Green   Green   Cyan    Lime    Green   Cyan    Yellow  Yellow  White$"

.PalVector0to8
        defb    20,4,21,28,24,29,12,5,13
.PalVector9to11
        defb    22,6,23,30,0,31,14,7,15
.PalVector12to1A
        defb    18,2,19,26,25,27,10,3,11
        
.KeyTestLegend1
        defb    "Paddle 0                                        Paddle 1$"
.KeyTestLegend2
        defb    "CTRL + TAB$"
.KeyTestLegend3
        defb    "CTRL + ESC$"
.KeyTestLegend4
        defb    "or P + ",132," to restart$"
.KeyTestLegend5
        defb    "or P + ",133," to end$"

.KeyboardDiagTable
;
; For each of the 80 keys this shows the (x,y) coordinate position of the
; upper left corner and the text to be put in the middle. All keys are drawn
; as follows:
;
;       ------   so e.g. if TEXT=" A" ----  if TEXT="CAPSLK" --------
;       | TEXT                         |  A                    | CAPSLK
;       |                              |                       |
;
; Such keys when drawn together might give:
;
;       ------------------
;       | TEXT |  A | CAPSLK
;       |      |    |
;       ------------------
;       |  A | CAPSLK | TEXT
;       |    |        |
;
        db      64,9            ;(0) key position
        db      2               ;length of text
        db      " ",94          ;the text (space, up arrow)

        db      68,12,2," ",135 ;(1) actually right cursor
        db      64,12,2," ",133 ;(2) down cursor
        db      68,0,2,"F9"     ;(3)
        db      68,3,2,"F6"     ;(4)
        db      68,6,2,"F3"     ;(5)
        db      46,12,12,"    ENTER   "  ;(6)
        db      68,9,2," ."     ;(7)
        db      60,12,2," ",134 ;(8) left cursor
        db      7,12,4,"COPY"   ;(9)
        db      60,0,2,"F7"     ;(10)
        db      64,0,2,"F8"     ;(11)
        db      64,3,2,"F5"     ;(12)
        db      60,6,2,"F1"     ;(13)
        db      64,6,2,"F2"     ;(14)
        db      60,9,2,"F0"     ;(15)
        db      52,0,2,"CL"     ;(16)
        db      49,3,2," ["     ;(17)
        db      53,3,5," RETN"   ;(18)
        db      50,6,2," ]"     ;(19)
        db      60,3,2,"F4"     ;(20)
        db      0,9,5,"SHIFT"   ;(21)
        db      47,9,2," ",92    ;(22)
        db      0,12,5,"CTRL "  ;(23)
        db      48,0,2," ",132  ;(24) up arrow
        db      44,0,2," _"     ;(25)
        db      45,3,2," @"     ;(26)
        db      41,3,2," P"     ;(27)
        db      46,6,2," ;"     ;(28)
        db      42,6,2," :"     ;(29)
        db      43,9,2," /"     ;(30)
        db      39,9,2," ."     ;(31)
        db      40,0,2," 0"     ;(32)
        db      36,0,2," 9"     ;(33)
        db      37,3,2," O"     ;(34)
        db      33,3,2," I"     ;(35)
        db      38,6,2," L"     ;(36)
        db      34,6,2," K"     ;(37)
        db      31,9,2," M"     ;(38)
        db      35,9,2," ,"     ;(39)
        db      32,0,2," 8"     ;(40)
        db      28,0,2," 7"     ;(41)
        db      29,3,2," U"     ;(42)
        db      25,3,2," Y"     ;(43)
        db      26,6,2," H"     ;(44)
        db      30,6,2," J"     ;(45)
        db      27,9,2," N"     ;(46)
        db      13,12,31,"             SPACE             " ;(47)
        db      24,0,2," 6"     ;(48)
        db      20,0,2," 5"     ;(49)
        db      17,3,2," R"     ;(50)
        db      21,3,2," T"     ;(51)
        db      22,6,2," G"     ;(52)
        db      18,6,2," F"     ;(53)
        db      23,9,2," B"     ;(54)
        db      19,9,2," V"     ;(55)
        db      16,0,2," 4"     ;(56)
        db      12,0,2," 3"     ;(57)
        db      13,3,2," E"     ;(58)
        db      9,3,2," W"      ;(59)
        db      10,6,2," S"     ;(60)
        db      14,6,2," D"     ;(61)
        db      15,9,2," C"     ;(62)
        db      11,9,2," X"     ;(63)
        db      4,0,2," 1"      ;(64)
        db      8,0,2," 2"      ;(65)
        db      0,0,2,"ES"      ;(66)
        db      5,3,2," Q"      ;(67)
        db      0,3,3,"TAB"     ;(68)
        db      6,6,2," A"      ;(69)
        db      0,6,4,"CAPS"    ;(70)
        db      7,9,2," Z"      ;(71)

        db      4,16,2," ",132 ;(72) joystick up arrow
        db      4,22,2," ",133 ;(73) joystick down arrow
        db      0,19,2," ",134  ;(74) joystick left arrow
        db      8,19,2," ",135 ;(75) joystick right arrow
        db      14,19,2,"F1"    ;(76) joystick F2 (never used)
        db      20,19,2,"F2"    ;(77) joystick F1

        db      0,0,2,"EC"      ;(78) key never used (redraws ESC)

        db      56,0,2,"DL"     ;(79)

        db      51,9,7," SHIFT " ;(80) (really 21 the second time)
        db      54,6,4,"    "    ;(81) extra bit of RETN

        db      52,16,2," ",132 ;(82) joystick 1 up arrow
        db      52,22,2," ",133 ;(83) joystick 1 down arrow
        db      48,19,2," ",134  ;(84) joystick 1 left arrow
        db      56,19,2," ",135 ;(85) joystick 1 right arrow
        db      62,19,2,"F1"    ;(86) joystick 1 F2 (never used)
        db      68,19,2,"F2"    ;(87) joystick 1 F1

        db      4,19,2,"  "     ;(88) middle of paddle 0
        db      52,19,2,"  "    ;(89) middle of paddle 1


.OrionKeyDiag
        db      " CHANNEL 1",9,9,"     CHANNEL 2",0dh,0ah
        db      0ah
        db      9,"   Digital Joysticks",0dh,0ah
        db      9,"   =================",0dh,0ah
        db      0ah
        db      0ah
        db      0ah
        db      9,"   Analog Joysticks",0dh,0ah
        db      9,"   ================",0dh,0ah
        db      " X1 =        ",132," ",134,", Press F1   X2 = ",0dh,0ah
        db      " Y1 =        ",133," ",135,", Press F2   Y2 = ",0dh,0ah
        db      0ah
        db      9,"     Fire Buttons",0dh,0ah
        db      9,"     ============",0dh,0ah
        db      0ah
        db      0ah
        db      0ah
        db      9,"     Pause Key",0dh,0ah
        db      9,"     =========",0dh,0ah
        db      0ah
        db      0ah
        db      0ah
        db      "Press  ",133," and Pause (P)  or  ESC  to end."
        db      "$"

.OrionKeyTable
;
; Each entry is an XY co-ordinate followed by the address of a text message
;
        dw      00503h
        dw      .OUpMess

        dw      00703h
        dw      .ODnMess

        dw      00602h
        dw      .OLfMess

        dw      00604h
        dw      .ORtMess

        dw      00522h
        dw      .OupMess

        dw      00722h
        dw      .ODnMess

        dw      00621h
        dw      .OLfMess

        dw      00623h
        dw      .ORtMess

        dw      01102h
        dw      .OF1Mess

        dw      01108h
        dw      .OF2Mess

        dw      0111Bh
        dw      .OF1Mess

        dw      01121h
        dw      .OF2Mess

        dw      0160Fh
        dw      .OPsMess

.OUpMess
        defb    132,"$"

.ODnMess
        defb    133,"$"

.OLfMess
        defb    134,"$"

.ORtMess
        defb    135,"$"

.OF1Mess
        defb    "Fire1$"

.OF2Mess
        defb    "Fire2$"

.OPsMess
        defb    "PAUSE$"

.AnalogOKMess
        defb    "OK$"

.AnalogNGMess
        defb    "NG$"

.NotOKorNGMess
        defb    "  $"

.PrinterOFFMess
        defb    "Switch Printer OFF-Line then press",0dh,0ah
        defb    "any key - press ESC/FIRE to abandon.",0dh,0ah,0ah,"$"
.PrinterONMess
        defb    "Switch Printer ON-Line then press",0dh,0ah
        defb    "any key - press ESC/FIRE to abandon.",0dh,0ah,0ah,"$"

.TapeTestMess
        defb    "Play the test tape and adjust the head azimuth screw to get the best possible",0dh,0ah
        defb    "reading on the following graph (ESC/FIRE abandons test):",0dh,0ah
        defb    0ah
        defb    0ah
        defb    0ah
        defb    "|       |       |       |       |       |       |       |       |       |$"

.TapeSampleMess
        defb    "Sample rate =$"

.AnalogTestMess
        defb    "      Analogue Joystick Test",0dh,0ah
        defb    0dh,0ah
        defb    "The following display shows the values",0dh,0ah
        defb    "read from the analogue channels.",0dh,0ah,0ah

        defb    "Only Channels 0..3 are active (4..7 are",0dh,0ah
        defb    "tied). The range of values on channels",0dh,0ah
        defb    "0..3 should be 00 to 3F",0dh,0ah
        defb    0ah,0ah,"$"
.AnalogChannelMess
        defb    "Channel $"
.AnalogColonMess
        defb    " = $"

.Palette4096Mess
        defb    "Use ",134," and ",135," to vary the background",0dh,0ah
        defb    "Use ",132," and ",133," to vary the Green level =$"

.NoDiskControllerMess
        db      "There is no 765 disk controller fitted.",0dh,0ah,0ah
        db      "              Test Abandoned.$"

.SpriteTestMess
        db      9,"      SPRITES TEST       ",0dh,0ah
        db      9,"                         ",0dh,0ah
        db      9,"Use ",132," and ",133," to vary speed",0dh,0ah
        db      9,"                         ",0dh,0ah
        db      9,"Press ESC or FIRE to Exit$"

.SpriteSunDefinition
        defb    000h,000h,0FFh,0FFh,0FFh,0FFh,000h,000h
        defb    000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h
        defb    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
        defb    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
        defb    000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h
        defb    000h,000h,0FFh,0FFh,0FFh,0FFh,000h,000h

.SpriteMountainData
        defb    1,1,1,0,0,0,0,1,1,1,-1,1,-1,1,-1,-1,-1,0,0,0,-1,-1,-1
        defb    0,1,0,0,0,0,1,1,-1,-1,-1,0,1,1,-1,-1,1,-1

.SpritePalMess
        defb    9,"  SPRITE PALETTE TEST",0dh,0ah,0ah
        defb    "Use ",134," and ",135," to vary blue component =",0dh,0ah
        defb    "Use ",132," and ",133," to vary red component  =",0dh,0ah
        defb    "        Press ESC or FIRE to exit         $"

.SPritePalette
        defw    0004h,0040h,0400h,0444h,0007h,0070h,0700h,0777h
        defw    000Bh,00B0h,0B00h,0BBBh,000Fh,00F0h,0F00h,0FFFh

.SpriteDefinitions
;
; Sprite 0 consits of a background square of color 0 with a foreground digit
; defined in color F to look like a 0
;
        defb    000h,000h,000h,000h,000h,000h,000h,000h
        defb    000h,034h,056h,078h,09Ah,0BCh,000h,000h
        defb    002h,034h,056h,078h,09Ah,0BCh,0D0h,000h
        defb    012h,034h,000h,000h,000h,0BCh,0DEh,000h
        defb    012h,034h,000h,000h,00Ah,0BCh,0DEh,000h
        defb    012h,034h,000h,000h,09Ah,0BCh,0DEh,000h
        defb    012h,034h,000h,008h,09Ah,0BCh,0DEh,000h
        defb    012h,034h,000h,078h,090h,0BCh,0DEh,000h
        defb    012h,034h,006h,078h,000h,0BCh,0DEh,000h
        defb    012h,034h,056h,070h,000h,0BCh,0DEh,000h
        defb    012h,034h,056h,000h,000h,0BCh,0DEh,000h
        defb    012h,034h,040h,000h,000h,0BCh,0DEh,000h
        defb    012h,034h,000h,000h,000h,0BCh,0DEh,000h
        defb    002h,034h,056h,078h,09Ah,0BCh,0D0h,000h
        defb    000h,034h,056h,078h,09Ah,0BCh,000h,000h
        defb    000h,000h,000h,000h,000h,000h,000h,000h
;
; Sprite 1 consits of a background square of color 1 with a foreground digit
; defined in color E to look like a 1
;
        defb    011h,011h,011h,011h,011h,011h,011h,011h
        defb    011h,011h,011h,022h,022h,011h,011h,011h
        defb    011h,011h,013h,033h,033h,011h,011h,011h
        defb    011h,011h,044h,044h,044h,011h,011h,011h
        defb    011h,011h,055h,055h,055h,011h,011h,011h
        defb    011h,011h,011h,066h,066h,011h,011h,011h
        defb    011h,011h,011h,077h,077h,011h,011h,011h
        defb    011h,011h,011h,088h,088h,011h,011h,011h
        defb    011h,011h,011h,099h,099h,011h,011h,011h
        defb    011h,011h,011h,0AAh,0AAh,011h,011h,011h
        defb    011h,011h,011h,0BBh,0BBh,011h,011h,011h
        defb    011h,011h,011h,0CCh,0CCh,011h,011h,011h
        defb    011h,011h,011h,0DDh,0DDh,011h,011h,011h
        defb    011h,0EEh,0EEh,0EEh,0EEh,0EEh,0EEh,011h
        defb    011h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,011h
        defb    011h,011h,011h,011h,011h,011h,011h,011h
;
; Sprite 2 consits of a background square of color 2 with a foreground digit
; defined in color 0 to look like a 2
;
        defb    022h,022h,022h,022h,022h,022h,022h,022h
        defb    022h,022h,056h,078h,09Ah,0BCh,022h,022h
        defb    022h,024h,056h,078h,09Ah,0BCh,0D2h,022h
        defb    022h,034h,056h,078h,022h,0BCh,0DEh,022h
        defb    022h,034h,056h,022h,022h,0BCh,0DEh,022h
        defb    022h,022h,022h,022h,022h,0BCh,0DEh,022h
        defb    022h,022h,022h,022h,02Ah,0BCh,0DEh,022h
        defb    022h,022h,056h,078h,09Ah,0BCh,0D2h,022h
        defb    022h,024h,056h,078h,09Ah,0BCh,022h,022h
        defb    022h,034h,056h,072h,022h,022h,022h,022h
        defb    022h,034h,056h,022h,022h,022h,022h,022h
        defb    022h,034h,056h,022h,022h,0BCh,0DEh,022h
        defb    022h,034h,056h,022h,022h,0BCh,0DEh,022h
        defb    022h,034h,056h,078h,09Ah,0BCh,0DEh,022h
        defb    022h,034h,056h,078h,09Ah,0BCh,0DEh,022h
        defb    022h,022h,022h,022h,022h,022h,022h,022h
;
; Sprite 3 consits of a background square of color 3 with a foreground digit
; defined in color 0 to look like a 3
;
        defb    033h,033h,033h,033h,033h,033h,033h,033h
        defb    033h,033h,011h,011h,011h,011h,033h,033h
        defb    033h,032h,022h,022h,022h,022h,023h,033h
        defb    033h,044h,043h,033h,034h,044h,044h,033h
        defb    033h,055h,033h,033h,033h,055h,055h,033h
        defb    033h,033h,033h,033h,033h,066h,066h,033h
        defb    033h,033h,033h,033h,037h,077h,077h,033h
        defb    033h,033h,033h,088h,088h,088h,083h,033h
        defb    033h,033h,033h,099h,099h,099h,093h,033h
        defb    033h,033h,033h,033h,03Ah,0AAh,0AAh,033h
        defb    033h,033h,033h,033h,033h,0BBh,0BBh,033h
        defb    033h,0CCh,033h,033h,033h,0CCh,0CCh,033h
        defb    033h,0DDh,003h,033h,03Dh,0DDh,0DDh,033h
        defb    033h,03Eh,0EEh,0EEh,0EEh,0EEh,0E3h,033h
        defb    033h,033h,0FFh,0FFh,0FFh,0FFh,033h,033h
        defb    033h,033h,033h,033h,033h,033h,033h,033h
;
; Sprite 4 consits of a background square of color 4 with a foreground digit
; defined in color 0 to look like a 4
;
        defb    044h,044h,044h,044h,044h,044h,044h,044h
        defb    044h,044h,044h,098h,076h,044h,044h,044h
        defb    044h,044h,04Ah,098h,076h,044h,044h,044h
        defb    044h,044h,0BAh,098h,076h,044h,044h,044h
        defb    044h,04Ch,0BAh,098h,076h,044h,044h,044h
        defb    044h,0DCh,0B4h,098h,076h,044h,044h,044h
        defb    04Eh,0DCh,044h,098h,076h,044h,044h,044h
        defb    0FEh,0D4h,044h,098h,076h,044h,044h,044h
        defb    0FEh,044h,044h,098h,076h,044h,044h,044h
        defb    0FEh,0DCh,0BAh,098h,076h,053h,021h,044h
        defb    0FEh,0DCh,0BAh,098h,076h,053h,021h,044h
        defb    044h,044h,044h,098h,076h,044h,044h,044h
        defb    044h,044h,044h,098h,076h,044h,044h,044h
        defb    044h,044h,0BAh,098h,076h,053h,044h,044h
        defb    044h,044h,0BAh,098h,076h,053h,044h,044h
        defb    044h,044h,044h,044h,044h,044h,044h,044h
;
; Sprite 5 consits of a background square of color 5 with a foreground digit
; defined in color 0 to look like a 5
;
        defb    055h,055h,055h,055h,055h,055h,055h,055h
        defb    055h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,055h
        defb    055h,0EEh,0EEh,0EEh,0EEh,0EEh,0EEh,055h
        defb    055h,0DDh,0DDh,055h,055h,055h,0DDh,055h
        defb    055h,0CCh,0CCh,055h,055h,055h,0CCh,055h
        defb    055h,0BBh,0BBh,055h,055h,055h,055h,055h
        defb    055h,0AAh,0AAh,0A5h,055h,055h,055h,055h
        defb    055h,059h,099h,099h,099h,099h,055h,055h
        defb    055h,055h,088h,088h,088h,088h,085h,055h
        defb    055h,055h,055h,055h,057h,077h,077h,055h
        defb    055h,055h,055h,055h,055h,066h,066h,055h
        defb    055h,044h,044h,055h,055h,044h,044h,055h
        defb    055h,033h,033h,055h,055h,033h,033h,055h
        defb    055h,052h,022h,022h,022h,022h,025h,055h
        defb    055h,055h,011h,011h,011h,011h,055h,055h
        defb    055h,055h,055h,055h,055h,055h,055h,055h
;
; Sprite 6 consits of a background square of color 6 with a foreground digit
; defined in color 0 to look like a 6
;
       defb     066h,066h,066h,066h,066h,066h,066h,066h
       defb     066h,066h,0BAh,098h,075h,043h,066h,066h
       defb     066h,06Ch,0BAh,098h,075h,043h,026h,066h
       defb     066h,0DCh,0BAh,066h,066h,043h,021h,066h
       defb     066h,0DCh,0BAh,066h,066h,043h,021h,066h
       defb     066h,0DCh,0BAh,066h,066h,066h,066h,066h
       defb     066h,0DCh,0BAh,066h,066h,066h,066h,066h
       defb     066h,0DCh,0BAh,098h,075h,043h,066h,066h
       defb     066h,0DCh,0BAh,098h,075h,043h,026h,066h
       defb     066h,0DCh,0BAh,066h,066h,043h,021h,066h
       defb     066h,0DCh,0BAh,066h,066h,043h,021h,066h
       defb     066h,0DCh,0BAh,066h,066h,043h,021h,066h
       defb     066h,0DCh,0BAh,066h,066h,043h,021h,066h
       defb     066h,06Ch,0BAh,098h,075h,043h,026h,066h
       defb     066h,066h,0BAh,098h,075h,043h,066h,066h
       defb     066h,066h,066h,066h,066h,066h,066h,066h
;
; Sprite 7 consits of a background square of color 7 with a foreground digit
; defined in color 0 to look like a 7
;
        defb    077h,077h,077h,077h,077h,077h,077h,077h
        defb    077h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,077h
        defb    077h,0EEh,0EEh,0EEh,0EEh,0EEh,0EEh,077h
        defb    077h,0DDh,077h,077h,077h,0DDh,0DDh,077h
        defb    077h,0CCh,077h,077h,077h,0CCh,0CCh,077h
        defb    077h,077h,077h,077h,077h,0BBh,0BBh,077h
        defb    077h,077h,077h,077h,070h,0AAh,0AAh,077h
        defb    077h,077h,077h,077h,099h,099h,097h,077h
        defb    077h,077h,077h,078h,088h,088h,077h,077h
        defb    077h,077h,077h,066h,066h,007h,077h,077h
        defb    077h,077h,077h,055h,055h,077h,077h,077h
        defb    077h,077h,077h,044h,044h,077h,077h,077h
        defb    077h,077h,077h,033h,033h,077h,077h,077h
        defb    077h,077h,077h,022h,022h,077h,077h,077h
        defb    077h,077h,077h,011h,011h,077h,077h,077h
        defb    077h,077h,077h,077h,077h,077h,077h,077h
;
; Sprite 8 consits of a background square of color 8 with a foreground digit
; defined in color 3 to look like a 8
;
        defb    088h,088h,088h,088h,088h,088h,088h,088h
        defb    088h,088h,045h,067h,09Ah,0BCh,088h,088h
        defb    088h,083h,045h,067h,09Ah,0BCh,0D8h,088h
        defb    088h,023h,045h,088h,088h,0BCh,0DEh,088h
        defb    088h,023h,045h,088h,088h,0BCh,0DEh,088h
        defb    088h,023h,045h,088h,088h,0BCh,0DEh,088h
        defb    088h,023h,045h,088h,088h,0BCh,0DEh,088h
        defb    088h,083h,045h,067h,09Ah,0BCh,0D8h,088h
        defb    088h,083h,045h,067h,09Ah,0BCh,0D8h,088h
        defb    088h,023h,045h,088h,088h,0BCh,0DEh,088h
        defb    088h,023h,045h,088h,088h,0BCh,0DEh,088h
        defb    088h,023h,045h,088h,088h,0BCh,0DEh,088h
        defb    088h,023h,045h,088h,088h,0BCh,0DEh,088h
        defb    088h,083h,045h,067h,09Ah,0BCh,0D8h,088h
        defb    088h,088h,045h,067h,09Ah,0BCh,088h,088h
        defb    088h,088h,088h,088h,088h,088h,088h,088h
;
; Sprite 9 consits of a background square of color 9 with a foreground digit
; defined in color 0 to look like a 9
;
        defb    099h,099h,099h,099h,099h,099h,099h,099h
        defb    099h,099h,011h,011h,011h,011h,099h,099h
        defb    099h,092h,022h,022h,022h,022h,029h,099h
        defb    099h,033h,033h,099h,099h,033h,033h,099h
        defb    099h,044h,044h,099h,099h,044h,044h,099h
        defb    099h,055h,055h,099h,099h,055h,055h,099h
        defb    099h,066h,066h,099h,099h,066h,066h,099h
        defb    099h,097h,077h,077h,077h,077h,077h,099h
        defb    099h,099h,088h,088h,088h,088h,088h,099h
        defb    099h,099h,099h,099h,099h,0AAh,0AAh,099h
        defb    099h,099h,099h,099h,099h,0BBh,0BBh,099h
        defb    099h,0CCh,0CCh,099h,099h,0CCh,0CCh,099h
        defb    099h,0DDh,0DDh,099h,099h,0DDh,0DDh,099h
        defb    099h,09Eh,0EEh,0EEh,0EEh,0EEh,0E9h,099h
        defb    099h,099h,0FFh,0FFh,0FFh,0FFh,099h,099h
        defb    099h,099h,099h,099h,099h,099h,099h,099h
;
; Sprite A consits of a background square of color A with a foreground digit
; defined in color 0 to look like a A
;
        defb    0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
        defb    0AAh,0AAh,0AAh,067h,089h,0AAh,0AAh,0AAh
        defb    0AAh,0AAh,0A5h,067h,089h,0BAh,0AAh,0AAh
        defb    0AAh,0AAh,045h,067h,089h,0BCh,0AAh,0AAh
        defb    0AAh,0A3h,045h,067h,089h,0BCh,0DAh,0AAh
        defb    0AAh,023h,045h,0AAh,0AAh,0BCh,0DEh,0AAh
        defb    0AAh,023h,045h,0AAh,0AAh,0BCh,0DEh,0AAh
        defb    0AAh,023h,045h,0AAh,0AAh,0BCh,0DEh,0AAh
        defb    0AAh,023h,045h,0AAh,0AAh,0BCh,0DEh,0AAh
        defb    0AAh,023h,045h,067h,089h,0BCh,0DEh,0AAh
        defb    0AAh,023h,045h,067h,089h,0BCh,0DEh,0AAh
        defb    0AAh,023h,045h,0AAh,0AAh,0BCh,0DEh,0AAh
        defb    0AAh,023h,045h,0AAh,0AAh,0BCh,0DEh,0AAh
        defb    0AAh,023h,045h,0AAh,0AAh,0BCh,0DEh,0AAh
        defb    0AAh,023h,045h,0AAh,0AAh,0BCh,0DEh,0AAh
        defb    0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
;
; Sprite B consits of a background square of color B with a foreground digit
; defined in color 0 to look like a B
;
        defb    0BBh,0BBh,0BBh,0BBh,0BBh,0BBh,0BBh,0BBh
        defb    011h,011h,011h,011h,011h,011h,0BBh,0BBh
        defb    022h,022h,022h,022h,022h,022h,02Bh,0BBh
        defb    0BBh,033h,033h,0BBh,0BBh,033h,033h,0BBh
        defb    0BBh,044h,044h,0BBh,0BBh,044h,044h,0BBh
        defb    0BBh,055h,055h,0BBh,0BBh,055h,055h,0BBh
        defb    0BBh,066h,066h,0BBh,0BBh,066h,066h,0BBh
        defb    0BBh,077h,077h,077h,077h,077h,07Bh,0BBh
        defb    0BBh,088h,088h,088h,088h,088h,08Bh,0BBh
        defb    0BBh,099h,099h,0BBh,0BBh,099h,099h,0BBh
        defb    0BBh,0AAh,0AAh,0BBh,0BBh,0AAh,0AAh,0BBh
        defb    0BBh,0CCh,0CCh,0BBh,0BBh,0CCh,0CCh,0BBh
        defb    0BBh,0DDh,0DDh,0BBh,0BBh,0DDh,0DDh,0BBh
        defb    0EEh,0EEh,0EEh,0EEh,0EEh,0EEh,0EBh,0BBh
        defb    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0BBh,0BBh
        defb    0BBh,0BBh,0BBh,0BBh,0BBh,0BBh,0BBh,0BBh
;
; Sprite C consits of a background square of color C with a foreground digit
; defined in color 0 to look like a C
;
        defb    0CCh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh
        defb    0CCh,0CCh,0A9h,087h,065h,043h,0CCh,0CCh
        defb    0CCh,0CBh,0A9h,087h,065h,043h,02Ch,0CCh
        defb    0CCh,0DBh,0A9h,08Ch,0C5h,043h,021h,0CCh
        defb    0CEh,0DBh,0A9h,0CCh,0CCh,043h,021h,0CCh
        defb    0FEh,0DBh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh
        defb    0FEh,0DBh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh
        defb    0FEh,0DBh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh
        defb    0FEh,0DBh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh
        defb    0FEh,0DBh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh
        defb    0FEh,0DBh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh
        defb    0CEh,0DBh,0A9h,0CCh,0CCh,043h,021h,0CCh
        defb    0CCh,0DBh,0A9h,08Ch,0C5h,043h,021h,0CCh
        defb    0CCh,0CBh,0A9h,087h,065h,043h,02Ch,0CCh
        defb    0CCh,0CCh,0A9h,087h,065h,043h,0CCh,0CCh
        defb    0CCh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh
;
; Sprite D consits of a background square of color D with a foreground digit
; defined in color 0 to look like a D
;
        defb    0DDh,0DDh,0DDh,0DDh,0DDh,0DDh,0DDh,0DDh
        defb    0FFh,0FFh,0FFh,0FFh,0FFh,0DDh,0DDh,0DDh
        defb    0EEh,0EEh,0EEh,0EEh,0EEh,0EDh,0DDh,0DDh
        defb    0DDh,0CCh,0CCh,0DCh,0CCh,0CCh,0DDh,0DDh
        defb    0DDh,0BBh,0BBh,0DDh,0BBh,0BBh,0BDh,0DDh
        defb    0DDh,0AAh,0AAh,0DDh,0DDh,0AAh,0AAh,0DDh
        defb    0DDh,099h,099h,0DDh,0DDh,099h,099h,0DDh
        defb    0DDh,088h,088h,0DDh,0DDh,088h,088h,0DDh
        defb    0DDh,077h,077h,0DDh,0DDh,077h,077h,0DDh
        defb    0DDh,066h,066h,0DDh,0DDh,066h,066h,0DDh
        defb    0DDh,055h,055h,0DDh,0DDh,055h,055h,0DDh
        defb    0DDh,044h,044h,0DDh,044h,044h,04Dh,0DDh
        defb    0DDh,033h,033h,0D3h,033h,033h,0DDh,0DDh
        defb    022h,022h,022h,022h,022h,02Dh,0DDh,0DDh
        defb    011h,011h,011h,011h,011h,0DDh,0DDh,0DDh
        defb    0DDh,0DDh,0DDh,0DDh,0DDh,0DDh,0DDh,0DDh
;
; Sprite E consits of a background square of color 0 with a foreground digit
; defined in color 0 to look like a 0
;
        defb    0EEh,0EEh,0EEh,0EEh,0EEh,0EEh,0EEh,0EEh
        defb    0FDh,0CBh,0A9h,087h,065h,043h,021h,0EEh
        defb    0FDh,0CBh,0A9h,087h,065h,043h,021h,0EEh
        defb    0EEh,0CBh,0A9h,0EEh,0EEh,0EEh,021h,0EEh
        defb    0EEh,0CBh,0A9h,0EEh,0EEh,0EEh,021h,0EEh
        defb    0EEh,0CBh,0A9h,0EEh,065h,0EEh,0EEh,0EEh
        defb    0EEh,0CBh,0A9h,0EEh,065h,0EEh,0EEh,0EEh
        defb    0EEh,0CBh,0A9h,087h,065h,0EEh,0EEh,0EEh
        defb    0EEh,0CBh,0A9h,087h,065h,0EEh,0EEh,0EEh
        defb    0EEh,0CBh,0A9h,0EEh,065h,0EEh,0EEh,0EEh
        defb    0EEh,0CBh,0A9h,0EEh,065h,0EEh,0EEh,0EEh
        defb    0EEh,0CBh,0A9h,0EEh,0EEh,0EEh,021h,0EEh
        defb    0EEh,0CBh,0A9h,0EEh,0EEh,0EEh,021h,0EEh
        defb    0FDh,0CBh,0A9h,087h,065h,043h,021h,0EEh
        defb    0FDh,0CBh,0A9h,087h,065h,043h,021h,0EEh
        defb    0EEh,0EEh,0EEh,0EEh,0EEh,0EEh,0EEh,0EEh
;
; Sprite F consits of a background square of color F with a foreground digit
; defined in color 0 to look like a F
;
        defb    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
        defb    000h,0EEh,0EEh,0EEh,0EEh,0EEh,0EEh,0FFh
        defb    000h,0DDh,0DDh,0DDh,0DDh,0DDh,0DDh,0FFh
        defb    0FFh,0CCh,0CCh,0FFh,0FFh,0FFh,0CCh,0FFh
        defb    0FFh,0BBh,0BBh,0FFh,0FFh,0FFh,0BBh,0FFh
        defb    0FFh,0AAh,0AAh,0FFh,0AAh,0FFh,0FFh,0FFh
        defb    0FFh,099h,099h,0FFh,099h,0FFh,0FFh,0FFh
        defb    0FFh,088h,088h,088h,088h,0FFh,0FFh,0FFh
        defb    0FFh,077h,077h,077h,077h,0FFh,0FFh,0FFh
        defb    0FFh,066h,066h,0FFh,066h,0FFh,0FFh,0FFh
        defb    0FFh,055h,055h,0FFh,055h,0FFh,0FFh,0FFh
        defb    0FFh,044h,044h,0FFh,0FFh,0FFh,0FFh,0FFh
        defb    0FFh,033h,033h,0FFh,0FFh,0FFh,0FFh,0FFh
        defb    022h,022h,022h,022h,0FFh,0FFh,0FFh,0FFh
        defb    011h,011h,011h,011h,0FFh,0FFh,0FFh,0FFh
        defb    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh

.SpritePalDefinitions
;
; used in sprite palette test, only 0 and 1 are defined (see comments in
; SPRITPAL).
;
        defb    000h,000h,000h,000h,011h,011h,011h,011h
        defb    000h,000h,000h,000h,011h,011h,011h,011h
        defb    000h,000h,000h,000h,011h,011h,011h,011h
        defb    000h,000h,000h,000h,011h,011h,011h,011h
        defb    044h,044h,044h,044h,055h,055h,055h,055h
        defb    044h,044h,044h,044h,055h,055h,055h,055h
        defb    044h,044h,044h,044h,055h,055h,055h,055h
        defb    044h,044h,044h,044h,055h,055h,055h,055h
        defb    088h,088h,088h,088h,099h,099h,099h,099h
        defb    088h,088h,088h,088h,099h,099h,099h,099h
        defb    088h,088h,088h,088h,099h,099h,099h,099h
        defb    088h,088h,088h,088h,099h,099h,099h,099h
        defb    0CCh,0CCh,0CCh,0CCh,0DDh,0DDh,0DDh,0DDh
        defb    0CCh,0CCh,0CCh,0CCh,0DDh,0DDh,0DDh,0DDh
        defb    0CCh,0CCh,0CCh,0CCh,0DDh,0DDh,0DDh,0DDh
        defb    0CCh,0CCh,0CCh,0CCh,0DDh,0DDh,0DDh,0DDh

        defb    022h,022h,022h,022h,033h,033h,033h,033h
        defb    022h,022h,022h,022h,033h,033h,033h,033h    
        defb    022h,022h,022h,022h,033h,033h,033h,033h    
        defb    022h,022h,022h,022h,033h,033h,033h,033h
        defb    066h,066h,066h,066h,077h,077h,077h,077h
        defb    066h,066h,066h,066h,077h,077h,077h,077h    
        defb    066h,066h,066h,066h,077h,077h,077h,077h    
        defb    066h,066h,066h,066h,077h,077h,077h,077h
        defb    0AAh,0AAh,0AAh,0AAh,0BBh,0BBh,0BBh,0BBh
        defb    0AAh,0AAh,0AAh,0AAh,0BBh,0BBh,0BBh,0BBh    
        defb    0AAh,0AAh,0AAh,0AAh,0BBh,0BBh,0BBh,0BBh    
        defb    0AAh,0AAh,0AAh,0AAh,0BBh,0BBh,0BBh,0BBh
        defb    0EEh,0EEh,0EEh,0EEh,0FFh,0FFh,0FFh,0FFh
        defb    0EEh,0EEh,0EEh,0EEh,0FFh,0FFh,0FFh,0FFh    
        defb    0EEh,0EEh,0EEh,0EEh,0FFh,0FFh,0FFh,0FFh    
        defb    0EEh,0EEh,0EEh,0EEh,0FFh,0FFh,0FFh,0FFh    

.SpriteStartPositions
        defw    32,0                   ;sprite 0
        defw    160,0                  ;sprite 1
        defw    288,0                  ;sprite 2
        defw    416,0                  ;sprite 3
        defw    544,0                  ;sprite 4
        defw    544,36                  ;sprite 5
        defw    544,72                  ;sprite 6
        defw    544,108                 ;sprite 7
        defw    544,144                 ;sprite 8
        defw    416,144                 ;sprite 9
        defw    288,144                 ;sprite A
        defw    160,144                 ;sprite B
        defw    32,144                  ;sprite C
        defw    32,108                  ;sprite D
        defw    32,72                   ;sprite E
        defw    32,36                   ;sprite F

        defw    32,16                   ;sprite 0
        defw    160,16                  ;sprite 1
        defw    288,16                  ;sprite 2
        defw    416,16                  ;sprite 3
        defw    544,16                  ;sprite 4
        defw    544,48                  ;sprite 5
        defw    544,80                  ;sprite 6
        defw    544,112                 ;sprite 7
        defw    544,144                 ;sprite 8
        defw    416,144                 ;sprite 9
        defw    288,144                 ;sprite A
        defw    160,144                 ;sprite B
        defw    32,144                  ;sprite C
        defw    32,112                  ;sprite D
        defw    32,80                   ;sprite E
        defw    32,48                   ;sprite F

.SpriteEndPositions:
        defw    0,0                     ;sprite 0
        defw    128,0                    ;sprite 1
        defw    256,0                   ;sprite 2
        defw    384,0                   ;sprite 3
        defw    0,48                    ;sprite 4
        defw    128,48                   ;sprite 5
        defw    256,48                  ;sprite 6
        defw    384,48                  ;sprite 7
        defw    0,96                    ;sprite 8
        defw    128,96                   ;sprite 9
        defw    256,96                  ;sprite A
        defw    384,96                  ;sprite B
        defw    0,144                   ;sprite C
        defw    128,144                  ;sprite D
        defw    256,144                 ;sprite E
        defw    384,144                 ;sprite F


.SpriteMoveVectors
;
; These are the offsets to X and Y that are incrementally added to the sprite
; positions to make them move.
;
        defb    4,0                     ; 1 sprite 0 start  off= 0
        defb    4,0                     ; 2 sprite 1 start  off= 2
        defb    4,0                     ; 3 sprite 2 start  off= 4
        defb    4,0                     ; 4 sprite 3 start  off= 6
        defb    4,0                     ; 5                 off= 8
        defb    -4,0                    ; 6                 off= A
        defb    0,1                     ; 7 sprite 4 start  off= C
        defb    0,1                     ; 8 sprite 5 start  off= E
        defb    0,1                     ; 9 sprite 6 start  off=10
        defb    0,1                     ; A sprite 7 start  off=12
        defb    0,1                     ; B                 off=14
        defb    0,1                     ; C                 off=16
        defb    0,-1                    ; D                 off=18
        defb    0,-1                    ; E                 off=1A
        defb    -4,0                    ; F sprite 8 start  off=1C
        defb    -4,0                    ;10 sprite 9 start  off=1E
        defb    -4,0                    ;11 sprite A start  off=20
        defb    -4,0                    ;12 sprite B start  off=22
        defb    -4,0                    ;13                 off=24
        defb    4,0                     ;14                 off=26
        defb    0,-1                    ;15 sprite C start  off=28
        defb    0,-1                    ;16 sprite D start  off=2A
        defb    0,-1                    ;17 sprite E start  off=2C
        defb    0,-1                    ;18 sprite F start  off=2E
        defb    0,-1                    ;19
        defb    0,-1                    ;1A
        defb    0,1                     ;1B
        defb    0,1                     ;1C
        defb    -1                      ;end of table mark to allow easy wraps

.SpriteMoveStarts
;
; These are offsets into the above table to determine where each sprite starts
;
        defb    00h,02h,04h,06h, 0Ch,0Eh,10h,12h
        defb    1Ch,1Eh,20h,22h, 28h,2Ah,2Ch,2Eh

.RasterRainbow
        db      12,14,10,18,21,24,13,20

.SoundInstructions
        defb    "A tune will now begin to play in the",0dh,0ah
        defb    "background using the Sound DMA feature",0dh,0ah
        defb    "to program data into the sound chip. In",0dh,0ah
        defb    "the meantime the Keyboard test will be",0dh,0ah
        defb    "run to make sure that the two do not",0dh,0ah
        defb    "interact. When you end the keyboard",0dh,0ah
        defb    "test the sound will also be turned off",0dh,0ah,0ah
        defb    "Press any key to continue.$"

.OrionKeyMess
        defb    "Press any key to continue$"


.OrnSoundPlayingLeft
        defb    "Note playing on Left Channel$"

.OrnSoundPlayingRight
        defb    "Note playing on Right Channel$"

.OrnSoundPlayingBoth
        defb    "Note playing on Middle Channel$"

        END
