Hello world syntax problems

Ask anything your want about Megadrive/Genesis programming.

Moderator: BigEvilCorporation

Munkyears
Very interested
Posts: 54
Joined: Sat Mar 21, 2009 4:24 pm
Location: Sheffield, England

Post by Munkyears »

Thanks for the quick reply,

Is the entire alphabet included or only the ones used by Sega, for instance when i did some programming for cheap japanese handheld ports, they only included letters used,

A E I O U 1 2 3 4 5 6 7 8 9 0
N M . , :

That was the format for the file.

Edit "E" in twice XD
To be this good takes ages, To be this good takes Stef, Kanedafr, ChillyWilly & everyone who has helped me discover what hardwork is!

Dive into the SpritesMind! :)
plee
Very interested
Posts: 66
Joined: Wed Nov 29, 2006 11:32 am
Location: Houston, Texas

Post by plee »

Munkyears wrote:Thanks for the quick reply,

Is the entire alphabet included or only the ones used by Sega, for instance when i did some programming for cheap japanese handheld ports, they only included letters used,

A E I O U 1 2 3 4 5 6 7 8 9 0
N M . , :

That was the format for the file.

Edit "E" in twice XD
You have to the font data (tiles basically) defined in your program. I some simple demos (many moons ago for SCC), you might do a search for them the show how to print something out. It's in C but I think you will see what to do pretty easily.
RamiroR
Interested
Posts: 18
Joined: Tue Jun 02, 2009 10:45 pm

Post by RamiroR »

i don't really know what you are trying to do, so i'll write some code.

