Kernel 0.9.1 : GUI, Tables & BMP conversion tools

This commit is contained in:
Rémy GIBERT 2017-11-24 17:13:32 +01:00
parent 6bb1a4d46b
commit e520199eb5
6 changed files with 555 additions and 19 deletions

Binary file not shown.

Binary file not shown.

View File

@ -9,34 +9,80 @@ mode con:cols=80 lines=24
cls
echo Apple //e
(echo.)>SHIFT.L1.TXT
(echo.)>SHIFT.TXT
SET S=1
:LOOP0
set /a B=0
set SHIFT= .DA
set SHIFTL=
echo Creating SHIFT.L%S%...
:LOOP1
call :ToBin %B%
set SHIFT=%SHIFT% #%Output:~2,6%%Output:~0,1%
if "%S%" EQU "1" set SHIFT=#%%0%Output:~1,6%%Output:~0,1%
if "%S%" EQU "2" set SHIFT=#%%0%Output:~2,5%%Output:~0,2%
if "%S%" EQU "3" set SHIFT=#%%0%Output:~3,4%%Output:~0,3%
if "%S%" EQU "4" set SHIFT=#%%0%Output:~4,3%%Output:~0,4%
if "%S%" EQU "5" set SHIFT=#%%0%Output:~5,2%%Output:~0,5%
if "%S%" EQU "6" set SHIFT=#%%0%Output:~6,1%%Output:~0,6%
if not defined SHIFTL (
if "%B%" EQU "0" (
set SHIFTL=SHIFT.L%S% .DA %SHIFT%
) ELSE (
set SHIFTL= .DA %SHIFT%
)
) ELSE (
set SHIFTL=%SHIFTL%,%SHIFT%
)
set /a B+=1
set /a MOD=B%%4
set /a MOD=B%%8
if "%MOD%" EQU "0" (
echo %SHIFT%
set SHIFT= .DA
(echo %SHIFTL%)>>SHIFT.TXT
set SHIFTL=
)
if "%B%" NEQ "128" goto LOOP1
set /a S+=1
if "%S%" NEQ "7" goto LOOP0
(echo.)>TWIST.TXT
set /a B=0
set TWISTL=
echo Creating TWIST...
:LOOP2
call :ToBin2 %B%
if not defined TWISTL (
if "%B%" EQU "0" (
set TWISTL=TWIST .DA #%%%Output%
) ELSE (
set TWISTL= .DA #%%%Output%
)
) ELSE (
set TWISTL=%TWISTL%,#%%%Output%
)
set /a B+=1
set /a MOD=B%%8
if "%MOD%" EQU "0" (
(echo %TWISTL%)>>TWIST.TXT
set TWISTL=
)
if "%B%" NEQ "256" goto LOOP2
echo.
echo (I know, this batch is stupid ;-)
echo (I know, this other batch is also stupid ;-)
echo.
pause
exit 0
@ -50,14 +96,32 @@ SET InputValue=%1
:TopLoop
IF !CurrentValue! LEQ !InputValue! (
SET Output=!Output!1
SET /A InputValue=!InputValue!-!CurrentValue!
SET Output=!Output!1
SET /A InputValue=!InputValue!-!CurrentValue!
) ELSE (
SET Output=!Output!0
)
SET Output=!Output!0
)
If !CurrentValue! EQU 1 GOTO :EOF
SET /A CurrentValue=!CurrentValue!/2
Goto TopLoop
:ToBin2
SET Output=
SET CurrentValue=128
SET InputValue=%1
:TopLoop2
IF !CurrentValue! LEQ !InputValue! (
SET Output=1!Output!
SET /A InputValue=!InputValue!-!CurrentValue!
) ELSE (
SET Output=0!Output!
)
If !CurrentValue! EQU 1 GOTO :EOF
SET /A CurrentValue=!CurrentValue!/2
Goto TopLoop2

View File

