From c84579c4f82daae767fdc82330deec4a81a9ff9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 6 Apr 2019 19:43:33 +0100 Subject: [PATCH] Kernel 0.93 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/SH.S.CMD.txt | 76 +++--- BMP2PIX.S.txt | 553 +++++++++++++++++++++++++++++---------- PALETTE.bmp | Bin 0 -> 8534 bytes X.TWIST.G..txt | 5 +- 5 files changed, 459 insertions(+), 175 deletions(-) create mode 100644 PALETTE.bmp diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index dcec13053b5465a4d6c4511a0820ebd116cb874c..6312cf9430d5ccfe4d29f6677ca9bca0050e3ae5 100644 GIT binary patch delta 239562 zcmeIb30#!b{`h}pd0=2>U|?1T&|wh-bYv6vg-t~fki{)45C%aJ5HPjWVN}#KyDnW% zwvwr3R|~DQJ=?QxMR#f8R=3Q$EmpSg`TLx6o*4$EF5Ub6eqXQu|Mk(wnR(9gIp@63 zdCqgr=ks|U+kZM2+7AD^K2WPSCd3%;KBLwv;8&7q*U!>W9<(bdAP#;EGTvPhpbOk( z(9Kl1?>?e08no+#KJe~yDG7HdlJ8D<<(ys-uq)y8vk9ic;;F@?_s{eDbP9I1F(EWG zj=al$B$--vDRgIdso$R_N-cT+?+Qi2u7nR}!nsbje#HmJSA3w@@`T&mt=!YvR^^#r zQqb7Eye(&WZAu!EURLfQ=D#TSEN*S_&j&nm~NpZ>M zs>T{mTztk964C>?mo|Iia-9WJi1r`KJqumSJkHTXdIRdDe^cp9rwuhLJ#pzI>@8o? zInxRX^NIGKkh;<3agHI<+mJf^9i=k^QdfC~Hs@8fRV5MW6a)vqt8`}48do*ZoL;Ql zQ{!4mwC~9|Gl}6}qJ`cp!5=D}qbX~U<|E}E)(Gii5Mn!{bdKS&+pcd}rtcur$||D$9>SX&IGrCLJnl#39{Nb2%|4T7GyT-J1E;#$i2i49IiseK z@LzmQ%`VSQ8n%iApYt`AsCZ*-N)^qXYO&O-RJ`X*YE`la22Aym;b~jzW@i^xL%bSVT;EUFTt2nG7M*3!u z%|?svRO;rKe9>kLMzmIlXTuII1sjyEk5KJtYN>(|Iy#j|b_g*= zs+?(*hvmu*BjzZ2(#9Jd@Ft z?#M|wNJdwlT-~j6G^BLJI<_WvJ=iWygYdeO`fkawFS$MNWL$T!W6w~Y)>heh)sY^9 zs?a#}&}7HqY=`5((Cw1r;-q$s<7o1h&eJ=39Ajw7l`3n2C%H?1Qhzq+a+P}H> zti%G6>h``5RjAx~=KV9>%J)C1JbLD=Y2TUspKSQ3<73C^q@!n`66~vTOYj}5uXc34 zf21er+Z{c&%7fXCvB_QE72cY1@VR#7!Kc~TM}?OT>pgp;aNDqHjMq@$c91;%#?CkR zC!KngD${UBa#yHhck=dNR&mL(n{K^IH7WSbZK{cid+E*FR1Yea(TlED4OiTJ{K~6UM-_VWh)&Oup0TWD zg^6_9c2$MKOmEt*%7?Gh+f||po+VPp=Qo##(;df7V@_6{UEru0-DP4hu4NzlKHdM> z-UnD0@Pa?vp~|+OPGaLK{-A;+4$%cv1(Lkr~RCyG6^v^q0PQ}Oc$DJy7bm9o; zvm!^{=&qqB%eplO&vowF(bJxKvZQ;A<6}y9sZv6qVh?m~J<@Yl$qVV;rE(||>F2vt zHWSaCu>TWQ)c!N<6Ea0#qlyUNF{$*e>s3*7?lmfNC=bYU1g31CbWr7Zh_1dyHEif> z$p`=DcrzJFy-KiSwJ|UTj>42KJ^N8OJ_C?;U!z*$zP96wjh`RXI37yw+P41`;>(t>ZKVbiB(xPVGNyt4x}7GWu-DUggQC?%<<6W1s8(X(ziV9v@u^ zfVwPqK)kIxbc-Pva=`dZa?5lafzwhBDj9&mY#`Y8Zsc9N1)9>O@BD!EQBZr3weZbk zE-0S~vYrhGVPm%#0$7%GR^|3njvCsuTQzjio5_WVBUqVMo-z