Main:
move.w ($C00004),d7
btst #3, d7 ; during Vblank?
beq Main ; If not
Print:
lea (Font_tiles),a0
move.w $,($C00004)
move.l #$40200000,($c00004) ; tells the vdp where to put the fonts(meaning on VRAM)
move.w #$8F02,($c00004) ; for you not to have to setup the control port at every MOVE)
move.w $X, d0 ;( X = the numbers of WORDs to be transfered(minus 1)
Transf:
move.w (a0)+,($c00004)
dbf d0, Transf
lea (Str),a0
lea ($FF0000),a1
move ((Str_end-Str)/2)-1,d0 ; i dunno if this is right, oh well...
StrtoRAM:
sub.b $60,(a0)
move.w (a0)+,(a1)+
dbf d0,StrtoRAM
;and after moooore code:
rts
Str: db "The text you wanna show"
Str_end:


whoops, i had to go, code to be continued :P

well,code not finished, do you want the text on the background or as sprites(say background PLEASE)


lol, this code must be really buggy, i dunno
HardWareMan
Very interested
Posts: 753
Joined: Sat Dec 15, 2007 7:49 am

Post by HardWareMan »

My turn. Here is my very early code of OS that was saved. There no PS/2 procedures (PS2 keyboard was attached to Control Port 2) and ATA/ATAPI stuff (for that board with HDD). But it contains print, input and command buffer parse procedures.
PS Russian comments there. I'm too lazy to translate they to english. Sorry.

Code: Select all

*	org	$400000
*Заголовок
        dc.l $FFFFFC,START,Dead,Dead,Dead,Dead,Dead,Dead
        dc.l Dead,Dead,Dead,Dead,Dead,Dead,Dead,Dead
        dc.l Dead,Dead,Dead,Dead,Dead,Dead,Dead,Dead
        dc.l Dead,Dead,Dead,Dead,Dead,Dead,Dead,Dead
        dc.l Dead,Dead,Dead,Dead,Dead,Dead,Dead,Dead
        dc.l Dead,Dead,Dead,Dead,Dead,Dead,Dead,Dead
        dc.l Dead,Dead,Dead,Dead,Dead,Dead,Dead,Dead
        dc.l Dead,Dead,Dead,Dead,Dead,Dead,Dead,Dead
        dc.b 'SEGA GENESIS   (C)SEGA 2006 JUNE'
        dc.b 'SEGA DOS                      (C) HardWareMan   '
        dc.b 'SEGA DOS                      (C) HardWareMan   '
        dc.b 'GM 00000000-00',$a5,$fb
        dc.b 'JD              ',$00,$00,$00,$00,$00,$02,$00,$00
        dc.b $00,$ff,$00,$00,$ff,$ff,$ff,$ff,'               '
        dc.b '                        '
        dc.b '                         '
        dc.b 'JUE             '

*"Заглушка" на неиспользуемые прерывания
Dead:	rte
**=====================================================================
*Системные переменные
*Переменные курсора
CurrCurY	equ   $FF0000
CurrCurX	equ   CurrCurY+1
*Размер экрана в символах
ScrSizeY	equ   CurrCurX+1
ScrSizeX	equ   ScrSizeY+1
*Переменные для ввода
Joystik		equ   ScrSizeX+1
OldState	equ   Joystik+2
*Буфер сканкодов (16 байт)
ScanTail	equ   OldState+2
ScanCode	equ   ScanTail+4
*Буфер ввода (2..32)
InpBufAdr	equ   ScanCode+32
*Маски управления
JoyCursor        equ   $000F
JoyABCS          equ   $00F0
JoyXYZM          equ   $0F00
JoyUp            equ   $0001
JoyDown          equ   $0002
JoyLeft          equ   $0004
JoyRight         equ   $0008
JoyA             equ   $0040
JoyB             equ   $0010
JoyC             equ   $0020
JoyStart         equ   $0080
JoyX             equ   $0400
JoyY             equ   $0200
JoyZ             equ   $0100
JoyMode          equ   $0800
*======================================================================
*Системные подпрограммы
*Стирание экрана 40x25
ClearScreen:
        suba     #4,sp
        move.l   d0,(sp)
        move.l   #$40000003,$c00004     ;Запись символа в область #C000
        move.l   #64*30-1,d0            ;Размер экрана
ClearLoop:
        move.w   #$8020,$c00000         ;Цикл стирания
        dbra     d0,ClearLoop
        move.w   #0,CurrCurY
        move.w   #$1C28,ScrSizeY
        move.l   (sp),d0
        adda     #4,sp
        rts
*Скроллинг вверх на одну строку
ScrollUp:
        suba     #4,sp
        move.l   d0,(sp)
        suba     #4,sp
        move.l   d1,(sp)
        suba     #4,sp
        move.l   d2,(sp)
        suba     #4,sp
        move.l   d3,(sp)
        move.l   #$40000003,d0
        move.l   #$00800003,d1
        move.l   #64*28-1,d2
ScrollLoop:
        move.l   d1,$C00004
        move.w   $C00000,d3
        or.w     #$8000,d3
        move.l   d0,$C00004
        move.w   d3,$C00000
        add.l    #$20000,d0
        add.l    #$20000,d1
        dbra     d2,ScrollLoop
        move.l   (sp),d3
        adda     #4,sp
        move.l   (sp),d2
        adda     #4,sp
        move.l   (sp),d1
        adda     #4,sp
        move.l   (sp),d0
        adda     #4,sp
        rts
*Печать символа
*[D0] => LBYTE - Символ
OutSymbol:
        suba     #4,sp
        move.l   d2,(sp)
        suba     #4,sp
        move.l   d1,(sp)
        suba     #4,sp
        move.l   d0,(sp)
        suba     #4,sp
        move.l   a0,(sp)
        and.l    #$0000FF,d0
        cmp.b    #$1F,d0
        bls      OutControl
        move.l   #0,d1
        move.w   CurrCurY,d2
        and.l    #$FF00,d2
        ror.w    #2,d2
        add.l    d2,d1
        move.w   CurrCurY,d2
        and.l    #$00FF,d2
        add.w    d2,d1
        rol.l    #8,d1
        rol.l    #8,d1
        rol.l    #1,d1
        or.l     #$40000003,d1
        move.l   d1,$C00004
        or.w     #$8000,d0
        move.w   d0,$C00000
        bra      OutRight
OutControl:
        cmp.b    #$08,d0
        bne      Out0A
OutLeft:
        cmp.b    #0,CurrCurX
        beq      OutLft
        sub.b    #1,CurrCurX
        bra      OutEnd
OutLft: move.b   ScrSizeX,d0
        sub.b    #1,d0
        move.b   d0,CurrCurX
        cmp.b    #0,CurrCurY
        beq      OutEnd
        sub.b    #1,CurrCurY
        bra      OutEnd
Out0A:  cmp.b    #$0A,d0
        bne      Out0D
        bra      OutDown
Out0D:  cmp.b    #$0D,d0
        bne      Out18
        move.w   CurrCurY,d0
        and.w    #$FF00,d0
        move.w   d0,CurrCurY
        bra      OutEnd
Out18:  cmp.b    #$18,d0
        bne      Out19
OutRight:
        add.b    #1,$FF0001
        move.b   ScrSizeX,d0
        cmp.b    CurrCurX,d0
        bgt      OutRigCon
        move.b   #0,CurrCurX
        bra      OutDown
OutRigCon:
        bra      OutEnd
Out19:  nop
Out1A:  cmp.b    #$1A,d0
        bne      OutEnd
OutDown:
        add.b    #1,CurrCurY
        move.b   ScrSizeY,d0
        cmp.b    CurrCurY,d0
        bgt      OutEnd
        sub.b    #1,CurrCurY
        jsr      ScrollUp
        bra      OutEnd
OutEnd:
        move.l   (sp),a0
        adda     #4,sp
        move.l   (sp),d0
        adda     #4,sp
        move.l   (sp),d1
        adda     #4,sp
        move.l   (sp),d2
        adda     #4,sp
        rts
*Печать строки до 0;
*(A0) - строка.
PrintString:
        suba     #4,sp
        move.l   d0,(sp)
        suba     #4,sp
        move.l   a0,(sp)
PrintLoop:
        move.l   #0,d0
        move.b   (a0)+,d0
        cmp.b    #0,d0
        beq      PrintEnd
        jsr      OutSymbol
        bra      PrintLoop
PrintEnd: 
        move.l   (sp),a0
        adda     #4,sp
        move.l   (sp),d0
        adda     #4,sp
        rts
*Печать HEX байта [d0]
OutHexByte:
        suba     #4,sp
        move.l   d0,(sp)
        suba     #4,sp
        move.l   d1,(sp)
        move.l   d0,d1
        ror.l    #4,d0
        and.l    #15,d0
        cmp.b    #10,d0
        blt      SkipHi
        add.b    #7,d0
SkipHi: add.b    #$30,d0
        jsr      OutSymbol
        move.l   d1,d0
        and.l    #15,d0
        cmp.b    #10,d0
        blt      SkipLo
        add.b    #7,d0
SkipLo: add.b    #$30,d0
        jsr      OutSymbol
        move.l   (sp),d1
        adda     #4,sp
        move.l   (sp),d0
        adda     #4,sp
        rts
*Печать HEX слова
OutHexWord:
        suba     #4,sp
        move.l   d0,(sp)
        ror.l    #8,d0
        jsr      OutHexByte
        move.l   (sp),d0
        adda     #4,sp
        jsr      OutHexByte
        rts
*Печать HEX двойного слова
OutHexLong:
        suba     #4,sp
        move.l   d0,(sp)
        ror.l    #8,d0
        ror.l    #8,d0
        jsr      OutHexWord
        move.l   (sp),d0
        adda     #4,sp
        jsr      OutHexWord
        rts
*Печать HEX адреса
OutHexAddr:
        suba     #4,sp
        move.l   d0,(sp)
        ror.l    #8,d0
        ror.l    #8,d0
        jsr      OutHexByte
        move.l   (sp),d0
        adda     #4,sp
        jsr      OutHexWord
        rts
*Ввод сканкода. [d0] - скан, 'Z' -> Если буфер пуст
*СканБуфер по принципу FIFO
GetScanCode:
        or.w     #$0700,sr
        suba     #4,sp
        move.l   d2,(sp)
        suba     #4,sp
        move.l   d1,(sp)
        suba     #4,sp
        move.l   a0,(sp)
        lea      ScanCode,a0
        move.l   ScanTail,d0
        move.l   a0,d1
        cmp.l    d0,d1
        bne      ScanGt
        move.l   #$FFFFFFFF,d0
        bra      GetScanEx
*Выдача головы буфера
ScanGt: lea      ScanCode,a0
        move.l   #0,d0
        move.b   (a0),d0
        move.l   ScanTail,d2
*Уменьшение буфера
GetScanFIFO:
        add.l    #1,a0
        move.b   (a0),d1
        sub.l    #1,a0
        move.b   d1,(a0)
        move.l   a0,d1
        cmp.l    d1,d2
        beq      GetFr
        add.l    #1,a0
        bra      GetScanFIFO
GetFr:  move.l   ScanTail,d2
        sub.l    #1,d2
        move.l   d2,ScanTail
GetScanEx:
        move.l   (sp),a0
        adda     #4,sp
        move.l   (sp),d1
        adda     #4,sp
        move.l   (sp),d2
        adda     #4,sp
        and.w    #$F8FF,sr
        rts
*Получение скана с ожиданием
GetScanWait:
        jsr      GetScanCode
        cmp.l    #$FFFFFFFF,d0
        beq      GetScanWait
        rts
*Получение кнопки клавиатуры с ожиданием
GetKey: suba     #4,sp
        move.l   a0,(sp)
GetLp:  jsr      GetScanWait
        cmp.b    #$8F,d0
        bhi      GetExt
        and.l    #$000000FF,d0
        rol.w    #1,d0
        add.l    #Scan,d0
        move.l   d0,a0
        move.l   #0,d0
        move.w   (a0),d0
        bra      GetEx
GetExt: jsr      GetScanWait
        move.l   #0,d0
        bra      GetLp
GetEx:  move.l   (sp),a0
        adda     #4,sp
        rts
*Ожидание кнопки джойстика
WaitKey:
        suba     #4,sp
        move.l   d0,(sp)
Key0:   cmp.w    #0,Joystik
        bne      Key0
Key1:   cmp.w    #0,Joystik
        beq      Key1
        move.l   #1000,d0
Key2:   dbne     d0,Key2        
        cmp.w    #0,Joystik
        beq      Key0
        move.l   (sp),d0
        adda     #4,sp
        rts
*Ввод байта
InputByte:
        suba     #4,sp
        move.l   d1,(sp)
        suba     #4,sp
        move.l   d2,(sp)
InpBt0:	jsr      GetKey
	move.b   d0,d1
	cmp.b    #$1B,d0
	beq      InpBt4
	cmp.b    #$2F,d0
	bls      InpBt0
	cmp.b    #$46,d0
	bhi      InpBt0
        cmp.b    #$39,d0
	bls      InpBt1
	cmp.b    #$40,d0
        bls      InpBt0
	sub.b    #7,d1
InpBt1:	jsr      OutSymbol
        rol.b    #4,d1
        and.b    #$F0,d1
InpBt2:	jsr      GetKey
	move.b   d0,d2
	cmp.b    #$1B,d0
	beq      InpBt4
	cmp.b    #$2F,d0
	bls      InpBt2
	cmp.b    #$46,d0
	bhi      InpBt2
        cmp.b    #$39,d0
	bls      InpBt3
	cmp.b    #$40,d0
        bls      InpBt2
	sub.b    #7,d2
InpBt3:	jsr      OutSymbol
        and.b    #$0F,d2
        or.b     d2,d1
	eor      d0,d0
	move.b   d1,d0
	bra      InpBt5
InpBt4:	move.l   #$FFFFFFFF,d0
InpBt5:	move.l   (sp),d2
        adda     #4,sp
	move.l   (sp),d1
        adda     #4,sp
	rts
*Ввод буфера
*[a0] - > Вводимый буфер, d0=0 - Ввод без ожидания, возврат в [d0];
*                         d0=1 - Ввод с ожиданием, возврат в [d0];
*                         d0=2..FE - Ввод буфера, возврат в (a0);
InpBuffer:
        suba     #4,sp
        move.l   d0,(sp)
        suba     #4,sp
        move.l   a0,(sp)
        move.l   #0,(a0)
        cmp.b    #2,d0
        blt      SpecialInput
        suba     #4,sp
        move.l   d1,(sp)
        suba     #4,sp
        move.l   d2,(sp)
        move.b   #0,(a0)
        move.l   d0,d2
        sub.l    #2,d2
        move.l   d1,0
MainInput:
        jsr      GetKey
        cmp.b    #$20,d0
        bhi      InputSym
        cmp.b    #$0D,d0
        beq      InputEntr
        cmp.b    #$7E,d0
        bne      MainInput
        cmp.l    #0,d1
        beq      MainInput
        sub.l    #1,a0
        sub.l    #1,d1
        move.b   #8,d0
        jsr      OutSymbol
        move.b   #32,d0
        jsr      OutSymbol
        move.b   #8,d0
        jsr      OutSymbol
        bra      MainInput
InputSym:
        move.b   d0,(a0)
        jsr      OutSymbol
        cmp.b    d1,d2
        beq      InputFull
        add.l    #1,a0
        add.l    #1,d1
        bra      MainInput
InputFull:
        move.b   #8,d0
        jsr      OutSymbol
        bra      MainInput
InputEntr:
        move.b   #13,d0
        jsr      OutSymbol
        move.b   #10,d0
        jsr      OutSymbol
        add.l    #1,a0
        move.b   #0,(a0)
        move.l   (sp),d2
        adda     #4,sp
        move.l   (sp),d1
        adda     #4,sp
        bra      SkipWait
SpecialInput:
        cmp.b    #1,d0
        bne      SkipWait
        jsr      GetKey
SkipWait:
        move.l   (sp),a0
        adda     #4,sp
        move.l   (sp),d0
        adda     #4,sp
        rts
*Обработка буфера, определение команды
*Вход  [a0] - начало буфера
*Выход [a0] - 1 операнд, [a1] - 2 операнд, [d0] - Команда
LoadRegs:
        suba     #4,sp
        move.l   d1,(sp)
        suba     #4,sp
        move.l   d2,(sp)
        suba     #4,sp
        move.l   d3,(sp)
	clr.l    d1
	clr.l    d2
	clr.l    d3
        move.b   (a0),d0
        cmp.b    #0,d0
        beq      LoadError
        cmp.b    #$40,d0
        bls      LoadError
        cmp.b    #$5F,d0
        bgt      LoadError
        move.l   d0,d1
        add.l    #1,a0
        move.l   #0,d2
LoadFirst:
        move.b   (a0),d0
        cmp.b    #0,d0
        beq      LoadOk
        cmp.b    #$2C,d0
        beq      LoadCont
        cmp.b    #$30,d0
        blt      LoadError
        cmp.b    #$46,d0
        bgt      LoadError
        cmp.b    #$3A,d0
        blt      LoadF0
        cmp.b    #$41,d0
        blt      LoadError
        sub.b    #7,d0
LoadF0: and.b    #15,d0
        rol.l    #4,d2
        or.l     d0,d2
        add.l    #1,a0
        bra      LoadFirst
LoadCont:
        add.l    #1,a0
        move.l   #0,d3
LoadSecond:
        move.b   (a0),d0
        cmp.b    #0,d0
        beq      LoadOk
        cmp.b    #$2C,d0
        beq      LoadOk
        cmp.b    #$30,d0
        blt      LoadError
        cmp.b    #$46,d0
        bgt      LoadError
        cmp.b    #$3A,d0
        blt      LoadS0
        cmp.b    #$41,d0
        blt      LoadError
        sub.b    #7,d0
LoadS0: and.b    #15,d0
        rol.l    #4,d3
        or.l     d0,d3
        add.l    #1,a0
        bra      LoadSecond
LoadOk:
        move.l   d1,d0
        move.l   d2,a0
        move.l   d3,a1
        bra      LoadEnd
LoadError:
        move.l   #0,d0
        move.l   #0,a0
        move.l   #0,a1
LoadEnd:
        move.l   (sp),d3
        adda     #4,sp
        move.l   (sp),d2
        adda     #4,sp
        move.l   (sp),d1
        adda     #4,sp
        rts
*==================================================================
*
*======================================================================
*Главный старт
START:	move.l  sp,a7
        tst.l   $a10008.l
        bne.s   SkipJoyDetect                               
        tst.w   $a1000c.l                       
SkipJoyDetect:
        bne     SkipSetup
        lea     Table(pc),a5                       
        movem.w (a5)+,d5-d7
        movem.l (a5)+,a0-a4                       
        move.b  -$10ff(a1),d0          ;Check Version Number                      
        andi.b  #$0f,d0                             
        beq.s   WrongVersion                                   
        move.l  #$53454741,$2f00(a1)   ;Sega Security Code (SEGA)   
WrongVersion:
        move.w  (a4),d0
        moveq   #$00,d0                                
        movea.l d0,a6                                  
        move    a6,usp                                
        moveq   #$17,d1                ; Set VDP registers
FillLoop:                           
        move.b  (a5)+,d5
        move.w  d5,(a4)                              
        add.w   d7,d5                                 
        dbra    d1,FillLoop                           
        move.l  (a5)+,(a4)                            
        move.w  d0,(a3)                                 
        move.w  d7,(a1)                                 
        move.w  d7,(a2)                                 
L0250:
        btst    d0,(a1)
        bne.s   L0250                                   
        moveq   #$25,d2                ; Put initial vaules into a00000                
Filla:                                 
        move.b  (a5)+,(a0)+
        dbra    d2,Filla
        move.w  d0,(a2)                                 
        move.w  d0,(a1)                                 
        move.w  d7,(a2)                                 
L0262:
        move.l  d0,-(a6)
        dbra    d6,L0262                            
        move.l  (a5)+,(a4)                              
        move.l  (a5)+,(a4)                              
        moveq   #$1f,d3                ; Put initial values into c00000                  
Filc0:                             
        move.l  d0,(a3)
        dbra    d3,Filc0
        move.l  (a5)+,(a4)                              
        moveq   #$13,d4                ; Put initial values into c00000                 
Fillc1:                            
        move.l  d0,(a3)
        dbra    d4,Fillc1
        moveq   #$03,d5                ; Put initial values into c00011                 
Fillc2:                            
        move.b  (a5)+,$0011(a3)        
        dbra    d5,Fillc2                            
        move.w  d0,(a2)                                 
        movem.l (a6),d0-d7/a0-a6                    
        move    #$2700,sr                           
        bra.s   Continue
Table:
        dc.w    $8000,$3fff,$0100,$00a0,$0000,$00a1,$1100,$00a1
        dc.w    $1200,$00c0,$0000,$00c0,$0004,$0414,$302c,$0754
        dc.w    $0000,$0000,$0000,$812b,$0001,$0100,$00ff,$ff00                                   
        dc.w    $0080,$4000,$0080,$af01,$d91f,$1127,$0021,$2600
        dc.w    $f977,$edb0,$dde1,$fde1,$ed47,$ed4f,$d1e1,$f108                                   
        dc.w    $d9c1,$d1e1,$f1f9,$f3ed,$5636,$e9e9,$8104,$8f01                
        dc.w    $c000,$0000,$4000,$0010,$9fbf,$dfff                                

Continue:
        tst.w     $00C00004

ColorChange:
        move.l    #$c0000000,$c00004
        move.l    #$0000,$c00000
        move.l    #$0000,$c00000
        move.l    #$0C00,$c00000
        move.l    #$000C,$c00000
        move.l    #$0C0C,$c00000
        move.l    #$00C0,$c00000
        move.l    #$0CC0,$c00000
        move.l    #$00CC,$c00000
        move.l    #$0CCC,$c00000
        move.l    #$0E44,$c00000
        move.l    #$044E,$c00000
        move.l    #$0E4E,$c00000
        move.l    #$04E4,$c00000
        move.l    #$0EE4,$c00000
        move.l    #$04EE,$c00000
        move.l    #$0EEE,$c00000
        move.l    #$0000,$c00000
        move.l    #$0EEE,$c00000
        move.l    #$04EE,$c00000
        move.l    #$0EE4,$c00000
        move.l    #$04E4,$c00000
        move.l    #$0E4E,$c00000
        move.l    #$044E,$c00000
        move.l    #$0E44,$c00000
        move.l    #$0CCC,$c00000
        move.l    #$00CC,$c00000
        move.l    #$0CC0,$c00000
        move.l    #$00C0,$c00000
        move.l    #$0C0C,$c00000
        move.l    #$000C,$c00000
        move.l    #$0C00,$c00000
        move.l    #$0000,$c00000

SkipSetup:
*Подготовка к пересылке символов
        move.w   #$8f02,$c00004            ;Инкремент записи в память
        move.l   #$40000000,$c00004
        lea      font(pc),a5
        move     #4095,d5
*Пересылка символов
VramFont:
        move.w   (a5)+,$c00000
        dbra     d5,VramFont
        move.w   #$8004,$c00004            ;Разрешение отображения
        move.w   #$8164,$c00004            ;Разрешение отображения!!!!!!!
        move.w   #$8b08,$c00004            ;Разрешение отображения

        move.b   #0,$a10013
        move.b   #$40,$a10009              ;На 1 порту будет всегда джойстик
        move.b   #$60,$a1000b              ;На втором клавка
	move.b   #$40,$a10005
        move.b   #$40,$a1000d

        lea      ScanCode,a0
        move.l   a0,ScanTail
*        and.w    #$F8FF,sr
*Конец инициализации и старт программы
WarmStart:
        jsr      ClearScreen               ;Очистка экрана
        lea      Greet,a0
        jsr      PrintString               ;Печать приветствия
*=======================================================================
*"Монитор"
NextLoop:
        move.b   #32,d0
*        jsr      OutSymbol
        move.b   #32,d0
*        jsr      OutSymbol
        move.b   #32,d0
*        jsr      OutSymbol
        move.b   #32,d0
*        jsr      OutSymbol

ScanLoop:
        lea      Prompt,a0
        jsr      PrintString
        move.l   #InpBufAdr,a0
        jsr      InpBuffer
*Обработка команды
        lea      LF,a0
        jsr      PrintString
        move.l   #InpBufAdr,a0
        jsr      LoadRegs
*[a0] - 1 операнд, [a1] - 2 операнд, [d0] - Команда
        cmp.b    #$53,d0              ;[S]ound
        beq      MusicSet
        cmp.b    #$44,d0              ;[D]ump
        beq      DumpMemory
        cmp.b    #$4C,d0              ;[L]ump
        beq      ListMemory
        cmp.b    #$4D,d0              ;[M]emory
        beq      EditMemory
        cmp.b    #$49,d0              ;[I]dentify
        beq      Identify
*Печать ошибки
        cmp.b    #0,d0
        beq      ErrCom
        lea      ErrorU,a0
        bra      ErrCon
ErrCom: lea      ErrorE,a0
ErrCon: jsr      PrintString
        lea      Help,a0
        jsr      PrintString
        bra      NextLoop
*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*Процедурки
*Определение харда
Identify:
	move.l   #$FF8000,a0
*	jsr      ATAIdentify

	bra      NextLoop
*Выключение музыки
MusicSet:
        move.l   a0,d0
*        move.w   #$FF,$A11200
        move.w   #$100,$A11100
        nop
        nop
        lea      $A009BD,a0
        move.b   d0,(a0)
        move.w   #0,$A11100
        lea      Music0,a0
        jsr      PrintString
        jsr      OutHexByte
        bra      NextLoop
*Дамп памяти
DumpLine:
        suba     #4,sp
        move.l   d0,(sp)
        move.l   a0,d0
        jsr      OutHexAddr
        move.b   #32,d0
        jsr      OutSymbol
        jsr      OutSymbol
DumpL:  move.b   (a0),d0
        add.l    #1,a0
        jsr      OutHexByte
        move.l   a0,d0
        and.b    #$0F,d0
        bne      DumpL
        move.l   (sp),d0
        adda     #4,sp
        rts
DumpMemory:
        jsr      DumpLine
        move.l   a0,d0
        and.l    #$FF,d0
        bne      DumpMemory
	move.b   #$0D,d0
	jsr      OutSymbol
	move.b   #$0A,d0
	jsr      OutSymbol
        jsr      GetKey
        cmp.b    #$1B,d0
        bne      DumpMemory
        bra      NextLoop
*Листинг памяти
ListLine:
        suba     #4,sp
        move.l   d0,(sp)
        move.l   a0,d0
        jsr      OutHexAddr
        move.b   #32,d0
        jsr      OutSymbol
        jsr      OutSymbol
ListL:  move.b   (a0),d0
        add.l    #1,a0
	cmp.b    #$1F,d0
	bgt      ListS
	move.b   #$2E,d0
ListS:	jsr      OutSymbol
        move.l   a0,d0
        and.b    #$0F,d0
        bne      ListL
	move.b   #$0D,d0
	jsr      OutSymbol
	move.b   #$0A,d0
	jsr      OutSymbol
        move.l   (sp),d0
        adda     #4,sp
        rts
ListMemory:
        jsr      ListLine
        move.l   a0,d0
        and.l    #$FF,d0
        bne      ListMemory
	move.b   #$0D,d0
	jsr      OutSymbol
	move.b   #$0A,d0
	jsr      OutSymbol
        jsr      GetKey
        cmp.b    #$1B,d0
        bne      ListMemory
        bra      NextLoop
*Редактор памяти
EditMemory:
	move.l   a0,a1
EditLoop:
        move.l   a1,d0
        jsr      OutHexAddr
        move.b   #32,d0
        jsr      OutSymbol
        jsr      OutSymbol
	move.b   (a1),d0
        jsr      OutHexByte
        move.b   #32,d0
        jsr      OutSymbol
	jsr      InputByte
	cmp.l    #$FFFFFFFF,d0
	beq      EditExit
	move.b   d0,(a1)
	add.l    #1,a1
	move.b   #$0D,d0
	jsr      OutSymbol
	move.b   #$0A,d0
	jsr      OutSymbol
	bra      EditLoop
EditExit:
	move.b   #$0D,d0
	jsr      OutSymbol
	move.b   #$0A,d0
	jsr      OutSymbol
	bra      NextLoop
*Тексты
Greet:  dc.b     'Sega DOS V2.56',$0D,$0A,0
Prompt: dc.b     '=>',0
ErrorU: dc.b     'Неизвестная команда',$0D,$0A,0
ErrorE: dc.b     'Ошибка в команде',$0D,$0A,0
Music0: dc.b     'Выбор мелодии номер ',0
Help:   dc.b     'Доступные команды:',$0D,$0A
        dc.b     'D<ADRBEG>          - Дамп памяти;',$0D,$0A
	dc.b     'L<ADRBEG>          - Листинг памяти;',$0D,$0A
	dc.b     'M<ADRBEG>          - Редактор памяти;',$0D,$0A
	dc.b     'I                  - Определить HDD;',$0D,$0A
        dc.b     'S<NUM>             - Выбрать мелодию с',$0D,$0A
        dc.b     '                     номером от 1 до 14H'
        dc.b     '----------------------------------------',$0D,$0A,0
        dc.b     0
*Данные
*Таблицы нормальных сканкодов
*                 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
Scan:   dc.w     $00,$88,$00,$84,$82,$80,$81,$8B,$00,$89,$87,$85,$83,$09,$00,$00 *00H
        dc.w     $00,$00,$00,$00,$00,$51,$31,$00,$00,$00,$5A,$53,$41,$57,$32,$00 *10H
        dc.w     $00,$43,$58,$44,$45,$34,$33,$00,$00,$20,$56,$46,$54,$52,$35,$00 *20H
        dc.w     $00,$4E,$42,$48,$47,$59,$36,$00,$00,$00,$4D,$4A,$55,$37,$38,$00 *30H
        dc.w     $00,$2C,$4B,$49,$4F,$30,$39,$00,$00,$2E,$2F,$4C,$3B,$50,$2D,$00 *40H
        dc.w     $00,$00,$00,$00,$5B,$3D,$00,$00,$00,$00,$0D,$5D,$00,$5C,$00,$00 *50H
        dc.w     $00,$00,$00,$00,$00,$00,$7F,$00,$00,$00,$00,$00,$00,$00,$00,$00 *60H
        dc.w     $00,$00,$00,$00,$00,$00,$1B,$00,$8A,$00,$00,$00,$00,$00,$00,$00 *70H
        dc.w     $00,$00,$00,$86,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 *80H
*Таблицы расширеных сканкодов
ScanE:  dc.w     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        dc.w     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        dc.w     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        dc.w     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        dc.w     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        dc.w     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        dc.w     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        dc.w     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
*Шрифт 8x8 cp866
Font:	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1FFF,$FFF1,$F111,$111F,$F1F1,$1F1F,$F111,$111F,$F1FF,$FF1F,$F11F,$F11F,$F111,$111F,$1FFF,$FFF1
	dc.w	$1FFF,$FFF1,$FFFF,$FFFF,$FF1F,$F1FF,$FFFF,$FFFF,$FF11,$11FF,$FFF1,$1FFF,$FFFF,$FFFF,$1FFF,$FFF1
	dc.w	$1FF1,$FF11,$FFFF,$FFF1,$FFFF,$FFF1,$FFFF,$FFF1,$1FFF,$FF11,$11FF,$F111,$111F,$1111,$1111,$1111
	dc.w	$111F,$1111,$11FF,$F111,$1FFF,$FF11,$FFFF,$FFF1,$1FFF,$FF11,$11FF,$F111,$111F,$1111,$1111,$1111
	dc.w	$11FF,$F111,$1FFF,$FF11,$11FF,$F111,$FFFF,$FFF1,$FFFF,$FFF1,$1FFF,$FF11,$11FF,$F111,$1FFF,$FF11
	dc.w	$111F,$1111,$111F,$1111,$11FF,$F111,$1FFF,$FF11,$FFFF,$FFF1,$1FFF,$FF11,$11FF,$F111,$1FFF,$FF11
	dc.w	$1111,$1111,$1111,$1111,$111F,$F111,$11FF,$FF11,$11FF,$FF11,$111F,$F111,$1111,$1111,$1111,$1111
	dc.w	$FFFF,$FFFF,$FFFF,$FFFF,$FFF1,$1FFF,$FF11,$11FF,$FF11,$11FF,$FFF1,$1FFF,$FFFF,$FFFF,$FFFF,$FFFF
	dc.w	$1111,$1111,$11FF,$FF11,$1FF1,$1FF1,$1F11,$11F1,$1F11,$11F1,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$FFFF,$FFFF,$FF11,$11FF,$F11F,$F11F,$F1FF,$FF1F,$F1FF,$FF1F,$F11F,$F11F,$FF11,$11FF,$FFFF,$FFFF
	dc.w	$1111,$FFFF,$1111,$1FFF,$1111,$FFFF,$1FFF,$FF1F,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111
	dc.w	$11FF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FF11,$111F,$F111,$1FFF,$FFF1,$111F,$F111
	dc.w	$11FF,$FFFF,$11FF,$11FF,$11FF,$FFFF,$11FF,$1111,$11FF,$1111,$1FFF,$1111,$FFFF,$1111,$FFF1,$1111
	dc.w	$1FFF,$FFFF,$1FF1,$11FF,$1FFF,$FFFF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$1FFF,$FFF1,$1FF1,$FF11,$1111
	dc.w	$F11F,$F11F,$1F1F,$F1F1,$11FF,$FF11,$FFF1,$1FFF,$FFF1,$1FFF,$11FF,$FF11,$1F1F,$F1F1,$F11F,$F11F
	dc.w	$F111,$1111,$FFF1,$1111,$FFFF,$F111,$FFFF,$FFF1,$FFFF,$F111,$FFF1,$1111,$F111,$1111,$1111,$1111
	dc.w	$1111,$11F1,$1111,$FFF1,$11FF,$FFF1,$FFFF,$FFF1,$11FF,$FFF1,$1111,$FFF1,$1111,$11F1,$1111,$1111
	dc.w	$111F,$F111,$11FF,$FF11,$1FFF,$FFF1,$111F,$F111,$111F,$F111,$1FFF,$FFF1,$11FF,$FF11,$111F,$F111
	dc.w	$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111,$1FF1,$1FF1,$1111,$1111
	dc.w	$1FFF,$FFFF,$FF1F,$F1FF,$FF1F,$F1FF,$1FFF,$F1FF,$111F,$F1FF,$111F,$F1FF,$111F,$F1FF,$1111,$1111
	dc.w	$11FF,$FFF1,$1FF1,$11FF,$11FF,$F111,$1FF1,$FF11,$1FF1,$FF11,$11FF,$F111,$FF11,$FF11,$1FFF,$F111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1FFF,$FFF1,$1FFF,$FFF1,$1FFF,$FFF1,$1111,$1111
	dc.w	$111F,$F111,$11FF,$FF11,$1FFF,$FFF1,$111F,$F111,$1FFF,$FFF1,$11FF,$FF11,$111F,$F111,$FFFF,$FFFF
	dc.w	$111F,$F111,$11FF,$FF11,$1FFF,$FFF1,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$1111,$1111
	dc.w	$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$1FFF,$FFF1,$11FF,$FF11,$111F,$F111,$1111,$1111
	dc.w	$1111,$1111,$111F,$F111,$1111,$FF11,$FFFF,$FFF1,$1111,$FF11,$111F,$F111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$11FF,$1111,$1FF1,$1111,$FFFF,$FFF1,$1FF1,$1111,$11FF,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$1111,$FF11,$1111,$FF11,$1111,$FFFF,$FFF1,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$11F1,$1F11,$1FF1,$1FF1,$FFFF,$FFFF,$1FF1,$1FF1,$11F1,$1F11,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$111F,$F111,$11FF,$FF11,$1FFF,$FFF1,$FFFF,$FFFF,$FFFF,$FFFF,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$FFFF,$FFFF,$FFFF,$FFFF,$1FFF,$FFF1,$11FF,$FF11,$111F,$F111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$11FF,$1111,$1FFF,$F111,$1FFF,$F111,$11FF,$1111,$11FF,$1111,$1111,$1111,$11FF,$1111,$1111,$1111
	dc.w	$1FF1,$FF11,$1FF1,$FF11,$1FF1,$FF11,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1FF1,$FF11,$1FF1,$FF11,$FFFF,$FFF1,$1FF1,$FF11,$FFFF,$FFF1,$1FF1,$FF11,$1FF1,$FF11,$1111,$1111
	dc.w	$11FF,$1111,$1FFF,$FF11,$FF11,$1111,$1FFF,$F111,$1111,$FF11,$FFFF,$F111,$11FF,$1111,$1111,$1111
	dc.w	$1111,$1111,$FF11,$1FF1,$FF11,$FF11,$111F,$F111,$11FF,$1111,$1FF1,$1FF1,$FF11,$1FF1,$1111,$1111
	dc.w	$11FF,$F111,$1FF1,$FF11,$11FF,$F111,$1FFF,$1FF1,$FF1F,$FF11,$FF11,$FF11,$1FFF,$1FF1,$1111,$1111
	dc.w	$1FF1,$1111,$1FF1,$1111,$FF11,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$111F,$F111,$11FF,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$11FF,$1111,$111F,$F111,$1111,$1111
	dc.w	$1FF1,$1111,$11FF,$1111,$111F,$F111,$111F,$F111,$111F,$F111,$11FF,$1111,$1FF1,$1111,$1111,$1111
	dc.w	$1111,$1111,$1FF1,$1FF1,$11FF,$FF11,$FFFF,$FFFF,$11FF,$FF11,$1FF1,$1FF1,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$11FF,$1111,$11FF,$1111,$FFFF,$FF11,$11FF,$1111,$11FF,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$11FF,$1111,$11FF,$1111,$1FF1,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$FFFF,$FF11,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$11FF,$1111,$11FF,$1111,$1111,$1111
	dc.w	$1111,$1FF1,$1111,$FF11,$111F,$F111,$11FF,$1111,$1FF1,$1111,$FF11,$1111,$F111,$1111,$1111,$1111
	dc.w	$1FFF,$FF11,$FF11,$1FF1,$FF11,$FFF1,$FF1F,$FFF1,$FFFF,$1FF1,$FFF1,$1FF1,$1FFF,$FF11,$1111,$1111
	dc.w	$11FF,$1111,$1FFF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$FFFF,$FF11,$1111,$1111
	dc.w	$1FFF,$F111,$FF11,$FF11,$1111,$FF11,$11FF,$F111,$1FF1,$1111,$FF11,$FF11,$FFFF,$FF11,$1111,$1111
	dc.w	$1FFF,$F111,$FF11,$FF11,$1111,$FF11,$11FF,$F111,$1111,$FF11,$FF11,$FF11,$1FFF,$F111,$1111,$1111
	dc.w	$111F,$FF11,$11FF,$FF11,$1FF1,$FF11,$FF11,$FF11,$FFFF,$FFF1,$1111,$FF11,$111F,$FFF1,$1111,$1111
	dc.w	$FFFF,$FF11,$FF11,$1111,$FFFF,$F111,$1111,$FF11,$1111,$FF11,$FF11,$FF11,$1FFF,$F111,$1111,$1111
	dc.w	$11FF,$F111,$1FF1,$1111,$FF11,$1111,$FFFF,$F111,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111,$1111,$1111
	dc.w	$FFFF,$FF11,$FF11,$FF11,$1111,$FF11,$111F,$F111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$1111,$1111
	dc.w	$1FFF,$F111,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111,$1111,$1111
	dc.w	$1FFF,$F111,$FF11,$FF11,$FF11,$FF11,$1FFF,$FF11,$1111,$FF11,$111F,$F111,$1FFF,$1111,$1111,$1111
	dc.w	$1111,$1111,$11FF,$1111,$11FF,$1111,$1111,$1111,$1111,$1111,$11FF,$1111,$11FF,$1111,$1111,$1111
	dc.w	$1111,$1111,$11FF,$1111,$11FF,$1111,$1111,$1111,$1111,$1111,$11FF,$1111,$11FF,$1111,$1FF1,$1111
	dc.w	$111F,$F111,$11FF,$1111,$1FF1,$1111,$FF11,$1111,$1FF1,$1111,$11FF,$1111,$111F,$F111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FFFF,$FF11,$1111,$1111,$1111,$1111,$FFFF,$FF11,$1111,$1111,$1111,$1111
	dc.w	$1FF1,$1111,$11FF,$1111,$111F,$F111,$1111,$FF11,$111F,$F111,$11FF,$1111,$1FF1,$1111,$1111,$1111
	dc.w	$1FFF,$F111,$FF11,$FF11,$1111,$FF11,$111F,$F111,$11FF,$1111,$1111,$1111,$11FF,$1111,$1111,$1111
	dc.w	$1FFF,$FF11,$FF11,$1FF1,$FF1F,$FFF1,$FF1F,$FFF1,$FF1F,$FFF1,$FF11,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$11FF,$1111,$1FFF,$F111,$FF11,$FF11,$FF11,$FF11,$FFFF,$FF11,$FF11,$FF11,$FF11,$FF11,$1111,$1111
	dc.w	$FFFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$FFFF,$FF11,$1111,$1111
	dc.w	$11FF,$FF11,$1FF1,$1FF1,$FF11,$1111,$FF11,$1111,$FF11,$1111,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$FFFF,$F111,$1FF1,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$FF11,$FFFF,$F111,$1111,$1111
	dc.w	$FFFF,$FFF1,$1FF1,$11F1,$1FF1,$F111,$1FFF,$F111,$1FF1,$F111,$1FF1,$11F1,$FFFF,$FFF1,$1111,$1111
	dc.w	$FFFF,$FFF1,$1FF1,$11F1,$1FF1,$F111,$1FFF,$F111,$1FF1,$F111,$1FF1,$1111,$FFFF,$1111,$1111,$1111
	dc.w	$11FF,$FF11,$1FF1,$1FF1,$FF11,$1111,$FF11,$1111,$FF11,$FFF1,$1FF1,$1FF1,$11FF,$FFF1,$1111,$1111
	dc.w	$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FFFF,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$1111,$1111
	dc.w	$1FFF,$F111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$111F,$FFF1,$1111,$FF11,$1111,$FF11,$1111,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111,$1111,$1111
	dc.w	$FFF1,$1FF1,$1FF1,$1FF1,$1FF1,$FF11,$1FFF,$F111,$1FF1,$FF11,$1FF1,$1FF1,$FFF1,$1FF1,$1111,$1111
	dc.w	$FFFF,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$11F1,$1FF1,$1FF1,$FFFF,$FFF1,$1111,$1111
	dc.w	$FF11,$1FF1,$FFF1,$FFF1,$FFFF,$FFF1,$FFFF,$FFF1,$FF1F,$1FF1,$FF11,$1FF1,$FF11,$1FF1,$1111,$1111
	dc.w	$FF11,$1FF1,$FFF1,$1FF1,$FFFF,$1FF1,$FF1F,$FFF1,$FF11,$FFF1,$FF11,$1FF1,$FF11,$1FF1,$1111,$1111
	dc.w	$11FF,$F111,$1FF1,$FF11,$FF11,$1FF1,$FF11,$1FF1,$FF11,$1FF1,$1FF1,$FF11,$11FF,$F111,$1111,$1111
	dc.w	$FFFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1FF1,$1111,$1FF1,$1111,$FFFF,$1111,$1111,$1111
	dc.w	$1FFF,$F111,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF1F,$FF11,$1FFF,$F111,$111F,$FF11,$1111,$1111
	dc.w	$FFFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1FF1,$FF11,$1FF1,$1FF1,$FFF1,$1FF1,$1111,$1111
	dc.w	$1FFF,$F111,$FF11,$FF11,$FFF1,$1111,$1FFF,$1111,$111F,$FF11,$FF11,$FF11,$1FFF,$F111,$1111,$1111
	dc.w	$FFFF,$FF11,$F1FF,$1F11,$11FF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FFFF,$FF11,$1111,$1111
	dc.w	$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111,$11FF,$1111,$1111,$1111
	dc.w	$FF11,$1FF1,$FF11,$1FF1,$FF11,$1FF1,$FF1F,$1FF1,$FFFF,$FFF1,$FFF1,$FFF1,$FF11,$1FF1,$1111,$1111
	dc.w	$FF11,$1FF1,$FF11,$1FF1,$1FF1,$FF11,$11FF,$F111,$11FF,$F111,$1FF1,$FF11,$FF11,$1FF1,$1111,$1111
	dc.w	$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111,$11FF,$1111,$11FF,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$FFFF,$FFF1,$FF11,$1FF1,$F111,$FF11,$111F,$F111,$11FF,$11F1,$1FF1,$1FF1,$FFFF,$FFF1,$1111,$1111
	dc.w	$1FFF,$F111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$FF11,$1111,$1FF1,$1111,$11FF,$1111,$111F,$F111,$1111,$FF11,$1111,$1FF1,$1111,$11F1,$1111,$1111
	dc.w	$1FFF,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$1FFF,$F111,$1111,$1111
	dc.w	$111F,$1111,$11FF,$F111,$1FF1,$FF11,$FF11,$1FF1,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$FFFF,$FFFF
	dc.w	$11FF,$1111,$11FF,$1111,$111F,$F111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$F111,$1111,$FF11,$1FFF,$FF11,$FF11,$FF11,$1FFF,$1FF1,$1111,$1111
	dc.w	$FFF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$FF1F,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$F111,$FF11,$FF11,$FF11,$1111,$FF11,$FF11,$1FFF,$F111,$1111,$1111
	dc.w	$111F,$FF11,$1111,$FF11,$1111,$FF11,$1FFF,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$F111,$FF11,$FF11,$FFFF,$FF11,$FF11,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$11FF,$F111,$1FF1,$FF11,$1FF1,$1111,$FFFF,$1111,$1FF1,$1111,$1FF1,$1111,$FFFF,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$1FF1,$FF11,$FF11,$FF11,$FF11,$1FFF,$FF11,$1111,$FF11,$FFFF,$F111
	dc.w	$FFF1,$1111,$1FF1,$1111,$1FF1,$FF11,$1FFF,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$FFF1,$1FF1,$1111,$1111
	dc.w	$11FF,$1111,$1111,$1111,$1FFF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$1111,$FF11,$1111,$1111,$1111,$FF11,$1111,$FF11,$1111,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111
	dc.w	$FFF1,$1111,$1FF1,$1111,$1FF1,$1FF1,$1FF1,$FF11,$1FFF,$F111,$1FF1,$FF11,$FFF1,$1FF1,$1111,$1111
	dc.w	$1FFF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$FF11,$FFFF,$FFF1,$FFFF,$FFF1,$FF1F,$1FF1,$FF11,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FFFF,$F111,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$F111,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF1F,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1FF1,$1111,$FFFF,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$1FF1,$FF11,$FF11,$FF11,$FF11,$1FFF,$FF11,$1111,$FF11,$111F,$FFF1
	dc.w	$1111,$1111,$1111,$1111,$FF1F,$FF11,$1FFF,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$FFFF,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$FF11,$FF11,$1111,$1FFF,$F111,$1111,$FF11,$FFFF,$F111,$1111,$1111
	dc.w	$111F,$1111,$11FF,$1111,$1FFF,$FF11,$11FF,$1111,$11FF,$1111,$11FF,$1F11,$111F,$F111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$F111,$11FF,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$1FF1,$FF1F,$1FF1,$FFFF,$FFF1,$FFFF,$FFF1,$1FF1,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$1FF1,$1FF1,$FF11,$11FF,$F111,$1FF1,$FF11,$FF11,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$FF11,$FF11,$FF11,$FF11,$FF11,$1FFF,$FF11,$1111,$FF11,$FFFF,$F111
	dc.w	$1111,$1111,$1111,$1111,$FFFF,$FF11,$F11F,$F111,$11FF,$1111,$1FF1,$1F11,$FFFF,$FF11,$1111,$1111
	dc.w	$111F,$FF11,$11FF,$1111,$11FF,$1111,$FFF1,$1111,$11FF,$1111,$11FF,$1111,$111F,$FF11,$1111,$1111
	dc.w	$111F,$F111,$111F,$F111,$111F,$F111,$1111,$1111,$111F,$F111,$111F,$F111,$111F,$F111,$1111,$1111
	dc.w	$FFF1,$1111,$11FF,$1111,$11FF,$1111,$111F,$FF11,$11FF,$1111,$11FF,$1111,$FFF1,$1111,$1111,$1111
	dc.w	$1FFF,$1FF1,$FF1F,$FF11,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$111F,$1111,$11FF,$F111,$1FF1,$FF11,$FF11,$1FF1,$FF11,$1FF1,$FFFF,$FFF1,$1111,$1111
	dc.w	$111F,$FFF1,$11FF,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FFF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1FFF,$FF11,$1FF1,$1111,$1FF1,$1111,$1FFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1111,$1111
	dc.w	$1FFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1111,$1111
	dc.w	$1FFF,$FFF1,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1111,$1111
	dc.w	$11FF,$F111,$1FF1,$FF11,$1FF1,$FF11,$1FF1,$FF11,$1FF1,$FF11,$1FF1,$FF11,$FFFF,$FFF1,$FF11,$1FF1
	dc.w	$1FFF,$FFF1,$1FF1,$1111,$1FF1,$1111,$1FFF,$FF11,$1FF1,$1111,$1FF1,$1111,$1FFF,$FFF1,$1111,$1111
	dc.w	$FF1F,$F1FF,$FF1F,$F1FF,$1FFF,$FFF1,$11FF,$FF11,$1FFF,$FFF1,$FF1F,$F1FF,$FF1F,$F1FF,$1111,$1111
	dc.w	$11FF,$FF11,$1FF1,$1FF1,$1111,$1FF1,$111F,$FF11,$1111,$1FF1,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$FFF1,$1FFF,$FFF1,$1FFF,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$11FF,$FF11,$1FF1,$1FF1,$1FF1,$FFF1,$1FFF,$FFF1,$1FFF,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1FF1,$1FF1,$1FF1,$FF11,$1FFF,$F111,$1FFF,$1111,$1FFF,$F111,$1FF1,$FF11,$1FF1,$1FF1,$1111,$1111
	dc.w	$111F,$FFF1,$11FF,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$FF11,$1FF1,$FFF1,$FFF1,$FFFF,$FFF1,$FFFF,$FFF1,$FF1F,$1FF1,$FF11,$1FF1,$FF11,$1FF1,$1111,$1111
	dc.w	$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FFF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$11FF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$1FFF,$FFF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1FFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1FF1,$1111,$1FF1,$1111,$1111,$1111
	dc.w	$11FF,$FF11,$1FF1,$1FF1,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$1FFF,$FFF1,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$1111,$1111
	dc.w	$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FFF1,$1111,$1FF1,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$1FFF,$FFF1,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$1FFF,$FFF1,$111F,$F111,$111F,$F111,$1111,$1111
	dc.w	$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FF11,$111F,$F111,$11FF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FFFF,$1111,$11FF
	dc.w	$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FFF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1111
	dc.w	$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FFFF,$FFFF,$1111,$1111
	dc.w	$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FFFF,$FFFF,$1111,$11FF
	dc.w	$FFF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1111,$1111
	dc.w	$FF11,$1FF1,$FF11,$1FF1,$FF11,$1FF1,$FFFF,$1FF1,$FF1F,$FFF1,$FF1F,$FFF1,$FFFF,$1FF1,$1111,$1111
	dc.w	$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1111,$1111
	dc.w	$1FFF,$F111,$F111,$FF11,$1111,$1FF1,$11FF,$FFF1,$1111,$1FF1,$F111,$FF11,$1FFF,$F111,$1111,$1111
	dc.w	$FF11,$FFF1,$FF1F,$F1FF,$FF1F,$F1FF,$FFFF,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FF11,$FFF1,$1111,$1111
	dc.w	$11FF,$FFF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FFF1,$11FF,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$F111,$1111,$FF11,$1FFF,$FF11,$FF11,$FF11,$1FFF,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$11FF,$FF11,$1FF1,$1111,$11FF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$FF11,$1FF1,$1FF1,$1FFF,$FF11,$1FF1,$1FF1,$1FFF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$FFF1,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1FF1,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$11FF,$FF11,$1FF1,$FF11,$1FF1,$FF11,$1FF1,$FF11,$FFFF,$FFF1,$FF11,$1FF1
	dc.w	$1111,$1111,$1111,$1111,$11FF,$FF11,$1FF1,$1FF1,$1FFF,$FFF1,$1FF1,$1111,$11FF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF1F,$F1FF,$1FFF,$FFF1,$11FF,$FF11,$1FFF,$FFF1,$FF1F,$F1FF,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$11FF,$FF11,$1FF1,$1FF1,$1111,$FF11,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FF1,$1FF1,$1FF1,$FFF1,$1FFF,$FFF1,$1FFF,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$111F,$F111,$1FF1,$1FF1,$1FF1,$FFF1,$1FFF,$FFF1,$1FFF,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FF1,$1FF1,$1FF1,$FF11,$1FFF,$F111,$1FF1,$FF11,$1FF1,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$111F,$FFF1,$11FF,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$1FF1,$FFFF,$FFF1,$FFFF,$FFF1,$FF1F,$1FF1,$FF11,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FFF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$11FF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$FFF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$111F,$111F,$1F11,$1F11,$111F,$111F,$1F11,$1F11,$111F,$111F,$1F11,$1F11,$111F,$111F,$1F11,$1F11
	dc.w	$1F1F,$1F1F,$F1F1,$F1F1,$1F1F,$1F1F,$F1F1,$F1F1,$1F1F,$1F1F,$F1F1,$F1F1,$1F1F,$1F1F,$F1F1,$F1F1
	dc.w	$FF1F,$FF1F,$1FFF,$1FFF,$FF1F,$FF1F,$1FFF,$1FFF,$FF1F,$FF1F,$1FFF,$1FFF,$FF1F,$FF1F,$1FFF,$1FFF
	dc.w	$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$111F,$F111,$111F,$F111,$111F,$F111,$FFFF,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$111F,$F111,$FFFF,$F111,$111F,$F111,$FFFF,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$FFFF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$FFFF,$FFF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$1111,$1111,$FFFF,$F111,$111F,$F111,$FFFF,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$11FF,$1FF1,$FFFF,$1FF1,$1111,$1FF1,$FFFF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$1111,$1111,$FFFF,$FFF1,$1111,$1FF1,$FFFF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$11FF,$1FF1,$FFFF,$1FF1,$1111,$1FF1,$FFFF,$FFF1,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$FFFF,$FFF1,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$111F,$F111,$FFFF,$F111,$111F,$F111,$FFFF,$F111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$FFFF,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$111F,$F111,$111F,$F111,$111F,$F111,$111F,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$111F,$F111,$111F,$F111,$111F,$F111,$FFFF,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$FFFF,$FFFF,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$111F,$F111,$111F,$F111,$111F,$F111,$111F,$FFFF,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$FFFF,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$111F,$F111,$111F,$F111,$111F,$F111,$FFFF,$FFFF,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$111F,$F111,$111F,$FFFF,$111F,$F111,$111F,$FFFF,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FFF,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$11FF,$1FF1,$11FF,$1FFF,$11FF,$1111,$11FF,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$11FF,$FFFF,$11FF,$1111,$11FF,$1FFF,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$11FF,$1FF1,$FFFF,$1FFF,$1111,$1111,$FFFF,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$FFFF,$FFFF,$1111,$1111,$FFFF,$1FFF,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$11FF,$1FF1,$11FF,$1FFF,$11FF,$1111,$11FF,$1FFF,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$1111,$1111,$FFFF,$FFFF,$1111,$1111,$FFFF,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$11FF,$1FF1,$FFFF,$1FFF,$1111,$1111,$FFFF,$1FFF,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$111F,$F111,$FFFF,$FFFF,$1111,$1111,$FFFF,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$FFFF,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$FFFF,$FFFF,$1111,$1111,$FFFF,$FFFF,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$FFFF,$FFFF,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$111F,$F111,$111F,$FFFF,$111F,$F111,$111F,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$111F,$FFFF,$111F,$F111,$111F,$FFFF,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$11FF,$FFFF,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$FFFF,$FFFF,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1,$11FF,$1FF1
	dc.w	$111F,$F111,$FFFF,$FFFF,$111F,$F111,$FFFF,$FFFF,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$111F,$F111,$111F,$F111,$111F,$F111,$FFFF,$F111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$111F,$FFFF,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111
	dc.w	$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
	dc.w	$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111
	dc.w	$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF,$1111,$FFFF
	dc.w	$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$FF11,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FF11,$1FF1,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$11FF,$FF11,$1FF1,$1FF1,$1FF1,$1111,$1FF1,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$FFF1,$111F,$F111,$111F,$F111,$111F,$F111,$111F,$F111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FFF1,$1111,$1FF1,$11FF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$FFF1,$FF1F,$F1FF,$FF1F,$F1FF,$1FFF,$FFF1,$111F,$F111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FF1,$1FF1,$11FF,$FF11,$111F,$F111,$11FF,$FF11,$1FF1,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FF1,$1FFF,$FFFF,$1111,$11FF
	dc.w	$1111,$1111,$1111,$1111,$1FF1,$1FF1,$1FF1,$1FF1,$11FF,$FFF1,$1111,$1FF1,$1111,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FFFF,$FFFF,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FF1F,$F1FF,$FFFF,$FFFF,$1111,$11FF
	dc.w	$1111,$1111,$1111,$1111,$FFF1,$1111,$1FF1,$1111,$1FFF,$FF11,$1FF1,$1FF1,$1FFF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$1FF1,$FF11,$1FF1,$FFFF,$1FF1,$FF1F,$FFF1,$FFFF,$1FF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FF1,$1111,$1FF1,$1111,$1FFF,$FF11,$1FF1,$1FF1,$1FFF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$FF11,$1111,$1FF1,$11FF,$FFF1,$1111,$1FF1,$1FFF,$FF11,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$FF11,$FFF1,$FF1F,$F1FF,$FFFF,$F1FF,$FF1F,$F1FF,$FF11,$FFF1,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$11FF,$FFF1,$1FF1,$1FF1,$11FF,$FFF1,$11FF,$1FF1,$1FF1,$1FF1,$1111,$1111
	dc.w	$1FF1,$FF11,$FFFF,$FFF1,$F111,$1111,$FFFF,$F111,$F111,$1111,$F111,$1111,$FFFF,$FFF1,$1111,$1111
	dc.w	$1FF1,$FF11,$1111,$1111,$1FFF,$FF11,$F111,$11F1,$FFFF,$FFF1,$F111,$1111,$1FFF,$FFF1,$1111,$1111
	dc.w	$1111,$1110,$1777,$7110,$77E7,$E710,$7E7E,$E770,$7EEE,$EE70,$7EEE,$EE70,$7777,$7770,$0000,$0000
	dc.w	$8888,$8811,$8FFF,$8F81,$8F9F,$F881,$8FF9,$FF81,$8F9F,$9F81,$8FFF,$FF81,$8888,$8881,$1111,$1111
	dc.w	$1F11,$F111,$1FFF,$F111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$1F1F,$1111,$1111,$1111,$1FFF,$1111,$11FF,$1111,$11FF,$1111,$11FF,$1111,$1FFF,$F111,$1111,$1111
	dc.w	$1111,$1111,$111F,$F111,$111F,$F111,$1111,$1111,$1FFF,$FFF1,$1111,$1111,$111F,$F111,$111F,$F111
	dc.w	$1111,$1111,$1FFF,$1FF1,$FF1F,$FF11,$1111,$1111,$1FFF,$1FF1,$FF1F,$FF11,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$11FF,$F111,$1FF1,$FF11,$1FF1,$FF11,$11FF,$F111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$111F,$F111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$11FF,$F111,$11FF,$F111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$11FF,$1111,$11F1,$1111,$1FF1,$1111,$1F11,$FF11,$FF11,$1FF1,$F111,$11FF,$F111,$111F,$1111
	dc.w	$F111,$F1FF,$FF11,$F1FF,$FFF1,$F111,$F1FF,$F111,$F11F,$F111,$F111,$F111,$F111,$F111,$1111,$1111
	dc.w	$11FF,$1111,$1F11,$F111,$111F,$1111,$11F1,$1111,$1FFF,$F111,$1111,$1111,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1FFF,$FF11,$1FFF,$FF11,$1FFF,$FF11,$1FFF,$FF11,$1111,$1111,$1111,$1111
	dc.w	$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111,$1111
*Конец
	end	START
tomaitheous
Very interested
Posts: 256
Joined: Tue Sep 11, 2007 9:10 pm

Post by tomaitheous »

HardWareMan: Have a question for you. Why do you include the font as hex/text instead as a binary? I've seen a few other demos do this too. Is it just habit?
Chilly Willy
Very interested
Posts: 2993
Joined: Fri Aug 17, 2007 9:33 pm

Post by Chilly Willy »

tomaitheous wrote:HardWareMan: Have a question for you. Why do you include the font as hex/text instead as a binary? I've seen a few other demos do this too. Is it just habit?
If you're used to using C instead for data arrays, you get in the habit of using hex as you don't have binary with most C compilers.
tomaitheous
Very interested
Posts: 256
Joined: Tue Sep 11, 2007 9:10 pm

Post by tomaitheous »

Chilly Willy wrote:
tomaitheous wrote:HardWareMan: Have a question for you. Why do you include the font as hex/text instead as a binary? I've seen a few other demos do this too. Is it just habit?
If you're used to using C instead for data arrays, you get in the habit of using hex as you don't have binary with most C compilers.
I understand for C compilers (I wrote a bin to static array conversion app), but looks a little weird for an ASM project <_< I guess it's just habit for some.
Chilly Willy
Very interested
Posts: 2993
Joined: Fri Aug 17, 2007 9:33 pm

Post by Chilly Willy »

tomaitheous wrote:
Chilly Willy wrote:
tomaitheous wrote:HardWareMan: Have a question for you. Why do you include the font as hex/text instead as a binary? I've seen a few other demos do this too. Is it just habit?
If you're used to using C instead for data arrays, you get in the habit of using hex as you don't have binary with most C compilers.
I understand for C compilers (I wrote a bin to static array conversion app), but looks a little weird for an ASM project <_< I guess it's just habit for some.
Also remember that pattern data on the SEGA is by nibbles, which works better as hex than binary. So if the font is pattern data, that'll be hex for certain.
HardWareMan
Very interested
Posts: 753
Joined: Sat Dec 15, 2007 7:49 am

Post by HardWareMan »

tomaitheous wrote:
Chilly Willy wrote:
tomaitheous wrote:HardWareMan: Have a question for you. Why do you include the font as hex/text instead as a binary? I've seen a few other demos do this too. Is it just habit?
If you're used to using C instead for data arrays, you get in the habit of using hex as you don't have binary with most C compilers.
I understand for C compilers (I wrote a bin to static array conversion app), but looks a little weird for an ASM project <_< I guess it's just habit for some.
Yes, I know. But unfortunately "68000 IDE" don't handle "incbin" directive. And it's compiler have a bug with MOVEM opcode. When you write for M68K, you will need to watch for data alignment or you get AdrErr exeption for word and dword accesses to your data. And code which contains an array with an odd number of bytes inside will shifted and will not works, becouse M68K fetches opcodes as word only.
I'm waiting new IDE, coming soon.
TmEE co.(TM)
Very interested
Posts: 2452
Joined: Tue Dec 05, 2006 1:37 pm
Location: Estonia, Rapla City
Contact:

Post by TmEE co.(TM) »

isn't there EVEN directive ? I put an EVEN after any data I'm not sure if its having even size.
Mida sa loed ? Nagunii aru ei saa ;)
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
tomaitheous
Very interested
Posts: 256
Joined: Tue Sep 11, 2007 9:10 pm