@ -509,13 +509,14 @@ MSG.DIREXT >CSTR "\e[32m%16s\e[0m <dir> %s %s %s\r\n"
MSG.FILE >CSTR "%19s"
MSG.FILEEXT >CSTR "%15s %S $%H %s %10u %s %s\r\n"
*--------------------------------------
PRODOS.FT.HEX .HS 0406FAFCFDE2FF
PRODOS.FT.HEX .HS 0406FAFCFDE2CBFF
PRODOS.FT.TXT >PSTR "TXT"
>PSTR "BIN"
>PSTR "ASM"
>PSTR "BAS"
>PSTR "VAR"
>PSTR "ATK"
>PSTR "PIX"
>PSTR "SYS"
PRODOS.FT.DFLT >PSTR "$ "
MSG.NODATE >CSTR " <No-Date> "

381
BMP2PIX.S.txt Normal file
View File

@ -0,0 +1,381 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
.OR $2000
.TF /A2OSX.BUILD/BMP2PIX
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/LIBGUI.I
*--------------------------------------
ZPPTR1 .EQ ZPBIN
ZPInputBufPtr .EQ ZPBIN+2
ZPInputBufLen .EQ ZPBIN+4
ZPInputDataPtr .EQ ZPBIN+6
ZPBMPRowBytes .EQ ZPBIN+8
ZPPIXRowBytes .EQ ZPBIN+10
ZPBufPtr .EQ ZPBIN+12
ZPLineCount .EQ ZPBIN+14
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #64 SS
.DA #16 ZP
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.FILE.OK .DA MSG.FILE.OK
L.MSG.HEADER.OK .DA MSG.HEADER.OK
L.MSG.HEADER.KO .DA MSG.HEADER.KO
L.MSG.DONE .DA MSG.DONE
.DA 0
*--------------------------------------
CS.INIT
.1 >INC.G ArgCount
>SYSCALL GetArg.A
bcs .7
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.99 >LDYA L.MSG.USAGE
>SYSCALL PrintF.YA
lda #K.E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 >LDA.G hInputBuf
bne .5
jsr CS.INIT.OPENINPUT
bcc .1 scan for any other args
rts
.5 >LDA.G hOutputFile
bne .99
jsr CS.INIT.CREATEOUTPUT
bcc .1 scan for any other args
rts
.7 >LDA.G hOutputFile
beq .99
>LDYAI 256
>SYSCALL GetMem.YA
bcs CS.INIT.RTS
>STYA ZPBufPtr
txa
>STA.G hBuf
.8 clc
CS.INIT.RTS rts
*--------------------------------------
CS.INIT.OPENINPUT
>PUSHWI 0 Aux type
>PUSHBI 0 Type
>PUSHBI SYS.FOpen.R
>PUSHW ZPPtr1
>SYSCALL LoadFile
bcs CS.INIT.RTS
>STYA ZPInputBufLen
>PUSHYA
txa
>STA.G hInputBuf
>SYSCALL GetMemPtr.A
>STYA ZPInputBufPtr
>LDYA L.MSG.FILE.OK
>SYSCALL PrintF.YA
lda (ZPInputBufPtr)
cmp #'B'
bne .99
ldy #1
lda (ZPInputBufPtr),y
cmp #'M'
bne .99
ldy #$1C BBP LO
lda (ZPInputBufPtr),y
cmp #1
bne .99
iny BBP HI
lda (ZPInputBufPtr),y
bne .99
ldy #$16 H LO
lda (ZPInputBufPtr),y
>STA.G PIX.Header+S.BM.H
pha
eor #$ff
sta ZPLineCount
ldy #$17 H HI
lda (ZPInputBufPtr),y
>STA.G PIX.Header+S.BM.H+1
>PUSHA
eor #$ff
sta ZPLineCount+1
pla
>PUSHA
ldy #$12 W LO
lda (ZPInputBufPtr),y
>STA.G PIX.Header+S.BM.W
pha
ldy #$13 W HI
lda (ZPInputBufPtr),y
>STA.G PIX.Header+S.BM.W+1
>PUSHA
pla
>PUSHA
>LDYA L.MSG.HEADER.OK
>SYSCALL PrintF.YA
clc
rts
.99 >LDYA L.MSG.HEADER.KO
>SYSCALL PrintF.YA
lda #K.E.IBIN
sec
rts
*--------------------------------------
CS.INIT.CREATEOUTPUT
>PUSHWI 0 Aux type
>PUSHBI $CB PIX Type
>PUSHBI SYS.FOpen.W+SYS.FOpen.X
>PUSHW ZPPtr1
>SYSCALL FOpen
bcs .9
>STA.G hOutputFile
.9 rts
*--------------------------------------
CS.RUN lda #S.BM.F.BBP1
>STA.G PIX.Header+S.BM.F
>LDA.G PIX.Header+S.BM.W
sta ZPBMPRowBytes
sta ZPPIXRowBytes
iny
lda (pData),y
sta ZPBMPRowBytes+1
sta ZPPIXRowBytes+1
lda ZPBMPRowBytes
and #%00011111
beq .1
lda ZPBMPRowBytes
and #%11100000
clc
adc #%00100000
bcc .1
inc ZPBMPRowBytes+1
.1 lsr ZPBMPRowBytes+1
ror
lsr ZPBMPRowBytes+1
ror
lsr ZPBMPRowBytes+1
ror
sta ZPBMPRowBytes
lda ZPPIXRowBytes
and #%00000111
beq .2
lda ZPPIXRowBytes
and #%11111000
clc
adc #%00001000
bcc .2
inc ZPPIXRowBytes+1
.2 lsr ZPPIXRowBytes+1
ror
lsr ZPPIXRowBytes+1
ror
lsr ZPPIXRowBytes+1
ror
sta ZPPIXRowBytes
>STA.G PIX.Header+S.BM.RowBytes
lda ZPInputBufPtr
clc
adc ZPInputBufLen
sta ZPInputDataPtr
lda ZPInputBufPtr+1
adc ZPInputBufLen+1
sta ZPInputDataPtr+1
>PUSHEA.G PIX.Header
>PUSHWI S.BM
>LDA.G hOutputFile
>PUSHA
>SYSCALL FWrite
bcs CS.RUN.RTS
CS.RUN.LOOP inc ZPLineCount
bne .1
inc ZPLineCount+1
beq .8
.1 lda ZPInputDataPtr
sec
sbc ZPBMPRowBytes
sta ZPInputDataPtr
lda ZPInputDataPtr+1
sbc ZPBMPRowBytes+1
sta ZPInputDataPtr+1
>LDYA ZPBufPtr
>STYA ZPPTR1
ldy #0
.2 lda (ZPInputDataPtr),y
tax
lda TWIST,x
sta (ZPPTR1)
inc ZPPTR1
bne .3
inc ZPPTR1+1
.3 iny
cpy ZPPIXRowBytes
bne .2
>PUSHW ZPBufPtr
>PUSHW ZPPIXRowBytes
>LDA.G hOutputFile
>PUSHA
>SYSCALL FWrite
bcs CS.RUN.RTS
bra CS.RUN.LOOP
.8 >LDYA L.MSG.DONE
>SYSCALL PrintF.YA
lda #0
sec
CS.RUN.RTS rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT >LDA.G hBuf
beq .1
>SYSCALL FreeMem.A
.1 >LDA.G hOutputFile
beq .8
>SYSCALL FClose.A
.8 clc
rts
*--------------------------------------
CS.END
TWIST .DA #%00000000,#%10000000,#%01000000,#%11000000,#%00100000,#%10100000,#%01100000,#%11100000
.DA #%00010000,#%10010000,#%01010000,#%11010000,#%00110000,#%10110000,#%01110000,#%11110000
.DA #%00001000,#%10001000,#%01001000,#%11001000,#%00101000,#%10101000,#%01101000,#%11101000
.DA #%00011000,#%10011000,#%01011000,#%11011000,#%00111000,#%10111000,#%01111000,#%11111000
.DA #%00000100,#%10000100,#%01000100,#%11000100,#%00100100,#%10100100,#%01100100,#%11100100
.DA #%00010100,#%10010100,#%01010100,#%11010100,#%00110100,#%10110100,#%01110100,#%11110100
.DA #%00001100,#%10001100,#%01001100,#%11001100,#%00101100,#%10101100,#%01101100,#%11101100
.DA #%00011100,#%10011100,#%01011100,#%11011100,#%00111100,#%10111100,#%01111100,#%11111100
.DA #%00000010,#%10000010,#%01000010,#%11000010,#%00100010,#%10100010,#%01100010,#%11100010
.DA #%00010010,#%10010010,#%01010010,#%11010010,#%00110010,#%10110010,#%01110010,#%11110010
.DA #%00001010,#%10001010,#%01001010,#%11001010,#%00101010,#%10101010,#%01101010,#%11101010
.DA #%00011010,#%10011010,#%01011010,#%11011010,#%00111010,#%10111010,#%01111010,#%11111010
.DA #%00000110,#%10000110,#%01000110,#%11000110,#%00100110,#%10100110,#%01100110,#%11100110
.DA #%00010110,#%10010110,#%01010110,#%11010110,#%00110110,#%10110110,#%01110110,#%11110110
.DA #%00001110,#%10001110,#%01001110,#%11001110,#%00101110,#%10101110,#%01101110,#%11101110
.DA #%00011110,#%10011110,#%01011110,#%11011110,#%00111110,#%10111110,#%01111110,#%11111110
.DA #%00000001,#%10000001,#%01000001,#%11000001,#%00100001,#%10100001,#%01100001,#%11100001
.DA #%00010001,#%10010001,#%01010001,#%11010001,#%00110001,#%10110001,#%01110001,#%11110001
.DA #%00001001,#%10001001,#%01001001,#%11001001,#%00101001,#%10101001,#%01101001,#%11101001
.DA #%00011001,#%10011001,#%01011001,#%11011001,#%00111001,#%10111001,#%01111001,#%11111001
.DA #%00000101,#%10000101,#%01000101,#%11000101,#%00100101,#%10100101,#%01100101,#%11100101
.DA #%00010101,#%10010101,#%01010101,#%11010101,#%00110101,#%10110101,#%01110101,#%11110101
.DA #%00001101,#%10001101,#%01001101,#%11001101,#%00101101,#%10101101,#%01101101,#%11101101
.DA #%00011101,#%10011101,#%01011101,#%11011101,#%00111101,#%10111101,#%01111101,#%11111101
.DA #%00000011,#%10000011,#%01000011,#%11000011,#%00100011,#%10100011,#%01100011,#%11100011
.DA #%00010011,#%10010011,#%01010011,#%11010011,#%00110011,#%10110011,#%01110011,#%11110011
.DA #%00001011,#%10001011,#%01001011,#%11001011,#%00101011,#%10101011,#%01101011,#%11101011
.DA #%00011011,#%10011011,#%01011011,#%11011011,#%00111011,#%10111011,#%01111011,#%11111011
.DA #%00000111,#%10000111,#%01000111,#%11000111,#%00100111,#%10100111,#%01100111,#%11100111
.DA #%00010111,#%10010111,#%01010111,#%11010111,#%00110111,#%10110111,#%01110111,#%11110111
.DA #%00001111,#%10001111,#%01001111,#%11001111,#%00101111,#%10101111,#%01101111,#%11101111
.DA #%00011111,#%10011111,#%01011111,#%11011111,#%00111111,#%10111111,#%01111111,#%11111111
*--------------------------------------
OptionList >PSTR "Vv"
OptionVars .DA #bVerbose,#bVerbose
MSG.USAGE >CSTR "Usage : BMP2PIX BMP-File \r\n -V : Verbose Mode\r\n"
MSG.FILE.OK >CSTR "BMP Loaded, %D Bytes Read\r\n"
MSG.HEADER.OK >CSTR "BMP Size : %D x %D pixels\r\n"
MSG.HEADER.KO >CSTR "Invalid Input File Format\r\n"
MSG.DONE >CSTR "All Done!!!\r\n"
*--------------------------------------
.DUMMY
.OR 0
DS.START
PIX.Header .BS S.BM
ArgCount .BS 1
hInputBuf .BS 1
hOutputFile .BS 1
bVerbose .BS 1
hBuf .BS 1
DS.END
.ED
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/BMP2PIX.S
ASM