g6&|1Vw-xIXW4l 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.G hFuncList CMD.CALL.YAX stx M32.ACC X=Code to Execute jsr CORE.ArgV.Dup Y,A = ArgV - bcs .9 + bcs CMD.CALL.RTS sta M32.ACC+2 A=ARGC stx M32.ACC+1 X=ARGV - + lda #8 jsr CORE.StkCheck - bcs .9 + bcs CMD.CALL.RTS lda ZPInputBuf jsr CORE.StkPush @@ -628,16 +628,20 @@ CMD.CALL.YAX stx M32.ACC X=Code to Execute ldy #S.PS.ARGC lda (pPS),y - jsr CORE.StkPush - - lda M32.ACC+2 new ARGC - ldy #S.PS.ARGC - sta (pPS),y - - lda M32.ACC+1 new ARGV + jsr CORE.StkPush old ARGC + ldy #S.PS.hARGV + lda (pPS),y + jsr CORE.StkPush old ARGV + + ldy #S.PS.ARGC + lda M32.ACC+2 new ARGC sta (pPS),y + iny #S.PS.hARGV + lda M32.ACC+1 + sta (pPS),y new ARGV + lda M32.ACC new code jsr CORE.StkPush @@ -650,25 +654,25 @@ CMD.CALL.YAX stx M32.ACC X=Code to Execute jsr CORE.StkPush clc -.9 rts +CMD.CALL.9 rts *-------------------------------------- CMD.EXIT lda (ZPArgVBufPtr) - beq CMD.EXIT.A no arg, exit 0 + beq .1 no arg, exit 0 >LDYA ZPArgVBufPtr jsr EXP.GET - bcs CMD.EXIT.RTS + bcs CMD.CALL.9 >SYSCALL AToL - bcs CMD.EXIT.RTS + bcs CMD.CALL.9 >PULLA inc pStack inc pStack inc pStack - jsr CMD.EXIT.A +.1 jsr CMD.EXIT.A bcs .9 - + lda (pData) bne .8 @@ -687,22 +691,9 @@ CMD.EXIT.A sta M32.ACC cmp #$C0 in CALL / . context ? beq .8 - and #$3F - cmp #C.IF - beq .1 - -.2 ldx #2 - cmp #C.WHILE - bne CMD.EXIT.99 - -.3 lda (pData) - -.4 dec - dex - bne .4 - -.5 sta (pData) - bra .1 + jsr CMD.EXIT.POP + bcc .1 + rts .8 jsr CORE.StkPull >SYSCALL freemem Code buffer @@ -734,8 +725,27 @@ CMD.EXIT.A sta M32.ACC lda M32.ACC clc CMD.EXIT.RTS rts +*-------------------------------------- +CMD.EXIT.POP and #$3F + cmp #C.IF + beq .8 + +.2 ldx #2 + cmp #C.WHILE + bne .9 + +.3 lda (pData) + +.4 dec + dex + bne .4 -CMD.EXIT.99 lda #E.STACKERROR + sta (pData) + +.8 clc + rts + +.9 lda #E.STACKERROR sec rts *-------------------------------------- diff --git a/BMP2PIX.S.txt b/BMP2PIX.S.txt index ee7d8580..4551e1a7 100644 --- a/BMP2PIX.S.txt +++ b/BMP2PIX.S.txt @@ -1,24 +1,50 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 - .TF ROOT/BMP2PIX + .TF BIN/BMP2PIX *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/GUI.I + .INB INC/IO.I + .INB INC/GFX.I .INB 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 +S.BMP.BM .EQ 0 +S.BMP.SIZE .EQ 2 +S.BMP.DATA.OFS .EQ $A +S.BMP.HDR.SIZE .EQ $E +S.BMP.W .EQ $12 +S.BMP.H .EQ $16 +S.BMP.PLANES .EQ $1A +S.BMP.BPP .EQ $1C +* +S.BMP .EQ $36 +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ZPPTR1 .BS 2 +ZPInputBufPtr .BS 2 +ZPInputBufLen .BS 2 +ZPInputDataPtr .BS 2 + +ZPBMPRowBytes .BS 2 +ZPPIXRowBytes .BS 2 +ZPBufPtr .BS 2 +ZPLineCount .BS 2 + +ZPPixel24 .BS 3 +ZPPixelScore .BS 3 +ZPPixelBest .BS 3 +ZPPixelIndex16 .BS 1 +ZBTmpB1 .BS 1 +ZBTmpW .BS 2 +ZPCntX .BS 1 +ZPCntY .BS 1 + +ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -26,11 +52,12 @@ CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 - .DA 0 + .DA #0 S.PS.F.EVENT + .DA #0 .DA CS.END-CS.START CS .DA DS.END-DS.START DS .DA #64 SS - .DA #16 ZP + .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- * Relocation Table @@ -46,7 +73,10 @@ L.MSG.HEADER.KO .DA MSG.HEADER.KO L.MSG.DONE .DA MSG.DONE .DA 0 *-------------------------------------- -CS.INIT +CS.INIT clc + rts +*-------------------------------------- +CS.RUN .1 >INC.G ArgCount >SYSCALL ArgV bcs .7 @@ -67,7 +97,8 @@ CS.INIT dex bne .2 -.99 >LDYA L.MSG.USAGE +.99 >PUSHBI 0 + >LDYA L.MSG.USAGE >SYSCALL printf lda #E.SYN sec @@ -80,117 +111,33 @@ CS.INIT .4 >LDA.G hInputBuf bne .5 - jsr CS.INIT.OPENINPUT + jsr CS.RUN.OPENINPUT bcc .1 scan for any other args rts .5 >LDA.G hOutputFile bne .99 - jsr CS.INIT.CREATEOUTPUT + jsr CS.RUN.CREATEOUTPUT bcc .1 scan for any other args - rts +.9 rts .7 >LDA.G hOutputFile beq .99 >LDYAI 256 >SYSCALL getmem - bcs CS.INIT.RTS + bcs .9 >STYA ZPBufPtr txa >STA.G hBuf -.8 clc -CS.INIT.RTS rts + >LDA.G BMP.BPP + cmp #1 + beq CS.RUN.1 + jmp CS.RUN.24 *-------------------------------------- -CS.INIT.OPENINPUT - >PUSHWI 0 Aux type - >PUSHBI 0 Type - >PUSHBI O.RDONLY - >LDYA ZPPtr1 - >SYSCALL LoadFile - bcs CS.INIT.RTS - - >STYA ZPInputBufLen - >PUSHYA - - txa - >STA.G hInputBuf - >SYSCALL GetMemPtr - >STYA ZPInputBufPtr - - >LDYA L.MSG.FILE.OK - >SYSCALL printf - - 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 - clc - rts - -.99 >LDYA L.MSG.HEADER.KO - >SYSCALL printf - lda #E.IBIN - sec - rts -*-------------------------------------- -CS.INIT.CREATEOUTPUT - >PUSHWI 0 Aux type - >PUSHBI $CB PIX Type - >PUSHBI O.WRONLY+O.CREATE - >LDYA ZPPtr1 - >SYSCALL FOpen - bcs .9 - >STA.G hOutputFile -.9 rts -*-------------------------------------- -CS.RUN lda #S.BM.F.BBP1 +CS.RUN.1 lda #S.BM.F.BBP1 >STA.G PIX.Header+S.BM.F >LDA.G PIX.Header+S.BM.W @@ -249,13 +196,10 @@ CS.RUN lda #S.BM.F.BBP1 adc ZPInputBufLen+1 sta ZPInputDataPtr+1 - >PUSHWI S.BM - >PUSHEA.G PIX.Header - >LDA.G hOutputFile - >SYSCALL FWrite + jsr CS.RUN.WRITE.HDR bcs CS.RUN.RTS -CS.RUN.LOOP inc ZPLineCount +CS.RUN.1.LOOP inc ZPLineCount bne .1 inc ZPLineCount+1 beq .8 @@ -294,16 +238,265 @@ CS.RUN.LOOP inc ZPLineCount - bra CS.RUN.LOOP + bra CS.RUN.1.LOOP .8 >LDYA L.MSG.DONE - >SYSCALL printf + >SYSCALL puts lda #0 sec CS.RUN.RTS rts *-------------------------------------- +CS.RUN.24 lda #S.BM.F.BBP4 + >STA.G PIX.Header+S.BM.F + + ldy #S.BMP.DATA.OFS + lda (ZPInputBufPtr),y + clc + adc ZPInputBufPtr + tax + + iny + lda (ZPInputBufPtr),y + adc ZPInputBufPtr+1 + stx ZPInputBufPtr + sta ZPInputBufPtr+1 + + jsr DEBUG.ClrScr + + lda #0 + sta ZPCntX + + lda #0 + sta ZPCntY + +CS.RUN.24.LOOP ldx #2 + ldy #0 + +.1 lda (ZPInputBufPtr),y + sta ZPPixel24,x + iny + dex + bpl .1 + + lda ZPInputBufPtr + clc + adc #3 + sta ZPInputBufPtr + bcc .2 + inc ZPInputBufPtr+1 + +.2 jsr CS.RUN.GetIndexInPalette + + jsr DEBUG.PLOT + + inc ZPCntX + lda ZPCntX + >CMP.G PIX.Header+S.BM.W + bne CS.RUN.24.LOOP + + stz ZPCntX + + inc ZPCntY + lda ZPCntY + >CMP.G PIX.Header+S.BM.H + bne CS.RUN.24.LOOP + + + lda #0 + sec + rts +*-------------------------------------- +CS.RUN.GetIndexInPalette + + stz ZPPixelIndex16 + + lda #$ff + sta ZPPixelBest + sta ZPPixelBest+1 + sta ZPPixelBest+2 + + ldy #63 + +.30 stz ZPPixelScore + stz ZPPixelScore+1 + stz ZPPixelScore+2 + + ldx #2 + +.40 lda PALETTE.RGB-1,y + sec + sbc ZPPixel24,x + bcs .5 + + eor #$ff + inc + +.5 phx +* + sta ZBTmpB1 + sta ZBTmpW + stz ZBTmpW+1 + + lda #0 + ldx #8 + +.1 lsr ZBTmpW + bcc .2 + clc + adc ZBTmpB1 + +.2 ror + ror ZBTmpW + dex + bne .1 + + sta ZBTmpW+1 + + lda ZPPixelScore + clc + adc ZBTmpW + sta ZPPixelScore + + lda ZPPixelScore+1 + adc ZBTmpW+1 + sta ZPPixelScore+1 + bcc .3 + inc ZPPixelScore+2 + +.3 plx + + dey + dex + bpl .40 + + lda ZPPixelBest + cmp ZPPixelScore + lda ZPPixelBest+1 + sbc ZPPixelScore+1 + lda ZPPixelBest+2 + sbc ZPPixelScore+2 + bcc .8 + + lda ZPPixelScore + sta ZPPixelBest + lda ZPPixelScore+1 + sta ZPPixelBest+1 + lda ZPPixelScore+2 + sta ZPPixelBest+2 + + tya + lsr + lsr + sta ZPPixelIndex16 + +.8 dey + bpl .30 + + lda ZPPixelIndex16 +CS.RUN.GetIndexInPalette.RTS + rts +*-------------------------------------- +CS.RUN.OPENINPUT + >PUSHWI 0 Aux type + >PUSHBI 0 Type + >PUSHBI O.RDONLY + >LDYA ZPPtr1 + >SYSCALL LoadFile + bcs CS.RUN.GetIndexInPalette.RTS + + >STYA ZPInputBufLen + + txa + >STA.G hInputBuf + >SYSCALL GetMemPtr + >STYA ZPInputBufPtr + + >PUSHW ZPInputBufLen + >PUSHBI 2 + >LDYA L.MSG.FILE.OK + >SYSCALL printf + + lda (ZPInputBufPtr) + cmp #'B' + bne .99 + + ldy #1 + lda (ZPInputBufPtr),y + cmp #'M' + bne .99 + + ldy #S.BMP.BPP+1 + lda (ZPInputBufPtr),y + bne .99 + dey + lda (ZPInputBufPtr),y + >STA.G BMP.BPP + cmp #1 + beq .1 + + cmp #24 + bne .99 + +.1 >PUSHA + ldy #S.BMP.H + lda (ZPInputBufPtr),y + >STA.G PIX.Header+S.BM.H + pha + eor #$ff + sta ZPLineCount + + ldy #S.BMP.H+1 + lda (ZPInputBufPtr),y + >STA.G PIX.Header+S.BM.H+1 + >PUSHA + eor #$ff + sta ZPLineCount+1 + + pla + >PUSHA + + ldy #S.BMP.W + lda (ZPInputBufPtr),y + >STA.G PIX.Header+S.BM.W + pha + + ldy #S.BMP.W+1 + lda (ZPInputBufPtr),y + >STA.G PIX.Header+S.BM.W+1 + >PUSHA + pla + >PUSHA + + >PUSHBI 5 + >LDYA L.MSG.HEADER.OK + >SYSCALL printf +.9 rts + +.99 >LDYA L.MSG.HEADER.KO + >SYSCALL puts + lda #E.IBIN + sec + rts +*-------------------------------------- +CS.RUN.CREATEOUTPUT + >PUSHWI 0 Aux type + >PUSHBI $CB PIX Type + >PUSHBI O.WRONLY+O.CREATE + >LDYA ZPPtr1 + >SYSCALL FOpen + bcs .9 + >STA.G hOutputFile +.9 rts +*-------------------------------------- +CS.RUN.WRITE.HDR + >PUSHWI S.BM + >PUSHEA.G PIX.Header + >LDA.G hOutputFile + >SYSCALL FWrite + rts +*-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- @@ -311,7 +504,11 @@ CS.QUIT >LDA.G hBuf beq .1 >SYSCALL FreeMem -.1 >LDA.G hOutputFile +.1 >LDA.G hInputBuf + beq .2 + >SYSCALL FreeMem + +.2 >LDA.G hOutputFile beq .8 >SYSCALL fclose @@ -319,41 +516,119 @@ CS.QUIT >LDA.G hBuf .8 clc rts *-------------------------------------- +DEBUG.ClrScr sta SETMIXED + sta CLRTEXT + + ldx #19 + +.1 lda SCR.BASEL,x + sta ZPPTR1 + lda SCR.BASEH,x + sta ZPPTR1+1 + + lda #0 + + ldy #39 + +.2 sta SETPAGE2 + sta (ZPPTR1),y + sta CLRPAGE2 + sta (ZPPTR1),y + + dey + bpl .2 + + dex + bpl .1 + rts +*-------------------------------------- +DEBUG.PLOT pha + + lda ZPCntX + lsr + tay + sta CLRPAGE2 + bcs .1 CS = main + sta SETPAGE2 + +.1 lda ZPCntY + lsr + tax + lda SCR.BASEL,x + sta ZPPTR1 + lda SCR.BASEH,x + sta ZPPTR1+1 + + pla + bcc .2 + + asl + asl + asl + asl + +.2 ora (ZPPTR1),y + sta (ZPPTR1),y + sta CLRPAGE2 + rts +*-------------------------------------- +SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 +SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 +*-------------------------------------- CS.END *-------------------------------------- - .INB ROOT/X.TWIST.G + .INB USR/SRC/X.TWIST.G *-------------------------------------- OptionList >PSTR "Vv" OptionVars .DA #bVerbose,#bVerbose -MSG.USAGE .AZ "Usage : BMP2PIX BMP-File \r\n -V : Verbose Mode\r\n" +MSG.USAGE .AS "Usage : BMP2PIX BMP-File \r\n" + .AZ " -V : Verbose Mode\r\n" MSG.FILE.OK .AZ "BMP Loaded, %D Bytes Read\r\n" -MSG.HEADER.OK .AZ "BMP Size : %D x %D pixels\r\n" -MSG.HEADER.KO .AZ "Invalid Input File Format\r\n" -MSG.DONE .AZ "All Done!!!\r\n" +MSG.HEADER.OK .AZ "BMP Size : %D x %D pixels, %d bit(s)/pixel\r\n" +MSG.HEADER.KO .AZ "Invalid Input File Format" +MSG.DONE .AZ "All Done!!!" *-------------------------------------- * LOWRES Patette : https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb *-------------------------------------- -0 #000000 -1 #e31e60 -2 #604ebd -3 #ff44fd -4 #00a360 -5 #9c9c9c -6 #14cffd -7 #d0c3ff -8 #607203 -9 #ff6a3c -a #9c9c9c (yes it is the same as #5!) -b #ffa0d0 -c #14f53c -d #d0dd8d -e #72ffd0 -f #ffffff +PALETTE.RGB .HS 00000000 BLACK + .HS e31e6000 RED + .HS 604ebd00 DARK.BLUE + .HS ff44fd00 PURPLE + .HS 00a36000 DARK.GREEN + .HS 9c9c9c00 DARK.GRAY + .HS 14cffd00 BLUE + .HS d0c3ff00 LIGHT.BLUE + .HS 60720300 BROWN + .HS ff6a3c00 ORANGE + .HS 9c9c9c00 DARK.GRAY + .HS ffa0d000 PINK + .HS 14f53c00 LIGHT.GREEN + .HS d0dd8d00 YELLOW + .HS 72ffd000 AQUA + .HS ffffff00 WHITE +*-------------------------------------- +PALETTE.BGR .HS 00000000 BLACK + .HS 601ee300 RED + .HS bd4e6000 DARK.BLUE + .HS fd44ff00 PURPLE + .HS 60a30000 DARK.GREEN + .HS 9c9c9c00 DARK.GRAY + .HS fdcf1400 BLUE + .HS ffc3d000 LIGHT.BLUE + .HS 03726000 BROWN + .HS 3c6aff00 ORANGE + .HS 9c9c9c00 DARK.GRAY + .HS d0a0ff00 PINK + .HS 3cf51400 LIGHT.GREEN + .HS 8dddd000 YELLOW + .HS d0ff7200 AQUA + .HS ffffff00 WHITE *-------------------------------------- .DUMMY .OR 0 DS.START PIX.Header .BS S.BM +BMP.BPP .BS 1 ArgCount .BS 1 hInputBuf .BS 1 hOutputFile .BS 1 @@ -363,5 +638,5 @@ DS.END .ED *-------------------------------------- MAN -SAVE /A2OSX.BUILD/ROOT/BMP2PIX.S +SAVE USR/SRC/BIN/BMP2PIX.S ASM diff --git a/PALETTE.bmp b/PALETTE.bmp new file mode 100644 index 0000000000000000000000000000000000000000..62658f22685773aa9396168c1f68e098eb2819c3 GIT binary patch literal 8534 zcmeH~drul^6vhtct~M$#7u$Zb{bKvh z*zCWYu?cAmC%<_(8HR+D=e$qA7tNSJCl>YLyuW_f-9!@ZT9Z8w!}3KGNuQ>F@0n7gnRqXseLB*^ z)gr%sSPYWNlA>Bx)&5b|YDgw;8k={K1Z|D>HjzYnwp8E4a(od*LNm;ecdsY%Jas*c z$m;j|WTuf%Bp!#Cd!vjH^8Ps^;yS3kg({u}NzJHilx7+=RpSQ9n|giY{_hyG8lkO7 zLbN%_IJqC((+`d)66PD95l#a{m*5bOQ4;+)5wA|h+mrDo64`NQt8kKSQK?1%NuuHX zT#r6h7*X7p`HWaJ!OFTA%&@Wv=C5GxgSm@krSCYXR||zgu7u<=Uo2&>+Z5N{=Xk}@ z+~<8V8o^=#vl-1QST?}c0ecth4_GYS-Ej4)c%DaB?jl$CQfdcSQ8fMhZ=<2kltYh{ z&y$(XhCWjd?2lM1z1?u_x|F*>SN<|rJS&Sbi9GyEKDCFndraHUv;$b0em)~iCjLB$ zV2wXd_B*hP^T`nr>rB6FLf!ZzeP;MXPBi|HR zuKi#sWaJWKTzmq}I2YG)=`@$l2uhm4Fsan*oe6Ccv2)r5vo5K7-{qyeNR!B8u0I3C zkdaM{u`xNCaW<}D(`h!H5tKB8p_9pB`V=;DNs+sk&~lj!mpKuXG=uqn_eMUAGUEBn z4LA3uH$g>-KtX|ql6nG8Uy$+!_mQ~${?gHV?nJ_+WoX8@jGE1+*lb!*(hP<^O#sN| zVZtZ^xe=y}vb|-WdpYD>K0vbj;V@_YNITwica>}G=rgaMezfXPe>*54QXgs7T=Z~ zBe9JqPgM4YIdw;;L(rJ_|~k!8G(4fd2qLs7vzz literal 0 HcmV?d00001 diff --git a/X.TWIST.G..txt b/X.TWIST.G..txt index 3cd3eafa..b1223dc0 100644 --- a/X.TWIST.G..txt +++ b/X.TWIST.G..txt @@ -1,6 +1,5 @@ NEW -PREFIX -AUTO 4,1 + AUTO 4,1 .LIST OFF *-------------------------------------- TWIST .DA #%00000000,#%10000000,#%01000000,#%11000000,#%00100000,#%10100000,#%01100000,#%11100000 @@ -37,4 +36,4 @@ TWIST .DA #%00000000,#%10000000,#%01000000,#%11000000,#%00100000,#%10100000,#% .DA #%00011111,#%10011111,#%01011111,#%11011111,#%00111111,#%10111111,#%01111111,#%11111111 *-------------------------------------- MAN -SAVE /A2OSX.BUILD/ROOT/X.TWIST.G +SAVE USR/SRC/X.TWIST.G