Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-02-27 17:46:40 +01:00
parent 7fe7639385
commit 1969e7e8ba
13 changed files with 157 additions and 106 deletions

View File

@ -1,9 +1,14 @@
# A2osX Macro Assembler (0.9.3)
# A2osX Macro Assembler (0.94)
## Description
Multi-CPU macro assembler based on S-C MASM 3.0 dialect
## Difference with S-C MASM 3.0
Symbols are case sensitive
no .AC support
## Directives
| Code | Description | Compatibility | Status | Syntax | Comment |
@ -12,30 +17,30 @@ Multi-CPU macro assembler based on S-C MASM 3.0 dialect
| .AS | Ascii String | S-C,A2osX | Working | `.AS dTEXTd` where d is any delimiter `.AS -"TEXT"`produce ascii code with b7=1 | |
| .AT | Ascii string Terminated | S-C,A2osX | Working | (same as above) | |
| .AZ | Ascii string Zero terminated (C String) | S-C,A2osX | Working | (same as above) | |
| .BS | Block Storage | S-C,A2osX | Working | | |
| .BS | Block Storage | S-C,A2osX | Working | .BS x[,b] | |
| .DA | Data | S-C,A2osX | Working | | |
| .DO | conditional start | S-C,A2osX | Working | | |
| .DU,.DUMMY | begin DUmmy section | S-C,A2osX | Working | | |
| .ED | End Dmmy section | S-C,A2osX | Working | | |
| .ED | End Dummy section | S-C,A2osX | Working | | |
| .DA | DAta | S-C,A2osX | Working | | |
| .ELSE | conditional ELSE | S-C,A2osX | Working | | |
| .EM | End Macro | S-C,A2osX | Working | | |
| .EN | ENd of source code | S-C,A2osX | In Progress | | |
| .EN | ENd of source code | S-C,A2osX | IGNORED | | |
| .EP | End Phase | S-C,A2osX | Working | | |
| .EQ | EQuate | S-C,A2osX | Working | | |
| .FIN | conditional end| S-C,A2osX | Working | | |
| .PH | PHase start| S-C,A2osX | Working | | |
| .HS | Hex String | S-C,A2osX | Working | `HS FE1A78` delimiter allowed : `HS 00.11,22` | |
| .IN,.INB,.INBx | | S-C,A2osX | Working | | |
| .LI,.LIST | | S-C,A2osX | Working | | |
| .MA | MAcro deffinition | S-C,A2osX | Working | | |
| .IN,.INB,.INBx | | S-C,A2osX | Working | .INB MYFILE | |
| .LI,.LIST | | S-C,A2osX | Working | .LIST ON/OFF CON/COFF MON/MOFF XON/XOFF | |
| .MA | MAcro deffinition | S-C,A2osX | Working | .MA >MYMACRO | |
| .OP | OPCode | S-C,A2osX | Working | `.OP cpu` where cpu is one of 6502,65C02,65R02,65816,Z80,SW16 | |
| .OR | ORigin | S-C,A2osX | Working | | |
| .OR | ORigin | S-C,A2osX | Working | .OR $2000 | |
| .PG | PaGe control | S-C,A2osX | IGNORED | | |
| .PH | PHase | S-C,A2osX | Working | | |
| .SE | | S-C,A2osX | Working | | |
| .TA | Target Address| S-C,A2osX | IGNORED | | |
| .TF | Target File | S-C,A2osX | Working | | |
| .TF | Target File | S-C,A2osX | Working | .TF TargetFile[,Txxx] | only ,TSYS supported |
| .TI | TItle | S-C,A2osX | IGNORED | | |
| .US | USer defined | S-C,A2osX | IGNORED | | |

Binary file not shown.

View File