View File

@ -171,12 +171,102 @@ MOD7.256 .HS 040506
.HS 00010203040506
.HS 00
*--------------------------------------
SHIFT.L1 .BS 128
SHIFT.L2 .BS 128
SHIFT.L3 .BS 128
SHIFT.L4 .BS 128
SHIFT.L5 .BS 128
SHIFT.L6 .BS 128
SHIFT.L1 .DA #%00000000,#%00000010,#%00000100,#%00000110,#%00001000,#%00001010,#%00001100,#%00001110
.DA #%00010000,#%00010010,#%00010100,#%00010110,#%00011000,#%00011010,#%00011100,#%00011110
.DA #%00100000,#%00100010,#%00100100,#%00100110,#%00101000,#%00101010,#%00101100,#%00101110
.DA #%00110000,#%00110010,#%00110100,#%00110110,#%00111000,#%00111010,#%00111100,#%00111110
.DA #%01000000,#%01000010,#%01000100,#%01000110,#%01001000,#%01001010,#%01001100,#%01001110
.DA #%01010000,#%01010010,#%01010100,#%01010110,#%01011000,#%01011010,#%01011100,#%01011110
.DA #%01100000,#%01100010,#%01100100,#%01100110,#%01101000,#%01101010,#%01101100,#%01101110
.DA #%01110000,#%01110010,#%01110100,#%01110110,#%01111000,#%01111010,#%01111100,#%01111110
.DA #%00000001,#%00000011,#%00000101,#%00000111,#%00001001,#%00001011,#%00001101,#%00001111
.DA #%00010001,#%00010011,#%00010101,#%00010111,#%00011001,#%00011011,#%00011101,#%00011111
.DA #%00100001,#%00100011,#%00100101,#%00100111,#%00101001,#%00101011,#%00101101,#%00101111
.DA #%00110001,#%00110011,#%00110101,#%00110111,#%00111001,#%00111011,#%00111101,#%00111111
.DA #%01000001,#%01000011,#%01000101,#%01000111,#%01001001,#%01001011,#%01001101,#%01001111
.DA #%01010001,#%01010011,#%01010101,#%01010111,#%01011001,#%01011011,#%01011101,#%01011111
.DA #%01100001,#%01100011,#%01100101,#%01100111,#%01101001,#%01101011,#%01101101,#%01101111
.DA #%01110001,#%01110011,#%01110101,#%01110111,#%01111001,#%01111011,#%01111101,#%01111111
SHIFT.L2 .DA #%00000000,#%00000100,#%00001000,#%00001100,#%00010000,#%00010100,#%00011000,#%00011100
.DA #%00100000,#%00100100,#%00101000,#%00101100,#%00110000,#%00110100,#%00111000,#%00111100
.DA #%01000000,#%01000100,#%01001000,#%01001100,#%01010000,#%01010100,#%01011000,#%01011100
.DA #%01100000,#%01100100,#%01101000,#%01101100,#%01110000,#%01110100,#%01111000,#%01111100
.DA #%00000001,#%00000101,#%00001001,#%00001101,#%00010001,#%00010101,#%00011001,#%00011101
.DA #%00100001,#%00100101,#%00101001,#%00101101,#%00110001,#%00110101,#%00111001,#%00111101
.DA #%01000001,#%01000101,#%01001001,#%01001101,#%01010001,#%01010101,#%01011001,#%01011101
.DA #%01100001,#%01100101,#%01101001,#%01101101,#%01110001,#%01110101,#%01111001,#%01111101
.DA #%00000010,#%00000110,#%00001010,#%00001110,#%00010010,#%00010110,#%00011010,#%00011110
.DA #%00100010,#%00100110,#%00101010,#%00101110,#%00110010,#%00110110,#%00111010,#%00111110
.DA #%01000010,#%01000110,#%01001010,#%01001110,#%01010010,#%01010110,#%01011010,#%01011110
.DA #%01100010,#%01100110,#%01101010,#%01101110,#%01110010,#%01110110,#%01111010,#%01111110
.DA #%00000011,#%00000111,#%00001011,#%00001111,#%00010011,#%00010111,#%00011011,#%00011111
.DA #%00100011,#%00100111,#%00101011,#%00101111,#%00110011,#%00110111,#%00111011,#%00111111
.DA #%01000011,#%01000111,#%01001011,#%01001111,#%01010011,#%01010111,#%01011011,#%01011111
.DA #%01100011,#%01100111,#%01101011,#%01101111,#%01110011,#%01110111,#%01111011,#%01111111
SHIFT.L3 .DA #%00000000,#%00001000,#%00010000,#%00011000,#%00100000,#%00101000,#%00110000,#%00111000
.DA #%01000000,#%01001000,#%01010000,#%01011000,#%01100000,#%01101000,#%01110000,#%01111000
.DA #%00000001,#%00001001,#%00010001,#%00011001,#%00100001,#%00101001,#%00110001,#%00111001
.DA #%01000001,#%01001001,#%01010001,#%01011001,#%01100001,#%01101001,#%01110001,#%01111001
.DA #%00000010,#%00001010,#%00010010,#%00011010,#%00100010,#%00101010,#%00110010,#%00111010
.DA #%01000010,#%01001010,#%01010010,#%01011010,#%01100010,#%01101010,#%01110010,#%01111010
.DA #%00000011,#%00001011,#%00010011,#%00011011,#%00100011,#%00101011,#%00110011,#%00111011
.DA #%01000011,#%01001011,#%01010011,#%01011011,#%01100011,#%01101011,#%01110011,#%01111011
.DA #%00000100,#%00001100,#%00010100,#%00011100,#%00100100,#%00101100,#%00110100,#%00111100
.DA #%01000100,#%01001100,#%01010100,#%01011100,#%01100100,#%01101100,#%01110100,#%01111100
.DA #%00000101,#%00001101,#%00010101,#%00011101,#%00100101,#%00101101,#%00110101,#%00111101
.DA #%01000101,#%01001101,#%01010101,#%01011101,#%01100101,#%01101101,#%01110101,#%01111101
.DA #%00000110,#%00001110,#%00010110,#%00011110,#%00100110,#%00101110,#%00110110,#%00111110
.DA #%01000110,#%01001110,#%01010110,#%01011110,#%01100110,#%01101110,#%01110110,#%01111110
.DA #%00000111,#%00001111,#%00010111,#%00011111,#%00100111,#%00101111,#%00110111,#%00111111
.DA #%01000111,#%01001111,#%01010111,#%01011111,#%01100111,#%01101111,#%01110111,#%01111111
SHIFT.L4 .DA #%00000000,#%00010000,#%00100000,#%00110000,#%01000000,#%01010000,#%01100000,#%01110000
.DA #%00000001,#%00010001,#%00100001,#%00110001,#%01000001,#%01010001,#%01100001,#%01110001
.DA #%00000010,#%00010010,#%00100010,#%00110010,#%01000010,#%01010010,#%01100010,#%01110010
.DA #%00000011,#%00010011,#%00100011,#%00110011,#%01000011,#%01010011,#%01100011,#%01110011
.DA #%00000100,#%00010100,#%00100100,#%00110100,#%01000100,#%01010100,#%01100100,#%01110100
.DA #%00000101,#%00010101,#%00100101,#%00110101,#%01000101,#%01010101,#%01100101,#%01110101
.DA #%00000110,#%00010110,#%00100110,#%00110110,#%01000110,#%01010110,#%01100110,#%01110110
.DA #%00000111,#%00010111,#%00100111,#%00110111,#%01000111,#%01010111,#%01100111,#%01110111
.DA #%00001000,#%00011000,#%00101000,#%00111000,#%01001000,#%01011000,#%01101000,#%01111000
.DA #%00001001,#%00011001,#%00101001,#%00111001,#%01001001,#%01011001,#%01101001,#%01111001
.DA #%00001010,#%00011010,#%00101010,#%00111010,#%01001010,#%01011010,#%01101010,#%01111010
.DA #%00001011,#%00011011,#%00101011,#%00111011,#%01001011,#%01011011,#%01101011,#%01111011
.DA #%00001100,#%00011100,#%00101100,#%00111100,#%01001100,#%01011100,#%01101100,#%01111100
.DA #%00001101,#%00011101,#%00101101,#%00111101,#%01001101,#%01011101,#%01101101,#%01111101
.DA #%00001110,#%00011110,#%00101110,#%00111110,#%01001110,#%01011110,#%01101110,#%01111110
.DA #%00001111,#%00011111,#%00101111,#%00111111,#%01001111,#%01011111,#%01101111,#%01111111
SHIFT.L5 .DA #%00000000,#%00100000,#%01000000,#%01100000,#%00000001,#%00100001,#%01000001,#%01100001
.DA #%00000010,#%00100010,#%01000010,#%01100010,#%00000011,#%00100011,#%01000011,#%01100011
.DA #%00000100,#%00100100,#%01000100,#%01100100,#%00000101,#%00100101,#%01000101,#%01100101
.DA #%00000110,#%00100110,#%01000110,#%01100110,#%00000111,#%00100111,#%01000111,#%01100111
.DA #%00001000,#%00101000,#%01001000,#%01101000,#%00001001,#%00101001,#%01001001,#%01101001
.DA #%00001010,#%00101010,#%01001010,#%01101010,#%00001011,#%00101011,#%01001011,#%01101011
.DA #%00001100,#%00101100,#%01001100,#%01101100,#%00001101,#%00101101,#%01001101,#%01101101
.DA #%00001110,#%00101110,#%01001110,#%01101110,#%00001111,#%00101111,#%01001111,#%01101111
.DA #%00010000,#%00110000,#%01010000,#%01110000,#%00010001,#%00110001,#%01010001,#%01110001
.DA #%00010010,#%00110010,#%01010010,#%01110010,#%00010011,#%00110011,#%01010011,#%01110011
.DA #%00010100,#%00110100,#%01010100,#%01110100,#%00010101,#%00110101,#%01010101,#%01110101
.DA #%00010110,#%00110110,#%01010110,#%01110110,#%00010111,#%00110111,#%01010111,#%01110111
.DA #%00011000,#%00111000,#%01011000,#%01111000,#%00011001,#%00111001,#%01011001,#%01111001
.DA #%00011010,#%00111010,#%01011010,#%01111010,#%00011011,#%00111011,#%01011011,#%01111011
.DA #%00011100,#%00111100,#%01011100,#%01111100,#%00011101,#%00111101,#%01011101,#%01111101
.DA #%00011110,#%00111110,#%01011110,#%01111110,#%00011111,#%00111111,#%01011111,#%01111111
SHIFT.L6 .DA #%00000000,#%01000000,#%00000001,#%01000001,#%00000010,#%01000010,#%00000011,#%01000011
.DA #%00000100,#%01000100,#%00000101,#%01000101,#%00000110,#%01000110,#%00000111,#%01000111
.DA #%00001000,#%01001000,#%00001001,#%01001001,#%00001010,#%01001010,#%00001011,#%01001011
.DA #%00001100,#%01001100,#%00001101,#%01001101,#%00001110,#%01001110,#%00001111,#%01001111
.DA #%00010000,#%01010000,#%00010001,#%01010001,#%00010010,#%01010010,#%00010011,#%01010011
.DA #%00010100,#%01010100,#%00010101,#%01010101,#%00010110,#%01010110,#%00010111,#%01010111
.DA #%00011000,#%01011000,#%00011001,#%01011001,#%00011010,#%01011010,#%00011011,#%01011011
.DA #%00011100,#%01011100,#%00011101,#%01011101,#%00011110,#%01011110,#%00011111,#%01011111
.DA #%00100000,#%01100000,#%00100001,#%01100001,#%00100010,#%01100010,#%00100011,#%01100011
.DA #%00100100,#%01100100,#%00100101,#%01100101,#%00100110,#%01100110,#%00100111,#%01100111
.DA #%00101000,#%01101000,#%00101001,#%01101001,#%00101010,#%01101010,#%00101011,#%01101011
.DA #%00101100,#%01101100,#%00101101,#%01101101,#%00101110,#%01101110,#%00101111,#%01101111
.DA #%00110000,#%01110000,#%00110001,#%01110001,#%00110010,#%01110010,#%00110011,#%01110011
.DA #%00110100,#%01110100,#%00110101,#%01110101,#%00110110,#%01110110,#%00110111,#%01110111
.DA #%00111000,#%01111000,#%00111001,#%01111001,#%00111010,#%01111010,#%00111011,#%01111011
.DA #%00111100,#%01111100,#%00111101,#%01111101,#%00111110,#%01111110,#%00111111,#%01111111
*--------------------------------------
BASEL .HS 00.00.00.00.00.00.00.00
.HS 80.80.80.80.80.80.80.80