mirror of
https://github.com/A2osX/A2osX.git
synced 2024-05-28 12:41:34 +00:00
Kernel 0.9.1 : LibGui, MemMgr allow loading resources (FON,PIX....) into AUX MEM
This commit is contained in:
parent
e7681cc3d5
commit
62a907d0b3
|
@ -308,26 +308,48 @@ Create a new copy of this C-String
|
|||
## Out:
|
||||
+ A=hMem
|
||||
|
||||
# LoadStkObj.YA
|
||||
# NewStkObj.YA
|
||||
|
||||
## In:
|
||||
+ Y,A = Size Requested
|
||||
|
||||
## Out:
|
||||
+ A=hMem
|
||||
+ CC : success
|
||||
+ YA = PTR to Mem (Uninitialised)
|
||||
* X = hMem
|
||||
+ CS :
|
||||
+ A = EC
|
||||
|
||||
# LoadStkObj
|
||||
Load a file in AUX memory (Stock Objects)
|
||||
|
||||
## In:
|
||||
+ PUSHW = AUXTYPE (Handled by....
|
||||
+ PUSHB = TYPE ...
|
||||
+ PUSHB = MODE ...
|
||||
+ PUSHW = PATH ...FOpen)
|
||||
|
||||
## Out:
|
||||
+ Y,A = File Length
|
||||
+ X = hMem of Loaded Object in AUX mem
|
||||
|
||||
# GetStkObj.A
|
||||
|
||||
## In:
|
||||
+ A = hMem
|
||||
|
||||
## Out:
|
||||
+ A=hMem
|
||||
+ Y,A = PTR to MemBlock (AUX Mem)
|
||||
+ (X unmodified)
|
||||
|
||||
# FreeStkObj.A
|
||||
|
||||
## In:
|
||||
+ A = hMem To Free (AUX Memory)
|
||||
|
||||
## Out:
|
||||
+ A=hMem
|
||||
+ none.
|
||||
+ (X,Y unmodified)
|
||||
|
||||
# GetMemStat.YA
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
3599
.Fonts/SYS6X7.bdf
3599
.Fonts/SYS6X7.bdf
File diff suppressed because it is too large
Load Diff
BIN
.Fonts/SYS8x16.fnt
Normal file
BIN
.Fonts/SYS8x16.fnt
Normal file
Binary file not shown.
BIN
.Fonts/SYS8x8.fnt
Normal file
BIN
.Fonts/SYS8x8.fnt
Normal file
Binary file not shown.
|
@ -18,7 +18,23 @@ AUTO 6
|
|||
* S.CB.DstPtr : pointer to Save Buffer
|
||||
*--------------------------------------
|
||||
BITBLT >LDYA CB.CACHE+S.CB.SrcPtr
|
||||
>STYA ZPBMDataPtr
|
||||
bne BITBLT.1
|
||||
|
||||
* CB.CACHE+S.CB.SrcPtr+1 = 0, AUX Handle in CB.CACHE+S.CB.SrcPtr
|
||||
|
||||
tya
|
||||
>SYSCALL GetStkObj.A
|
||||
|
||||
sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
|
||||
jsr BITBLT.1
|
||||
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
rts
|
||||
|
||||
BITBLT.1 >STYA ZPBMDataPtr
|
||||
|
||||
ldy #S.BM-1
|
||||
|
||||
|
|
381
FNT2FON.S.txt
Normal file
381
FNT2FON.S.txt
Normal file
|
@ -0,0 +1,381 @@
|
|||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF /A2OSX.BUILD/FNT2FON
|
||||
*--------------------------------------
|
||||
.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 : FNT2FON FNT-File \r\n -V : Verbose Mode\r\n"
|
||||
MSG.FILE.OK >CSTR "Font File Loaded, %D Bytes Read\r\n"
|
||||
MSG.HEADER.OK >CSTR "Font File 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/FNT2FON.S
|
||||
ASM
|
|
@ -220,8 +220,8 @@ SYS.GetMemStat.YA .EQ $EE
|
|||
* .EQ $F4
|
||||
* .EQ $F6
|
||||
|
||||
* .EQ $F8
|
||||
SYS.LoadStkObj.YA .EQ $FA
|
||||
SYS.NewStkObj.YA .EQ $F8
|
||||
SYS.LoadStkObj .EQ $FA
|
||||
SYS.GetStkObj.A .EQ $FC
|
||||
SYS.FreeStkObj.A .EQ $FE
|
||||
*--------------------------------------
|
||||
|
|
|
@ -37,6 +37,17 @@ H.BIN.DRV.REL.TABLE .EQ 0
|
|||
ZPKERNEL .EQ $0
|
||||
ZPMEMMGR .EQ $8
|
||||
*--------------------------------------
|
||||
* MoveAux / XFer
|
||||
*--------------------------------------
|
||||
A1L .EQ $3C
|
||||
A2L .EQ $3E
|
||||
A4L .EQ $42
|
||||
|
||||
XFer.JMP .EQ $3ED
|
||||
|
||||
AuxMove .EQ $C311
|
||||
XFer .EQ $C314 CS:M->X, VS:Use Aux ZP
|
||||
*--------------------------------------
|
||||
* $42-$47 ProDOS Block Device Drivers Main
|
||||
*--------------------------------------
|
||||
* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP)
|
||||
|
@ -91,7 +102,7 @@ K.SP.PARAMS .EQ $0360 Max 9 bytes
|
|||
K.MLI.PATH .EQ $0369 64+1
|
||||
K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now)
|
||||
*--------------------------------------
|
||||
K.STACKTOP .EQ $03EF down to $3E0
|
||||
K.STACKTOP .EQ $03ED XFer !!! down to $3E0
|
||||
*--------------------------------------
|
||||
*** $3F0-$3FF IRQ Handler.... ***
|
||||
*--------------------------------------
|
||||
|
|
|
@ -52,7 +52,8 @@ S.CB.MODE.MONO .EQ %00000001 b/w (1 bit/pixel)
|
|||
*S.CB.MODE.C8 .EQ %00000100
|
||||
S.CB.MODE.C16 .EQ %00001000 16 colors (4 bits/pixel)
|
||||
*S.CB.MODE.C256 .EQ %00010000 256 colors (8 bits/pixel)
|
||||
S.CB.COLOR .EQ 3
|
||||
S.CB.COLOR .EQ 3 xPIXEL,xLINE,FILLRECT
|
||||
S.CB.FONT .EQ 3 DRAWTEXT
|
||||
S.CB.X1 .EQ 4 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE
|
||||
S.CB.Y1 .EQ 6 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE
|
||||
S.CB.X2 .EQ 8 VLINE,FILLRECT,DRAWLINE
|
||||
|
@ -87,6 +88,17 @@ S.BM.MASK.OFS .EQ 6
|
|||
*
|
||||
S.BM .EQ 8
|
||||
*--------------------------------------
|
||||
S.FON.H .EQ 0
|
||||
S.FON.Ascent .EQ 1
|
||||
S.FON.PixW .EQ 2 if 0, variable W
|
||||
S.FON.PixH .EQ 3
|
||||
S.FON.First .EQ 4
|
||||
S.FON.Last .EQ 5
|
||||
S.FON.Default .EQ 6
|
||||
S.FON.Break .EQ 7
|
||||
*
|
||||
S.FON .EQ 8
|
||||
*--------------------------------------
|
||||
S.MOUSE.X1 .EQ 0
|
||||
S.MOUSE.Y1 .EQ 2
|
||||
S.MOUSE.X2 .EQ 4
|
||||
|
|
|
@ -306,11 +306,11 @@ AUTO 6
|
|||
*--------------------------------------
|
||||
.MA LDYA
|
||||
.DO ]#=2
|
||||
lda ]1+1,]2
|
||||
ldy ]1,]2
|
||||
lda ]1+1,]2
|
||||
.ELSE
|
||||
lda ]1+1
|
||||
ldy ]1
|
||||
lda ]1+1
|
||||
.FIN
|
||||
.EM
|
||||
*--------------------------------------
|
||||
|
|
|
@ -59,22 +59,10 @@ CS.INIT >LDYA L.MSG.INIT
|
|||
>PUSHBI $CB Type
|
||||
>PUSHBI SYS.FOpen.R
|
||||
>PUSHW L.FILENAME
|
||||
>SYSCALL LoadFile
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
>SYSCALL GetMemPtr.A
|
||||
>STYA CB.BitBlt+S.CB.SrcPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #S.BM.W+3
|
||||
ldx #3
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
sta CB.BitBlt+S.CB.SrcW,x
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
sta CB.BitBlt+S.CB.SrcPtr
|
||||
|
||||
jsr Destop.Paint
|
||||
|
||||
|
@ -206,8 +194,8 @@ CB.BitBlt .DA #S.CB.CMD.BITBLT
|
|||
.DA #0
|
||||
.DA 0 X1
|
||||
.DA 0 Y1
|
||||
.BS 2 W
|
||||
.BS 2 H
|
||||
.DA 141 W
|
||||
.DA 150 H
|
||||
.DA 200 DestX
|
||||
.DA 60 DestY
|
||||
.BS 2 SrcPtr
|
||||
|
|
|
@ -188,6 +188,22 @@ BITBLT
|
|||
*--------------------------------------
|
||||
GETRECTBUFSIZE
|
||||
*--------------------------------------
|
||||
* In:
|
||||
* S.CB.S.CB.FONT : hFont
|
||||
* S.CB.SrcPtr : Ptr to Text
|
||||
* S.CB.DstPtr : Buffer Size (in bytes)
|
||||
*--------------------------------------
|
||||
GETTEXTSIZE lda CB.Cache+S.CB.FONT
|
||||
ldx #SYS.GetMemPtr.A
|
||||
jsr GO.Kernel
|
||||
>STYA ZPFontPtr
|
||||
*--------------------------------------
|
||||
* In:
|
||||
* S.CB.S.CB.FONT : hFont
|
||||
* S.CB.SrcPtr : Ptr to Text
|
||||
* S.CB.DstPtr : Buffer Size (in bytes)
|
||||
*--------------------------------------
|
||||
DRAWTEXT
|
||||
*--------------------------------------
|
||||
* IN:
|
||||
* Y,A = num1 (16)
|
||||
|
@ -221,6 +237,8 @@ YAMultX stx GBYTE
|
|||
bne .2
|
||||
rts
|
||||
*--------------------------------------
|
||||
GO.Kernel jmp ($E000,x)
|
||||
*--------------------------------------
|
||||
Mono.NMasks .DA #%11111110
|
||||
.DA #%11111101
|
||||
.DA #%11111011
|
||||
|
|
|
@ -151,8 +151,8 @@ K.SYSCALL.JMP .DA 0 $00
|
|||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.LoadStkObj.YA
|
||||
.DA K.NewStkObj.YA
|
||||
.DA K.LoadStkObj
|
||||
.DA K.GetStkObj.A
|
||||
.DA K.FreeStkObj.A
|
||||
*--------------------------------------
|
||||
|
|
|
@ -34,13 +34,13 @@ Mem.ReqFlags .EQ ZPMEMMGR+6 store requested Flags
|
|||
*\--------------------------------------
|
||||
K.GetMem >PULLB Mem.ReqFlags store requested flags
|
||||
|
||||
>PULLA get requested size LO
|
||||
tay
|
||||
>PULLA get requested size HI
|
||||
sta Mem.ReqSize+1
|
||||
>PULLYA get requested size
|
||||
|
||||
bit Mem.ReqFlags S.MEM.F.AUX ?
|
||||
bpl K.GetMem.I
|
||||
.HS 2C bit abs
|
||||
|
||||
K.GetMemAux.YA stz Mem.ReqFlags
|
||||
|
||||
sta SETREADAUX Aux Mem requested,switch to AUX
|
||||
sta SETWRITEAUX
|
||||
|
@ -77,9 +77,10 @@ K.GetMem0.YA ldx #S.MEM.F.INIT0
|
|||
* A = EC
|
||||
*\--------------------------------------
|
||||
K.GetMem.YA stz Mem.ReqFlags
|
||||
sta Mem.ReqSize+1
|
||||
|
||||
K.GetMem.I tya
|
||||
K.GetMem.I sta Mem.ReqSize+1
|
||||
|
||||
tya
|
||||
bit #$0F 16 bytes aligned ?
|
||||
beq .10 yes, request it
|
||||
|
||||
|
@ -443,21 +444,21 @@ K.NewStr.YA >STYA .1+1
|
|||
>STYA .4+1
|
||||
|
||||
stz Mem.ReqFlags
|
||||
stz Mem.ReqSize+1
|
||||
|
||||
ldy #0
|
||||
lda #0
|
||||
|
||||
.1 lda $ffff,y
|
||||
.1 ldx $ffff,y
|
||||
beq .2
|
||||
iny
|
||||
bne .1
|
||||
inc Mem.ReqSize+1
|
||||
inc
|
||||
inc .1+2
|
||||
bne .1
|
||||
|
||||
.2 iny Add one for ending 0
|
||||
bne .3
|
||||
inc Mem.ReqSize+1
|
||||
inc
|
||||
|
||||
.3 jsr K.GetMem.I
|
||||
bcs .9
|
||||
|
@ -532,29 +533,106 @@ K.SListFree
|
|||
|
||||
*--------------------------------------
|
||||
MEM.SList.Next
|
||||
|
||||
|
||||
*/--------------------------------------
|
||||
* # LoadStkObj.YA
|
||||
* # NewStkObj.YA
|
||||
* ## In:
|
||||
* Y,A = Size Requested
|
||||
* ## Out:
|
||||
* A=hMem
|
||||
* CC : success
|
||||
* YA = PTR to Mem (Uninitialised)
|
||||
* X = hMem
|
||||
* CS :
|
||||
* A = EC
|
||||
*\--------------------------------------
|
||||
K.LoadStkObj.YA
|
||||
K.NewStkObj.YA sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
|
||||
jsr K.GetMem.YA
|
||||
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # LoadStkObj
|
||||
* Load a file in AUX memory (Stock Objects)
|
||||
* ## In:
|
||||
* PUSHW = AUXTYPE (Handled by....
|
||||
* PUSHB = TYPE ...
|
||||
* PUSHB = MODE ...
|
||||
* PUSHW = PATH ...FOpen)
|
||||
* ## Out:
|
||||
* Y,A = File Length
|
||||
* X = hMem of Loaded Object in AUX mem
|
||||
*\--------------------------------------
|
||||
K.LoadStkObj >SYSCALL LoadFile
|
||||
bcs .99
|
||||
|
||||
stx .8+1 Save MAIN hMem
|
||||
>STYA A2L Save LEN temporarly
|
||||
|
||||
jsr K.GetMemAux.YA
|
||||
bcs .9
|
||||
stx .80+1
|
||||
>STYA A4L Save Destination Address in AUX
|
||||
|
||||
lda .8+1
|
||||
jsr K.GetMemPtr.A
|
||||
|
||||
>STYA A1L Save MAIN base Ptr
|
||||
|
||||
pha Add Allocated LEN
|
||||
tya
|
||||
clc
|
||||
adc A2L
|
||||
sta A2L
|
||||
pla
|
||||
adc A2L+1
|
||||
sta A2L+1 to get End address in A2L/H
|
||||
|
||||
sec Main To Aux
|
||||
jsr AuxMove
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
jsr K.FreeMem.A release MAIN memory
|
||||
|
||||
.80 lda #$ff Returns AUX hMem
|
||||
rts
|
||||
|
||||
.9 pha
|
||||
jsr .8
|
||||
pla
|
||||
sec
|
||||
.99 rts
|
||||
*/--------------------------------------
|
||||
* # GetStkObj.A
|
||||
* ## In:
|
||||
* ## Out:
|
||||
* A = hMem
|
||||
* ## Out:
|
||||
* Y,A = PTR to MemBlock (AUX Mem)
|
||||
* (X unmodified)
|
||||
*\--------------------------------------
|
||||
K.GetStkObj.A
|
||||
K.GetStkObj.A sta SETREADAUX
|
||||
|
||||
jsr K.GetMemPtr.A
|
||||
|
||||
sta CLRREADAUX
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # FreeStkObj.A
|
||||
* ## In:
|
||||
* A = hMem To Free (AUX Memory)
|
||||
* ## Out:
|
||||
* A=hMem
|
||||
* none.
|
||||
* (X,Y unmodified)
|
||||
*\--------------------------------------
|
||||
K.FreeStkObj.A
|
||||
K.FreeStkObj.A sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
|
||||
jsr K.FreeMem.A
|
||||
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # GetMemStat.YA
|
||||
* ## In:
|
||||
|
|
Loading…
Reference in New Issue
Block a user