@ -2,15 +2,12 @@ NEW
AUTO 3,1
*---------------------------------------
DIR.Reset lda #$80
ldy #ASM.LI.ON
sta (pData),y
>STA.G ASM.LI.ON
lda #0
ldy #ASM.LI.CON
>STZ.G ASM.LI.CON
iny #ASM.LI.MON
sta (pData),y
ldy #ASM.LI.MON
sta (pData),y
ldy #ASM.LI.XON
iny #ASM.LI.XON
sta (pData),y
>STA.G MAC.StkPtr
@ -198,6 +195,7 @@ DIR.DU >LDA.G ASM.DU.ON
lda #$80
sta (pData),y
ldy #ASM.PC.DU
jsr DIR.SavePC
clc
@ -491,23 +489,37 @@ DIR.OP.SYNERR lda #E.SYNTAX.ERROR
sec
rts
*---------------------------------------
DIR.OR jsr SRC.GetNextCharNB
DIR.OR
* >DEBUG
jsr SRC.GetNextCharNB
bcs DIR.OP.SYNERR
jsr EXP.Eval
bcs .9
ldy #ASM.PC
ldx #0
ldy #ASM.PC
.1 lda SRC.ACC,x
sta (pData),y
inx
iny
inx
cpx #4
bne .1
clc
>LDA.G ASM.DU.ON
bmi .8
>LDA.G ASM.PH.ON
bmi .8
lda SRC.ACC
>STA.G DST.AUXTYPE
lda SRC.ACC+1
iny
sta (pData),y
.8 clc
.9 rts
*---------------------------------------
DIR.PG clc
@ -527,11 +539,13 @@ DIR.PH >LDA.G ASM.PH.ON
sec
rts
*---------------------------------------
DIR.TA clc
rts
DIR.TA
DIR.TA.8 clc
DIR.TA.RTS rts
*---------------------------------------
DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
beq .8
beq DIR.TA.8
>LDA.G ArgDstFile
beq .1
@ -544,24 +558,73 @@ DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
>LDYA ZPLinePtr
.2 >PUSHYA
.2 >SYSCALL strdup
bcs DIR.TA.RTS
>STYA ZPPtr1
stx ZPPtr2
lda #S.FI.T.BIN
sta ZPPtr2+1
ldy #$ff
.3 iny
lda (ZPPtr1),y
beq .7
cmp #','
bne .3
lda #0
sta (ZPPtr1),y
iny
lda (ZPPtr1),y
cmp #'T'
beq .4
.30 lda #E.SYNTAX.ERROR
bra .9
.4 ldx #0
.5 iny
lda (ZPPtr1),y
cmp DIR.SYS,x including \0
bne .30
inx
cpx #4
bne .5
lda #S.FI.T.SYS
sta ZPPtr2+1
.7 >PUSHW ZPPtr1
>PUSHWI 0 Allocate
>SYSCALL RealPath
bcs .9
txa
>STA.G DST.hFILENAME
>SYSCALL getmemptr
>PUSHYA
>PUSHBI O.WRONLY+O.CREATE
>PUSHBI S.FI.T.BIN
>PUSHWZ
>PUSHB ZPPtr2+1 Type
>PUSHW.G DST.AUXTYPE
>SYSCALL FOpen
bcs .9
>STA.G DST.hREFNUM
.8 clc
.9 rts
clc
.9 php
pha
lda ZPPtr2
>SYSCALL freemem
pla
plp
rts
*---------------------------------------
DIR.TI clc
rts
@ -572,14 +635,17 @@ DIR.US clc
DIR.SavePC phy
plx
ldy #ASM.PC+3
.1 lda (pData),y
pha
dey
cpy #ASM.PC-1
bne .1
phx
ply
ldx #3
.2 pla
sta (pData),y
iny
@ -589,18 +655,22 @@ DIR.SavePC phy
rts
*---------------------------------------
DIR.RestorePC ldx #3
.1 lda (pData),y
pha
iny
dex
bpl .1
ldy #ASM.PC+3
ldx #3
.2 pla
sta (pData),y
dey
dex
bpl .2
rts
*---------------------------------------
MAN

View File