Post by tomaitheous »

TmEE co.(TM) wrote:isn't there EVEN directive ? I put an EVEN after any data I'm not sure if its having even size.
Same here. I use it for all includes - data or code files. Binary or text.

HWM: What IDE is that? What's the assembler? Strange that it won't do INCBIN. I love incbin, though I only use it for data. I prefer using source instead of objects files for code :)
HardWareMan
Very interested
Posts: 753
Joined: Sat Dec 15, 2007 7:49 am

Post by HardWareMan »

tomaitheous wrote:
TmEE co.(TM) wrote:isn't there EVEN directive ? I put an EVEN after any data I'm not sure if its having even size.
Same here. I use it for all includes - data or code files. Binary or text.

HWM: What IDE is that? What's the assembler? Strange that it won't do INCBIN. I love incbin, though I only use it for data. I prefer using source instead of objects files for code :)
Here. I think this screenshot explain all.
Image
Later.

There is ALIGN directive, that described in help. This is my fault at all. RTFM, f**k...
ALIGN
--------------------------------------------------------------------------------
Syntax: ALIGN

Size: n/a

Description:

This directive is only required following a DC.B, DC.B or DS.B directive if the next DC.B, DC.B or DS.B directive must be on an even address. Other directives and all instructions are automatically aligned by the assembler.

