mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-16 00:29:35 +00:00
Kernel 0.93
This commit is contained in:
parent
6bf3599ad2
commit
c84579c4f8
Binary file not shown.
|
@ -606,13 +606,13 @@ CMD.CALL >LDA.G hFuncList
|
||||||
CMD.CALL.YAX stx M32.ACC X=Code to Execute
|
CMD.CALL.YAX stx M32.ACC X=Code to Execute
|
||||||
|
|
||||||
jsr CORE.ArgV.Dup Y,A = ArgV
|
jsr CORE.ArgV.Dup Y,A = ArgV
|
||||||
bcs .9
|
bcs CMD.CALL.RTS
|
||||||
sta M32.ACC+2 A=ARGC
|
sta M32.ACC+2 A=ARGC
|
||||||
stx M32.ACC+1 X=ARGV
|
stx M32.ACC+1 X=ARGV
|
||||||
|
|
||||||
lda #8
|
lda #8
|
||||||
jsr CORE.StkCheck
|
jsr CORE.StkCheck
|
||||||
bcs .9
|
bcs CMD.CALL.RTS
|
||||||
|
|
||||||
lda ZPInputBuf
|
lda ZPInputBuf
|
||||||
jsr CORE.StkPush
|
jsr CORE.StkPush
|
||||||
|
@ -628,16 +628,20 @@ CMD.CALL.YAX stx M32.ACC X=Code to Execute
|
||||||
|
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
jsr CORE.StkPush
|
jsr CORE.StkPush old ARGC
|
||||||
|
|
||||||
lda M32.ACC+2 new ARGC
|
|
||||||
ldy #S.PS.ARGC
|
|
||||||
sta (pPS),y
|
|
||||||
|
|
||||||
lda M32.ACC+1 new ARGV
|
|
||||||
ldy #S.PS.hARGV
|
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
|
sta (pPS),y
|
||||||
|
|
||||||
|
iny #S.PS.hARGV
|
||||||
|
lda M32.ACC+1
|
||||||
|
sta (pPS),y new ARGV
|
||||||
|
|
||||||
lda M32.ACC new code
|
lda M32.ACC new code
|
||||||
jsr CORE.StkPush
|
jsr CORE.StkPush
|
||||||
|
|
||||||
|
@ -650,25 +654,25 @@ CMD.CALL.YAX stx M32.ACC X=Code to Execute
|
||||||
jsr CORE.StkPush
|
jsr CORE.StkPush
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
CMD.CALL.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.EXIT lda (ZPArgVBufPtr)
|
CMD.EXIT lda (ZPArgVBufPtr)
|
||||||
beq CMD.EXIT.A no arg, exit 0
|
beq .1 no arg, exit 0
|
||||||
|
|
||||||
>LDYA ZPArgVBufPtr
|
>LDYA ZPArgVBufPtr
|
||||||
jsr EXP.GET
|
jsr EXP.GET
|
||||||
bcs CMD.EXIT.RTS
|
bcs CMD.CALL.9
|
||||||
>SYSCALL AToL
|
>SYSCALL AToL
|
||||||
bcs CMD.EXIT.RTS
|
bcs CMD.CALL.9
|
||||||
|
|
||||||
>PULLA
|
>PULLA
|
||||||
inc pStack
|
inc pStack
|
||||||
inc pStack
|
inc pStack
|
||||||
inc pStack
|
inc pStack
|
||||||
|
|
||||||
jsr CMD.EXIT.A
|
.1 jsr CMD.EXIT.A
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda (pData)
|
lda (pData)
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
|
@ -687,22 +691,9 @@ CMD.EXIT.A sta M32.ACC
|
||||||
cmp #$C0 in CALL / . context ?
|
cmp #$C0 in CALL / . context ?
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
and #$3F
|
jsr CMD.EXIT.POP
|
||||||
cmp #C.IF
|
bcc .1
|
||||||
beq .1
|
rts
|
||||||
|
|
||||||
.2 ldx #2
|
|
||||||
cmp #C.WHILE
|
|
||||||
bne CMD.EXIT.99
|
|
||||||
|
|
||||||
.3 lda (pData)
|
|
||||||
|
|
||||||
.4 dec
|
|
||||||
dex
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
.5 sta (pData)
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.8 jsr CORE.StkPull
|
.8 jsr CORE.StkPull
|
||||||
>SYSCALL freemem Code buffer
|
>SYSCALL freemem Code buffer
|
||||||
|
@ -734,8 +725,27 @@ CMD.EXIT.A sta M32.ACC
|
||||||
lda M32.ACC
|
lda M32.ACC
|
||||||
clc
|
clc
|
||||||
CMD.EXIT.RTS rts
|
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
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
553
BMP2PIX.S.txt
553
BMP2PIX.S.txt
|
@ -1,24 +1,50 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF ROOT/BMP2PIX
|
.TF BIN/BMP2PIX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/GUI.I
|
.INB INC/IO.I
|
||||||
|
.INB INC/GFX.I
|
||||||
.INB INC/LIBGUI.I
|
.INB INC/LIBGUI.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPTR1 .EQ ZPBIN
|
S.BMP.BM .EQ 0
|
||||||
ZPInputBufPtr .EQ ZPBIN+2
|
S.BMP.SIZE .EQ 2
|
||||||
ZPInputBufLen .EQ ZPBIN+4
|
S.BMP.DATA.OFS .EQ $A
|
||||||
ZPInputDataPtr .EQ ZPBIN+6
|
S.BMP.HDR.SIZE .EQ $E
|
||||||
ZPBMPRowBytes .EQ ZPBIN+8
|
S.BMP.W .EQ $12
|
||||||
ZPPIXRowBytes .EQ ZPBIN+10
|
S.BMP.H .EQ $16
|
||||||
ZPBufPtr .EQ ZPBIN+12
|
S.BMP.PLANES .EQ $1A
|
||||||
ZPLineCount .EQ ZPBIN+14
|
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)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -26,11 +52,12 @@ CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.DA #$61 6502,Level 1 (65c02)
|
.DA #$61 6502,Level 1 (65c02)
|
||||||
.DA #1 BIN Layout Version 1
|
.DA #1 BIN Layout Version 1
|
||||||
.DA 0
|
.DA #0 S.PS.F.EVENT
|
||||||
|
.DA #0
|
||||||
.DA CS.END-CS.START CS
|
.DA CS.END-CS.START CS
|
||||||
.DA DS.END-DS.START DS
|
.DA DS.END-DS.START DS
|
||||||
.DA #64 SS
|
.DA #64 SS
|
||||||
.DA #16 ZP
|
.DA #ZS.END-ZS.START Zero Page Size
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Relocation Table
|
* Relocation Table
|
||||||
|
@ -46,7 +73,10 @@ L.MSG.HEADER.KO .DA MSG.HEADER.KO
|
||||||
L.MSG.DONE .DA MSG.DONE
|
L.MSG.DONE .DA MSG.DONE
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT
|
CS.INIT clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN
|
||||||
.1 >INC.G ArgCount
|
.1 >INC.G ArgCount
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcs .7
|
bcs .7
|
||||||
|
@ -67,7 +97,8 @@ CS.INIT
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
.99 >LDYA L.MSG.USAGE
|
.99 >PUSHBI 0
|
||||||
|
>LDYA L.MSG.USAGE
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
lda #E.SYN
|
lda #E.SYN
|
||||||
sec
|
sec
|
||||||
|
@ -80,117 +111,33 @@ CS.INIT
|
||||||
|
|
||||||
.4 >LDA.G hInputBuf
|
.4 >LDA.G hInputBuf
|
||||||
bne .5
|
bne .5
|
||||||
jsr CS.INIT.OPENINPUT
|
jsr CS.RUN.OPENINPUT
|
||||||
bcc .1 scan for any other args
|
bcc .1 scan for any other args
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.5 >LDA.G hOutputFile
|
.5 >LDA.G hOutputFile
|
||||||
bne .99
|
bne .99
|
||||||
jsr CS.INIT.CREATEOUTPUT
|
jsr CS.RUN.CREATEOUTPUT
|
||||||
bcc .1 scan for any other args
|
bcc .1 scan for any other args
|
||||||
rts
|
.9 rts
|
||||||
|
|
||||||
.7 >LDA.G hOutputFile
|
.7 >LDA.G hOutputFile
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
bcs CS.INIT.RTS
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPBufPtr
|
>STYA ZPBufPtr
|
||||||
txa
|
txa
|
||||||
>STA.G hBuf
|
>STA.G hBuf
|
||||||
|
|
||||||
.8 clc
|
>LDA.G BMP.BPP
|
||||||
CS.INIT.RTS rts
|
cmp #1
|
||||||
|
beq CS.RUN.1
|
||||||
|
jmp CS.RUN.24
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT.OPENINPUT
|
CS.RUN.1 lda #S.BM.F.BBP1
|
||||||
>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
|
|
||||||
>STA.G PIX.Header+S.BM.F
|
>STA.G PIX.Header+S.BM.F
|
||||||
|
|
||||||
>LDA.G PIX.Header+S.BM.W
|
>LDA.G PIX.Header+S.BM.W
|
||||||
|
@ -249,13 +196,10 @@ CS.RUN lda #S.BM.F.BBP1
|
||||||
adc ZPInputBufLen+1
|
adc ZPInputBufLen+1
|
||||||
sta ZPInputDataPtr+1
|
sta ZPInputDataPtr+1
|
||||||
|
|
||||||
>PUSHWI S.BM
|
jsr CS.RUN.WRITE.HDR
|
||||||
>PUSHEA.G PIX.Header
|
|
||||||
>LDA.G hOutputFile
|
|
||||||
>SYSCALL FWrite
|
|
||||||
bcs CS.RUN.RTS
|
bcs CS.RUN.RTS
|
||||||
|
|
||||||
CS.RUN.LOOP inc ZPLineCount
|
CS.RUN.1.LOOP inc ZPLineCount
|
||||||
bne .1
|
bne .1
|
||||||
inc ZPLineCount+1
|
inc ZPLineCount+1
|
||||||
beq .8
|
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
|
.8 >LDYA L.MSG.DONE
|
||||||
>SYSCALL printf
|
>SYSCALL puts
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sec
|
sec
|
||||||
CS.RUN.RTS rts
|
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
|
CS.DOEVENT sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -311,7 +504,11 @@ CS.QUIT >LDA.G hBuf
|
||||||
beq .1
|
beq .1
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.1 >LDA.G hOutputFile
|
.1 >LDA.G hInputBuf
|
||||||
|
beq .2
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
.2 >LDA.G hOutputFile
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
>SYSCALL fclose
|
>SYSCALL fclose
|
||||||
|
@ -319,41 +516,119 @@ CS.QUIT >LDA.G hBuf
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
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
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB ROOT/X.TWIST.G
|
.INB USR/SRC/X.TWIST.G
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OptionList >PSTR "Vv"
|
OptionList >PSTR "Vv"
|
||||||
OptionVars .DA #bVerbose,#bVerbose
|
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.FILE.OK .AZ "BMP Loaded, %D Bytes Read\r\n"
|
||||||
MSG.HEADER.OK .AZ "BMP Size : %D x %D pixels\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\r\n"
|
MSG.HEADER.KO .AZ "Invalid Input File Format"
|
||||||
MSG.DONE .AZ "All Done!!!\r\n"
|
MSG.DONE .AZ "All Done!!!"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* LOWRES Patette : https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb
|
* LOWRES Patette : https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
0 #000000
|
PALETTE.RGB .HS 00000000 BLACK
|
||||||
1 #e31e60
|
.HS e31e6000 RED
|
||||||
2 #604ebd
|
.HS 604ebd00 DARK.BLUE
|
||||||
3 #ff44fd
|
.HS ff44fd00 PURPLE
|
||||||
4 #00a360
|
.HS 00a36000 DARK.GREEN
|
||||||
5 #9c9c9c
|
.HS 9c9c9c00 DARK.GRAY
|
||||||
6 #14cffd
|
.HS 14cffd00 BLUE
|
||||||
7 #d0c3ff
|
.HS d0c3ff00 LIGHT.BLUE
|
||||||
8 #607203
|
.HS 60720300 BROWN
|
||||||
9 #ff6a3c
|
.HS ff6a3c00 ORANGE
|
||||||
a #9c9c9c (yes it is the same as #5!)
|
.HS 9c9c9c00 DARK.GRAY
|
||||||
b #ffa0d0
|
.HS ffa0d000 PINK
|
||||||
c #14f53c
|
.HS 14f53c00 LIGHT.GREEN
|
||||||
d #d0dd8d
|
.HS d0dd8d00 YELLOW
|
||||||
e #72ffd0
|
.HS 72ffd000 AQUA
|
||||||
f #ffffff
|
.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
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
PIX.Header .BS S.BM
|
PIX.Header .BS S.BM
|
||||||
|
BMP.BPP .BS 1
|
||||||
ArgCount .BS 1
|
ArgCount .BS 1
|
||||||
hInputBuf .BS 1
|
hInputBuf .BS 1
|
||||||
hOutputFile .BS 1
|
hOutputFile .BS 1
|
||||||
|
@ -363,5 +638,5 @@ DS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/ROOT/BMP2PIX.S
|
SAVE USR/SRC/BIN/BMP2PIX.S
|
||||||
ASM
|
ASM
|
||||||
|
|
BIN
PALETTE.bmp
Normal file
BIN
PALETTE.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.3 KiB |
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 4,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TWIST .DA #%00000000,#%10000000,#%01000000,#%11000000,#%00100000,#%10100000,#%01100000,#%11100000
|
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
|
.DA #%00011111,#%10011111,#%01011111,#%11011111,#%00111111,#%10111111,#%01111111,#%11111111
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/ROOT/X.TWIST.G
|
SAVE USR/SRC/X.TWIST.G
|
||||||
|
|
Loading…
Reference in New Issue
Block a user