@ -144,21 +144,26 @@ EXP.Eval.Next stz SRC.ACC.F
cmp #','
bne EXP.EvalExitSYN
bra EXP.EvalOperator
.45 jsr SRC.GetNextChar
bra EXP.EvalOperator
bra EXP.EvalOperator
.42 jsr SRC.IsLetter Symbol ?
bcs EXP.EvalExitSYN
jsr EXP.GetGlobal
bcs EXP.EvalExitUND
bra EXP.EvalOperator
EXP.EvalExitOK >LDA.G EXP.Modifier
beq .8
asl
tax
jmp (J.EXP.MOD-2,x)
.8 clc
EXP.EvalExitRTS rts
EXP.EvalExitSYN lda #E.SYNTAX.ERROR
sec
rts

View File

@ -49,12 +49,12 @@ FIO.LOAD.CPU >STYA ZPPtr2
.3 stz ASM.CPU.FILE,x
>LDA.G ASM.T.hMem
>LDA.G ASM.hCPUFILE
beq .4
>SYSCALL FreeMem
>STZ.G ASM.T.hMem
>STZ.G ASM.hCPUFILE
.4 >PUSHW L.MSG.T.FILE
>PUSHW L.ASM.CPU.FILE
@ -69,7 +69,7 @@ FIO.LOAD.CPU >STYA ZPPtr2
bcs .9
txa
>STA.G ASM.T.hMem
>STA.G ASM.hCPUFILE
>SYSCALL GetMemPtr
>STYA ZPPtr1
@ -118,11 +118,12 @@ FIO.OpenFile >STYA ZPPtr1
rts
.1 >PUSHW ZPPtr1
>PUSHW L.FIO.Stat
>PUSHW ZPTmpBuf
>SYSCALL Stat
bcs .99
lda FIO.Stat+S.STAT.P.TYPE
ldy #S.STAT.P.TYPE
lda (ZPTmpBuf),y
cmp #S.FI.T.TXT
bne .2
@ -137,7 +138,9 @@ FIO.OpenFile >STYA ZPPtr1
.3 >PUSHW ZPPtr1
txa
>PUSHA
>PUSHB FIO.Stat+S.STAT.P.TYPE
ldy #S.STAT.P.TYPE
lda (ZPTmpBuf),y
>PUSHA
>PUSHWZ
>SYSCALL FOpen
bcs .99
@ -154,7 +157,10 @@ FIO.OpenFile >STYA ZPPtr1
adc #SRC.hFILETYPES
tay
lda FIO.Stat+S.STAT.P.TYPE
phy
ldy #S.STAT.P.TYPE
lda (ZPTmpBuf),y
ply
sta (pData),y
>INC.G SRC.Depth

View File

@ -95,7 +95,7 @@ OUT.PrintLineErr
inc
>PUSHA
>PUSHBI 1
jsr OUT.Print
jsr OUT.Print
jmp OUT.PrintCR
@ -231,6 +231,9 @@ OUT.EmitByte phy
>LDA.G ASM.PASS
beq .10
>LDA.G ASM.DU.ON
bmi .10
pla
pha
>PUSHA
@ -254,8 +257,10 @@ OUT.EmitByte phy
jsr OUT.PrintCR
.1 jsr OUT.Reset
lda #0
ldy #OUT.Buf
.2 inc
sta (pData),y
clc

View File

@ -941,14 +941,6 @@ SRC.DoCheck sec
.8 rts CS if TRUE
*---------------------------------------
*DEBUG.PSTR pha
* >PUSHW L.MSG.PSTR
* pla
* >PUSHYA
* >PUSHBI 2
* >SYSCALL printf
* rts
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.S.SRC
LOAD USR/SRC/BIN/ASM.S

View File

@ -27,9 +27,6 @@ SYM.Init >SYSCALL SListNew
>STA.G SYM.hGlobalBuf
.9 rts
*---------------------------------------
SYM.Reset >STZ.G SYM.bInGlobal
rts
*---------------------------------------
SYM.Quit >LDA.G SYM.hGlobalBuf
beq .1

View File