Examples:

ALIGN
But, there no directive to attach binary data.
Munkyears
Very interested
Posts: 54
Joined: Sat Mar 21, 2009 4:24 pm
Location: Sheffield, England

Post by Munkyears »

Stupid email doesnt even alert me of when i get replies xD


@ hardwareman

Does your "OS" struggle to do anything? i mean hardware limitations are a big problem

all your code is hex, and looks very cluttered, You must struggle to write it.. xD
To be this good takes ages, To be this good takes Stef, Kanedafr, ChillyWilly & everyone who has helped me discover what hardwork is!

Dive into the SpritesMind! :)
HardWareMan
Very interested
Posts: 753
Joined: Sat Dec 15, 2007 7:49 am

Post by HardWareMan »

Actually, there is small tool wich do this dirty work. I mean I wrote a small program, wich take *.bin file and produce *.asm text. ;) But very soon I will not need this anymore.
Munkyears
Very interested
Posts: 54
Joined: Sat Mar 21, 2009 4:24 pm
Location: Sheffield, England

Post by Munkyears »

A disassembler? I hate using it, but they are quick and dirty although i can only find one that exports to an actual asm file and not to console screens.
To be this good takes ages, To be this good takes Stef, Kanedafr, ChillyWilly & everyone who has helped me discover what hardwork is!

Dive into the SpritesMind! :)
Post Reply