@ -33,6 +33,9 @@ ZPMacroBuf .BS 2
ZPMacroArgBuf .BS 2
ZPMacroArgCnt .BS 1
DIR.Byte .BS 1
DIR.Word .BS 2
ZPPtr1 .BS 2
ZPPtr2 .BS 2
@ -127,7 +130,6 @@ L.MSG.LSYMBOL .DA MSG.LSYMBOL
L.MSG.PSYMBOL .DA MSG.PSYMBOL
L.MSG.SUMMARY .DA MSG.SUMMARY
L.MSG.END .DA MSG.END
L.MSG.PSTR .DA MSG.PSTR
L.MSG.CRLF .DA MSG.CRLF
L.MSG.WORD .DA MSG.WORD
L.MSG.ACC .DA MSG.ACC
@ -137,7 +139,6 @@ L.MSG.T.FILE .DA MSG.T.FILE
L.SRC.AM.StrBuf .DA SRC.AM.StrBuf
L.ASM.6502 .DA ASM.6502
L.ASM.CPU.FILE .DA ASM.CPU.FILE
L.FIO.Stat .DA FIO.Stat
L.SRC.ACC.F .DA SRC.ACC.F
L.SRC.ACC .DA SRC.ACC
L.SRC.ARG .DA SRC.ARG
@ -337,9 +338,10 @@ CS.RUN ldy #S.PS.hStdIn
bcs .99
jsr DIR.Reset
jsr SYM.Reset
jsr MAC.Reset
>STZ.G SYM.bInGlobal
.10 >LDYA ZPLineBuf
>STYA ZPLinePtr
@ -415,7 +417,7 @@ CS.QUIT jsr FIO.FileClose
jsr SYM.Quit
ldy #ASM.T.hMem
ldy #ASM.hCPUFILE
jsr .7
ldy #SRC.hFILENAME
@ -501,6 +503,8 @@ SRC.MOD.RESERVED >PSTR "#/^<>"
SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/"
SRC.AM.RESERVED >PSTR "[](),"
*---------------------------------------
DIR.SYS .AZ "SYS"
*---------------------------------------
ASM.6502 .AZ "6502"
MSG.HELP .AS "A2osX-Macro Assembler (S-C MASM 3.0 Based)\r\n"
.AS "Usage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\r\n"
@ -526,15 +530,12 @@ MSG.LSYMBOL .AZ " .%d=%h%h%h%h"
MSG.PSYMBOL .AZ " :%d(%d)=%h%h%h%h"
MSG.SUMMARY .AZ "\r\nSymbol Table Size : %5D Bytes.\r\n"
MSG.END .AZ "**** End Of Assembly."
MSG.PSTR .AS "{%S}"
MSG.CRLF .AZ "\r\n"
MSG.WORD .AZ ">$%H"
MSG.ACC .AZ "%b,%d,%h%h%h%h\r\n"
*---------------------------------------
ASM.CPU.FILE .BS 65
FIO.Stat .BS S.STAT
SRC.ACC.F .BS 1
SRC.ACC.SIZE .BS 1
SRC.ACC .BS 4
@ -563,19 +564,16 @@ SRC.hFILETYPES .BS IN.MAXDEPTH
SRC.LINENUM .BS 2
SRC.AMID .BS 1
ASM.hCPUFILE .BS 1
DST.hFILENAME .BS 1
DST.hREFNUM .BS 1
DST.hFILETYPE .BS 1
DIR.Word .BS 2
DIR.Byte .BS 1
DST.AUXTYPE .BS 2
EXP.Modifier .BS 1
EXP.Prefix .BS 1
EXP.Operator .BS 1
ASM.T.hMem .BS 1
ASM.PASS .BS 1
ASM.DO.StackPtr .BS 1

View File

@ -203,10 +203,10 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
.9 sec
rts
*--------------------------------------
CS.RUN.OPEN >PUSHWZ Aux type
>PUSHBI 0 Type
CS.RUN.OPEN >PUSHW ZPPtr1
>PUSHBI O.RDONLY
>LDYA ZPPtr1
>PUSHBI 0 Type
>PUSHWZ Aux type
>SYSCALL FOpen
rts
*--------------------------------------

View File

@ -48,7 +48,7 @@ CS.RUN >LDYA L.MemStat
>SYSCALL GetMemStat
>LDYA L.MSG.Main
>SYSCALL puts
>SYSCALL PutS
lda MemStat+S.MSTAT.MF
sec
@ -61,7 +61,7 @@ CS.RUN >LDYA L.MemStat
>SLEEP
>LDYA L.MSG.Aux
>SYSCALL puts
>SYSCALL PutS
lda MemStat+S.MSTAT.XF
sec
@ -74,7 +74,7 @@ CS.RUN >LDYA L.MemStat
>SLEEP
>LDYA L.MSG.Kernel
>SYSCALL puts
>SYSCALL PutS
lda MemStat+S.MSTAT.DH
sec
@ -84,8 +84,8 @@ CS.RUN >LDYA L.MemStat
sbc MemStat+S.MSTAT.DF+1
ldx #S.MSTAT.DL
jsr CS.RUN.PRINT
>LDYA L.MSG.END
>SYSCALL puts
>LDYA L.MSG.End
>SYSCALL PutS
lda #0
sec
rts
@ -107,7 +107,7 @@ CS.RUN.PRINT pha
pla
>PUSHYA
>PUSHBI 14
>SYSCALL printf
>SYSCALL PrintF
rts
*--------------------------------------
CS.DOEVENT sec

View File

@ -132,8 +132,6 @@ CS.RUN.ETCINIT >LDYAI 256
cmp #'#'
beq .1
>LDYA BufPtr
>SYSCALL puts
>LDYA BufPtr
jsr CS.RUN.EXEC.YA
bra .1

View File

@ -1,8 +1,6 @@
NEW
AUTO 3,1
*--------------------------------------
INITD .EQ 1
*--------------------------------------
Kernel.Init2 sei
ldx #$FF
txs
@ -153,30 +151,12 @@ Kernel.Init3C >PUSHWI MSG.Init3
jsr PwdMgrInit
.DO INITD=0
lda KBD
bpl .7
sta KBDSTROBE
cmp #146 CTRL-R for ROOT mode
bne .7
>PUSHWI MSG.CTRLR
>PUSHBI 0
>SYSCALL2 printf
>PUSHWI BINSH
bra .8
.7 >PUSHWI MSG.EtcInit
>PUSHWI ETCINIT
>PUSHBI 2
>SYSCALL2 printf
>PUSHWI ETCINIT
.8 .ELSE
>PUSHWI MSG.EXEC
>PUSHWI SBININITD
>PUSHBI 2
>SYSCALL printf
>PUSHWI SBININITD
.FIN
>PUSHBI 0 PS Flags
>SYSCALL2 ExecL
bcs Kernel.Init3.Err
@ -1166,7 +1146,7 @@ MSG.TSK .AZ "Task Manager..."
MSG.PWD .AZ "Password Manager..."
MSG.CTRLR .AZ "Ctrl-R Pressed, entering ROOT mode..."
MSG.PWDINIT .AZ "Loading ETC/PASSWD file..."
MSG.ETCINIT .AZ "Executing %s..."
MSG.EXEC .AZ "Executing %s..."
MSG.StartupErr .AZ "Failed : [$%h]\r\n"
MSG.Init3.OK .AZ "OK\r\nA2osX[Stage3]:Complete.\r\n"
*--------------------------------------
@ -1194,12 +1174,7 @@ I.ENV.ROOT .AZ "ROOT"
I.ENV.PATH .AZ "PATH=${BOOT}sbin/:${BOOT}bin/"
I.ENV.LIB .AZ "LIB=${BOOT}lib/"
I.ENV.DRV .AZ "DRV=${BOOT}drv/"
.DO INITD=0
BINSH .AZ "${BOOT}bin/sh"
ETCINIT .AZ "${ROOT}etc/init"
.ELSE
SBININITD .AZ "${ROOT}sbin/initd"
.FIN
ETCPASSWD .AZ "${ROOT}etc/passwd"
*--------------------------------------
PwdMgr.ROOT .DA #S.SESSION.P.ROOT