ProDOS.FX/16M, A2osX 1.00/16M

This commit is contained in:
burniouf 2025-01-19 17:12:51 +01:00
parent c483f7b04e
commit c11287b302
335 changed files with 37029 additions and 22920 deletions

View File

@ -54,7 +54,7 @@ CS.INIT clc
CS.RUN
* Put your code here
>LDYA L.MSG.HELLO
>SYSCALL PutS
>LIBC PutS
.8 lda #0 Exit Code = Success
sec QUIT Process

View File

@ -54,7 +54,7 @@ CS.INIT clc
CS.RUN
* Put your code here
* >LDYA L.MSG.Test Load EFFECTIVE address
* >SYSCALL PutS Call API to print a string
* >LIBC PutS Call API to print a string
.8 lda #0 Exit Code = Succes
sec QUIT Process
rts

View File

@ -1,4 +1,4 @@
# A2osX Macro Assembler (0.95)
# A2osX Macro Assembler (0.94)
## Description
@ -33,7 +33,7 @@ Table-driven, add your favorite CPU creating a new CPU asm.xxxx file.
| .BS | Block (Byte) Storage | S-C, A2osX | Working | `.BS count[,value]` | Reserves `count` bytes in output and sets them to `value` (or zero if omitted) |
| .CS | C-string | S-C 3.1, A2osX | Working | `.CS "text\a\b\e\f\n\r\n\r\t\v"` | |
| .CZ | C-String Zero terminated| S-C 3.1, A2osX | Working | (same as above) | ZERO-terminated |
| .DA | DAta value | S-C, A2osX | Working | `.DA value` | 2-byte address: `.DA $1234` (see expressions) |
| .DA | DAta value | S-C, A2osX | Working | `.DA value` | 2-byte address: `.DA $1234` only high byte: `.DA /$1234` only low byte: `.DA #$1234` |
| .DO | conditional start | S-C, A2osX | Working | | |
| .DU,.DUMMY | begin DUmmy section | S-C, A2osX | Working | | |
| .ED | End Dummy section | S-C, A2osX | Working | | |
@ -59,26 +59,6 @@ Table-driven, add your favorite CPU creating a new CPU asm.xxxx file.
| .TI | TItle | S-C, A2osX | IGNORED | | |
| .US | USer defined | S-C, A2osX | IGNORED | | |
## Expressions
| Code | Description | Scope |
|-|-|-|
| \- | Negate : `.AS -"String"` output | .AS .AT .AZ .CS .CZ |
| \' | Char, MSB=0 `lda #'a | OPCODES |
| \" | Char, MSB=1 `lda #"a | OPCODES |
| \# | Immediate LO byte : `.DA #$1234` output 34 | .DA |
| \/ | Immediate HI byte : `.DA /$1234` output 12 | .DA
| \^ | Immediate 3rd byte : `.DA ^$123456` output 12 | .DA |
| \< | Force 24 bits output LO : `.DA <$123456` output 56 34 12 | .DA |
| \> | Force 32 bits output LO : `.DA >$123456` output 00 56 34 12 | .DA |
|-|-|-|
| \> | Force 16 bits operand : `ldx >ZP.A1L` output AE 3C 00 | OPCODES |
| \>\> | Force 24 bits operand : `lda >>ZP.A1L` output AF 3C 00 00 | OPCODES |
|-|-|-|
| \#\# | Immediate word LO : `lda ##IMMVAL` | 65816 OPCODES |
| \/\/ | Immediate word MID : `lda //IMMVAL` | 65816 OPCODES |
| \^\^ | Immediate word HI: `lda ^^IMMVAL` | 65816 OPCODES |
## License
A2osX is licensed under the GNU General Pulic License.
@ -96,4 +76,4 @@ The full A2osX license can be found **[Here](../LICENSE)**.
## Copyright
Copyright 2015 - 2024, Remy Gibert and the A2osX contributors.
Copyright 2015 - 2022, Remy Gibert and the A2osX contributors.

File diff suppressed because it is too large Load Diff

View File

@ -7,22 +7,25 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
Initialize screen & create a new context
## C
`short int hCTX tuiInit();`
`CTX *pCTX tuiInit();`
## ASM
`>LIBCALL hLIBTUI,LIBTUI.Init`
`>SS`
`>PUSHWI retries`
`>LIBCALL pLIBTUI,LIBTUI.Init`
`>SR`
## RETURN VALUE
CC = success, A = hCTX
CC = success, Y,A = pCTX
# tuiClose
destroy context
## C
`void fastcall tuiClose(short int hCTX);`
`void tuiClose(CTX *pCTX);`
## ASM
`lda hCTX`
`>PUSHW pCTX`
`>LIBCALL hLIBTUI,LIBTUI.Close`
## RETURN VALUE

View File

@ -1,43 +1,10 @@
# A2osX Multi-Tasking OS for Apple II
## News 2024-01-21
A2osX 0.95 build 2666 has been released.
New features:
* First release of `netconfig` tool, a LIBTUI program for editing network configuration.
* First release of LIBTUI-based `man` tool, and a few man pages to go along with it.
Issues fixed:
* [#211 - INCLUDE needs to be set in release profiles](https://github.com/A2osX/A2osX/issues/211)
* [#210 - FOR loop crashes on LOOP ending](https://github.com/A2osX/A2osX/issues/210)
* [#209 - PAKME running out of memory compressing kernel)(https://github.com/A2osX/A2osX/issues/209)
* Several non-documented bugfixes and improvements.
Build 2666 is available as 32MB, 800KB, 140KB, and net update.
## News 2024-01-17
It has been a long time since the news has been updated, but that doesn't mean that development on A2osX has ceased in the last 4 years! We've actually had quite a number of releases over this time. In general, stability has been greatly improved but there have also been additions like BASIC.FX which is a ProDOS BASIC.SYSTEM environment which supports a number of ProDOS FX extensions (RamWorks III and extension commands for starters).
As far as where things are going now, development is underway on Kernel 1.0 which will finally bring support for breaking past the 128KB barrier of the //e series by supporting RamWorks-type memory cards. In the past, RamWorks boards were supported but would only allow for /RAM type storage. With Kernel 1.0, up to 8MB of RAM can now be used for code and applications! Early builds of the new kernel are expected in 1H 2024.
With current builds and all going forward, the distributions are only shipped with [ProDOS FX](ProDOS.md) by default. While 2.0.3tc is still available and can be used with A2osX, the recommendation is now to use FX because of the filename case handling in addition to the number of under-the-hood improvements that FX offers. Both FX and 2.0.3tc's clock tables have been updated for 2024.
We are currently looking for volunteers to help with flushing out the C libraries! A C89-compliant compiler is available, however, the API needs some work to be compliant and can result in changing the kernel's APIs too, so "the sooner, the better" as the saying goes. Want to help? Reach out on the Slack server!
Finally, we are always looking for people to help! A project as complicated at A2osX requires a lot of testing, but we always need help with creating new applications, libraries, and documentation. If you have some applicable skills, let us know!
## News February 10, 2020
### Updated February 10, 2020
A2osX Version 0.93 Release Candidate has been finalized. Media for this release, based on Build 193x are now available. Future STABLE and BLEED builds will be based on work to complete 0.94. Work has already started to make the A2osX API fully C compliant. This will allow a new CSH shell and CC compiler to be added to A2osX as well as an enhanced web server (*httpd*) that can serve active server pages formed by user created CSH scripts. In addition, Double High Graphics Resolution (DHGR) and Mouse drivers are being finalized which will allow developers to create games and new user interfaces for their A2osX applications.
## News 2020-01-27
## Latest News 2020-01-27
Major update to A2osX 0.93
@ -59,45 +26,45 @@ A great new networking utility, *httpget* is now available which can be used to
Media have been updated based on Build 1784.
## News 2019-10-31
## Latest News 2019-10-31
Media have been updated based on Build 1694. This version fixes issues with Piping of commands, adds new READ functionality. Please note, KM.NSC is no longer loaded by default on any media. If you have a No Slot Clock in your system, you should move the file KM.NSC from ./SYS/KM into ./SYS which will make it load on boot.
## News 2019-10-26
## Latest News 2019-10-26
Starting with Build 1675, the SH(ell) command **TIME** has been removed and the **DATE** command will now return both the Date and Time. Additionally, if DATE command has been updated to support options for returning formatted strings with just the portions of the date and time you desire. Consult the Shell Developers Guide for syntax.
## News 2019-10-24
## Latest News 2019-10-24
Created STABLE images with Build 1669 with improvements to TCP networking. There is also a new DEBUG 140k disk image. See the media guide for more info.
## News 2019-10-22
## Latest News 2019-10-22
Updated RC images to Build 1664 which fixed RESTART SYSTEM bug on //GS.
## News 2019-10-19
## Latest News 2019-10-19
Updated RC images to Build 1653 which fixed bugs in CUT and includes a patched version of ProDOS 2.03 to correct year display for ThunderClocks.
## News 2019-10-18
## Latest News 2019-10-18
Updated A2osX Release Candidate based on Build No 1650 is now available and can be found in our **[Media directory](.Floppies)**. In addition, a new disk image **TDBOOT** has been created that is preconfigured to automatically load Uthernet2 driver, start network services and launch the TelnetD server process (hence name TD for TelnetD Boot).
## News 2019-10-15
## Latest News 2019-10-15
**The first A2osX Release Candidate is now available and can be found in our [Media directory](.Floppies)**.
## News 2019-04-19
## Latest News 2019-04-19
Major updates have occurred to the kernel and many of the A2osX API's to support a greatly enhanced shell that boasts significant new scripting capabilities since 0.92. Also added is the the ability to redirect input and output, including errors, and the ability to pipe (|) the output of one command or operation to another (i.e. **ls \* | more** ). A2osX now provides for multiple virtual terminals as well as users/terminals via TCP (through TELNETD) and serial devices (through a SSC driver).
As great as the changes to A2osX itself, we are also please to report that great strides have been made in terms of documentation. While much of it is in draft form, there is a new **[Users Guide](User%20Guide.md)**, **[Developers Guide](Developers%20Guide.md)**, **[Shell Developers Guide](Shell%20Developers%20Guide.md)**, **[Technical Spec](Technical%20Spec.md)** and **[Command Guide](Command%20Guide.md)**. See the **[Documentation](#documentation)** Section below for more details.
## News 2019-02-19
## Latest News 2019-02-19
Major updates have occurred to the kernel and many of the APIs to support an enhanced shell with support of many new scripting capabilities, the ability to redirect and eventually piping output. Current kernel also supports multiple virtual terminals as well as TCP (via TELNETD) and serial (SSC driver) terminals.
## News 2018-11-10
## Latest News 2018-11-10
My loneliness has been cured, new resources have signed onto the project. I welcome Patrick Kloepfer who is helping with product management, recruitment, testing and feedback.
@ -290,4 +257,4 @@ The full A2osX license can be found **[Here](../LICENSE)**.
## Copyright
Copyright 2015 - 2024, Remy Gibert and the A2osX contributors.
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.

Binary file not shown.

Binary file not shown.

BIN
.Floppies/A2osX.BOOT192.woz Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -10,6 +10,7 @@ NEW
* Kernel Stage 1
*--------------------------------------
A2osX.QC.Start .EQ *
A2osX.QC cld
jmp A2osX.QC.Start1
@ -19,23 +20,23 @@ A2osX.QC.ROOT .BS 64
A2osX.QC.Start1 sei
ldx #$FF
txs
cli
bit IO.RROMBNK1
>LDYAI A2osX.QC
>STYA ROM.PWREDUP
jsr ROM.SETPWRC
lda #$01
sta GP.MEMTABL+$17 protect ProDOS MLI Page
sta MLI.MEMTABL+$17 protect ProDOS MLI Page
ldx #$16
.1 stz GP.MEMTABL,x Reset ProDOS memory bitmap
.1 stz MLI.MEMTABL,x Reset ProDOS memory bitmap
dex
bne .1
lda #$CF protect zero page, stack and page 1
sta GP.MEMTABL
sta MLI.MEMTABL
lda #$8C Reset 80 col screen ($0C=FF=HOME)
jsr $C300
@ -98,7 +99,7 @@ A2osX.QC.Start1 sei
bne .4
.8 jmp $2000
*--------------------------------------
A2osX.QC.Start2 sec
>LDYAI MSG.INIT1
jsr A2osX.QC.PrintYA
@ -140,32 +141,17 @@ A2osX.QC.Start2 sec
sta $2E0-1,x ROOT sz for KERNEL
dex
bpl .6
lda GP.KVER
cmp #$8D
beq .7
ldy #SYSKERNEL
lda /SYSKERNEL
bra .8
.7 ldy #SYSKRNL8M
lda /SYSKRNL8M
.8 sty TmpPtr1
sta TmpPtr1+1
ldx $280
ldy #0
.9 inx
.7 inx
iny
lda (TmpPtr1),y
lda SYSKERNEL,y
sta $280,x
tya
cmp (TmpPtr1)
bne .9
cpy SYSKERNEL
bne .7
stx $280
@ -273,7 +259,6 @@ MLICLOSE03 .DA #1
.BS 1
*--------------------------------------
SYSKERNEL .PS "sys/kernel"
SYSKRNL8M .PS "sys/krnl8m"
*--------------------------------------
MSG.INIT1 .PS "A2osX[Stage1]:Init"
MSG.SETPREFIXOK .PS "Prefix Set: "

View File

@ -14,6 +14,8 @@ NEW
.INB inc/zp.i
.INB inc/gfx.i
*--------------------------------------
pRWReg .EQ 0 x.printf.s
*--------------------------------------
TmpPtr1 .EQ $0 main & aux ZP
TmpPtr2 .EQ $2 main & aux ZP
*--------------------------------------
@ -58,17 +60,17 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
bit IO.RROMBNK1
jsr ROM.HOME
>LDYAI MSG.INIT0
jsr PrintFYA
jsr X.PrintF
>LDYAI MSG.SYSMEM
jsr PrintFYA
jsr X.PrintF
lda GP.MACHID
lda MLI.MACHID
and #MACHID.M
cmp #MACHID.M.128
beq A2osX.Init1.128
>LDYAI MSG.SYSMEM.KO
jsr PrintFYA
jsr X.PrintF
bra *
*--------------------------------------
A2osX.Init1.128 jsr MLI
@ -89,22 +91,22 @@ A2osX.Init1.128 jsr MLI
jsr A2osX.Screen80
>LDYAI MSG.INIT0
jsr PrintFYA
jsr X.PrintF
lda #Boot.Prefix
pha
lda /Boot.Prefix
pha
>LDYAI MSG.BOOTPREFIX
jsr PrintFYA
jsr X.PrintF
>LDYAI MSG.SYSMEM
jsr PrintFYA
jsr X.PrintF
>LDYAI MSG.SYSMEM.OK
jsr PrintFYA
jsr X.PrintF
>LDYAI MSG.CPU
jsr PrintFYA
jsr X.PrintF
sed Test 6502 BCD bug
lda #$99
@ -114,13 +116,13 @@ A2osX.Init1.128 jsr MLI
bpl .2 if minus, BUG!, we have 6502
>LDYAI MSG.CPU.KO
jsr PrintFYA
jsr X.PrintF
bra *
.2 >LDYAI MSG.CPU.OK
jsr PrintFYA
jsr X.PrintF
stz GP.FLEVEL Back To FILE LEVEL 0
stz MLI.FLEVEL Back To FILE LEVEL 0
jsr MLI Make sure all files are closed
.DA #MLI.CLOSE
@ -128,7 +130,7 @@ A2osX.Init1.128 jsr MLI
bcs *
*--------------------------------------
A2osX.RamDrv >LDYAI MSG.RAMDRV
jsr PrintFYA
jsr X.PrintF
jsr DisableRamDRV
bcc .2
@ -144,12 +146,12 @@ A2osX.RamDrv >LDYAI MSG.RAMDRV
.2 >LDYAI MSG.RAMDRV.OK
.8 jsr PrintFYA
.8 jsr X.PrintF
*--------------------------------------
A2osX.SetupQC lda IO.RRAMWRAMBNK2
lda IO.RRAMWRAMBNK2
A2osX.SetupQC bit IO.RRAMWRAMBNK2
bit IO.RRAMWRAMBNK2
lda GP.KVER
lda MLI.KVER
cmp #$8D
bne .1
@ -166,7 +168,7 @@ A2osX.SetupQC lda IO.RRAMWRAMBNK2
inx
bne .2
lda GP.KVER
lda MLI.KVER
cmp #$8D
bne .3
@ -174,14 +176,14 @@ A2osX.SetupQC lda IO.RRAMWRAMBNK2
bra A2osX.MLIQuit
.3 lda IO.RROMBNK1
.3 bit IO.RROMBNK1
*--------------------------------------
A2osX.EnumPM >LDYAI MSG.PMENUM do this After SetupQC, a PM could override QC
jsr PrintFYA
jsr X.PrintF
jsr EnumPM
*--------------------------------------
A2osX.MLIQuit >LDYAI MSG.INIT0OK
jsr PrintFYA
jsr X.PrintF
>DEBUGOA
stz $280 Quit to A2osX
@ -348,21 +350,24 @@ A2osX.ScreenDLGR
*--------------------------------------
DisableRamDRV php
sei
lda GP.DEVPTRS3D2
cmp GP.DEVPTRS S0D1=NOVEV
lda MLI.DEVPTRS3D2
cmp MLI.DEVPTRS S0D1=NOVEV
bne .1
lda GP.DEVPTRS3D2+1
cmp GP.DEVPTRS+1 S0D1=NODEV
lda MLI.DEVPTRS3D2+1
cmp MLI.DEVPTRS+1 S0D1=NODEV
beq .9 S3D2=NODEV, nothing to do
.1 ldx GP.DEVCNT
.1 ldx MLI.DEVCNT
.2 lda GP.DEVLST,x LOOKING FOR $BF, $BB, $B7, $B3
.2 lda MLI.DEVLST,x LOOKING FOR $BF, $BB, $B7, $B3, $B0
and #$F3
cmp #$B3
beq .3
cmp #$B0 RAMWORKS
beq .3
dex
bpl .2
@ -372,22 +377,22 @@ DisableRamDRV php
sec
rts
.3 cpx GP.DEVCNT
.3 cpx MLI.DEVCNT
beq .5
.4 lda GP.DEVLST+1,x
sta GP.DEVLST,x
.4 lda MLI.DEVLST+1,x
sta MLI.DEVLST,x
inx
cpx GP.DEVCNT
cpx MLI.DEVCNT
bne .4
.5 ldx GP.DEVCNT
stz GP.DEVLST,x
dec GP.DEVCNT
lda GP.DEVPTRS
sta GP.DEVPTRS3D2
lda GP.DEVPTRS+1
sta GP.DEVPTRS3D2+1
.5 ldx MLI.DEVCNT
stz MLI.DEVLST,x
dec MLI.DEVCNT
lda MLI.DEVPTRS
sta MLI.DEVPTRS3D2
lda MLI.DEVPTRS+1
sta MLI.DEVPTRS3D2+1
plp
jsr MLI
@ -424,7 +429,7 @@ EnumPM ldx #0
lda /Sys.Prefix
pha
>LDYAI MSG.PMSYSDIR
jsr PrintFYA
jsr X.PrintF
jsr MLI
.DA #MLI.SETPREFIX
@ -438,7 +443,7 @@ EnumPM ldx #0
.19 pha
>LDYAI MSG.PMSYSDIR.KO
jsr PrintFYA
jsr X.PrintF
sec
rts
@ -572,7 +577,7 @@ LoadPM ldy #$1c
pha
>LDYAI MSG.PMLOAD
jsr PrintFYA
jsr X.PrintF
jsr MLI
.DA #MLI.OPEN

View File

@ -181,7 +181,7 @@ BS.ERROUT sta GP.ERRCODE
stz MLI.LEVEL
stz GP.MLICF.REFNUM
lda #MLI.FLUSH
lda #MLI.C.FLUSH
jsr GP.GOSYSTEM
L9B27 plp
@ -276,7 +276,7 @@ BS.IO.IN.EXEC sta (ZP.BASL),y
lda GP.STATE
bne L9C01
sta IO.KBDSTROBE
sta IO.KSTROBE
beq L9C01
L9BCD jsr BS.Setup4readEFBytesAt200
@ -336,7 +336,7 @@ L9C1F lda GP.PREGA
cmp #$83
bne L9C31
bit IO.KBDSTROBE
bit IO.KSTROBE
rts
L9C31 lda ZP.PROMPT

View File

@ -115,7 +115,7 @@ BS.SetFileBuf sta GP.SBUFADR+1
stz GP.SBUFADR
lda BS.REFNUMs,x
sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.SETBUF
lda #MLI.C.SETBUF
jmp GP.GOSYSTEM
*--------------------------------------
BS.GETBUFR jsr BS.GetSysBufA
@ -461,9 +461,7 @@ BS.LINEBUFCLR80 lda #$A0
rts
*--------------------------------------
BS.DOSCMD stz BS.bFreeBuf
lda #$FF
BS.DOSCMD lda #$FF
sta GP.XCNUM
lda #$20
sta BS.GetCharSep
@ -483,9 +481,9 @@ LA6A5 jsr BS.IsIntCmd
bcc .1
jsr BS.IsExtCmd
bcc .1
bcs LA6A2
rts
jmp BS.ExecCmd
.1 lda GP.STATE
bne LA6BA
@ -526,7 +524,7 @@ LA6BA stz GP.FoundBITS
lda GP.AllowedBITS
bpl LA6F8 CMDBITS0.PFIX
lda #MLI.GETPREFIX
lda #MLI.C.GETPREFIX
jsr GP.GOSYSTEM
LA6F8 pla
@ -740,27 +738,53 @@ LA80B lda GP.XCNUM
rts
.8 clc
LA844 jsr .1
bit BS.bFreeBuf
bpl .8
php
pha
jsr GP.FREEBUFR
pla
plp
.8 rts
.1 jmp (BS.KW.JMPADDR)
LA844 jmp (BS.KW.JMPADDR)
BS.SYNERR lda #BS.E.SYNTAX
LA849 sec
rts
*--------------------------------------
BS.IsExtCmd ldx #BSX.GetPath.X
jsr BS.ToAUX
ldx MLI.PATHBUF
ldy #$ff
BS.bFreeBuf .BS 1
.1 iny
lda IO.LINEBUF,y
and #$7F
cmp #$0D
beq .2
cmp #$20
beq .2
sta MLI.PATHBUF,x
inx
bra .1
.2 stx MLI.PATHBUF
ldx #0
.3 inx
lda MLI.PATHBUF,x
ora #$80
jsr MON.COUT
cpx MLI.PATHBUF
bne .3
jsr BS.GetFileInfo
>DEBUG
sec
rts
*--------------------------------------
BS.ExecCmd clc
rts
*--------------------------------------
BS.GetVolAtSxDy lda GP.ParamS
asl
@ -780,7 +804,7 @@ BS.GetVolAtSxDy lda GP.ParamS
ldy #$02
jsr BS.SetSBUFADRXY
lda #MLI.ONLINE
lda #MLI.C.ONLINE
jsr GP.GOSYSTEM
bcs LA849
@ -1247,7 +1271,7 @@ BS.CreateFileOrDir
LAD82 stx GP.CRACCESS
sty GP.CRSTTYPE
lda #MLI.CREATE
lda #MLI.C.CREATE
jmp GP.GOSYSTEM
LAD8D lda #BS.E.NOBUFFER
@ -1256,14 +1280,14 @@ LAD8D lda #BS.E.NOBUFFER
BS.KW.RENAME lda GP.FoundBITS
lsr
lsr
lda #MLI.RENAME
lda #MLI.C.RENAME
bcs LAD9E
jmp BS.SYNERR
*--------------------------------------
BS.KW.DELETE lda #MLI.DESTROY
BS.KW.DELETE lda #MLI.C.DESTROY
.HS 2C BIT ABS
BS.SETPREFIX lda #MLI.SETPREFIX
BS.SETPREFIX lda #MLI.C.SETPREFIX
LAD9E jmp GP.GOSYSTEM
*--------------------------------------
@ -1314,110 +1338,6 @@ LADF0 sec
clc
rts
*--------------------------------------
BS.IsExtCmd ldx #BSX.GetPath.X
jsr BS.ToAUX
ldx BS.CMDBUF.LEN
ldy #$ff
.1 iny
lda IO.LINEBUF,y
and #$7F
cmp #$0D
beq .2
cmp #$20
beq .2
sta BS.CMDBUF,x
inx
bra .1
.2 stx BS.CMDBUF.LEN
dey
sty GP.XLEN
jsr BS.GetFileInfo
bcs .99
stz GP.XCNUM
lda AS.HIMEM+1
sta BS.BUFPAGE
lda #$01 Read
ldx #$06 BIN
jsr BS.OpenTypeXAccessA
bcs .99
jsr BS.MLIGetEOF
php
pha
jsr BS.MLIClose
pla
plp
bcs .99
lda GP.SBUFADR+2 File LEN in GP.SBUFADR
beq .20
lda #BS.E.TOOLARGE
sec
rts
.20 lda GP.SBUFADR+1
sta GP.MLIRW.COUNT+1
ldx GP.SBUFADR
stx GP.MLIRW.COUNT
beq .3
inc
.3 jsr GP.GETBUFR
bcs .99
dec BS.bFreeBuf
stz GP.MLIRW.DATAPTR
stz BS.KW.JMPADDR
lda GP.SBUFADR+1 Buffer Addr in GP.SBUFADR
sta GP.MLIRW.DATAPTR+1
sta BS.KW.JMPADDR+1
lda AS.HIMEM+1
sta BS.BUFPAGE
lda #$01 Read
ldx #$06 BIN
jsr BS.OpenTypeXAccessA
bcs .98
lda #MLI.READ
jsr GP.GOSYSTEM
bcs .98
jsr BS.MLIClose
bcs .98
ldx #BSX.Rel.X
jsr BS.ToAUX
bcc .99
.98 pha
jsr GP.FREEBUFR
pla
sec
.99 rts
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s.b
LOAD usr/src/basic.fx/basic.s

View File

@ -153,7 +153,7 @@ LAEDD jsr BS.MLISetMark
rts
LAEF7 ldx GP.XCNUM
lda #MLI.READ
lda #MLI.C.READ
cpx #$0F
bne LAF24
@ -169,7 +169,7 @@ LAEF7 ldx GP.XCNUM
jsr BS.SetSBUFADRXY0
jsr BS.MLISetEOF
LAF22 lda #MLI.WRITE
LAF22 lda #MLI.C.WRITE
LAF24 jsr GP.GOSYSTEM
bcs LAF38
@ -291,19 +291,19 @@ BS.WriteXYBytes sec
stx GP.MLIRW.COUNT
bcc BS.MLIRead
BS.MLIWrite lda #MLI.WRITE
BS.MLIWrite lda #MLI.C.WRITE
.HS 2C BIT ABS
BS.MLIRead lda #MLI.READ
BS.MLIRead lda #MLI.C.READ
.HS 2C BIT ABS
BS.MLIClose lda #MLI.CLOSE
BS.MLIClose lda #MLI.C.CLOSE
.HS 2C BIT ABS
BS.MLIGetEOF lda #MLI.GETEOF
BS.MLIGetEOF lda #MLI.C.GETEOF
.HS 2C BIT ABS
BS.MLISetEOF lda #MLI.SETEOF
BS.MLISetEOF lda #MLI.C.SETEOF
.HS 2C BIT ABS
BS.MLIGetMark lda #MLI.GETMARK
BS.MLIGetMark lda #MLI.C.GETMARK
.HS 2C BIT ABS
BS.MLISetMark lda #MLI.SETMARK
BS.MLISetMark lda #MLI.C.SETMARK
jmp GP.GOSYSTEM
*--------------------------------------
BS.KW.PR lda #$00
@ -385,12 +385,12 @@ BS.KW.BYE jsr BS.CloseAll
jsr BS.RAMReset
* lda #$65
jsr MLI
.DA #MLI.QUIT
.DA #MLI.C.QUIT
.DA GP.MLIRW
*--------------------------------------
BS.QUIT.IIgs jsr BS.RAMReset
jsr MLI
.DA #MLI.QUIT
.DA #MLI.C.QUIT
.DA .1
.1 .DA #4
@ -478,7 +478,7 @@ LB0FD lda IO.KBD
lda GP.STATE
bne LB113
bit IO.KBDSTROBE
bit IO.KSTROBE
bcs LB113
LB10E lda #$FF
@ -531,7 +531,7 @@ BS.MkCatLineF jsr BS.SetSBUFADRCMDBUF
lda MLI.DEVNUM
sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.ONLINE
lda #MLI.C.ONLINE
jsr GP.GOSYSTEM
bcs LB127
@ -608,7 +608,7 @@ BS.OpenTypeXAccessA
sta GP.OSYSBUF+1
lda #$0F
sta MLI.LEVEL
lda #MLI.OPEN
lda #MLI.C.OPEN
jsr GP.GOSYSTEM
bcs LB238
@ -742,7 +742,7 @@ LB2FB tya
sta BS.BUFPAGEs-1,x
lda BS.REFNUMs,x
sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.SETBUF
lda #MLI.C.SETBUF
jsr GP.GOSYSTEM
bcc LB30D
@ -755,7 +755,7 @@ LB30E sta BS.BUFPAGE
stz MLI.LEVEL
lda #MLI.OPEN
lda #MLI.C.OPEN
jsr GP.GOSYSTEM
bcc LB327
@ -782,7 +782,7 @@ LB333 sta GP.MLIRW.REFNUM
lda #$7F
sta GP.NLINEMASK
lda #MLI.NEWLINE
lda #MLI.C.NEWLINE
jsr GP.GOSYSTEM
lda GP.FoundBITS+1
and #CMDBITS1.F+CMDBITS1.R
@ -833,7 +833,7 @@ BS.KW.FLUSH lda GP.FoundBITS
bcs .9
.1 sta GP.MLICF.REFNUM
lda #MLI.FLUSH
lda #MLI.C.FLUSH
jsr GP.GOSYSTEM
.9 rts
@ -911,7 +911,7 @@ LB41D jsr BS.GetSysBuf
lda #$07
sta MLI.LEVEL
lda #MLI.OPEN
lda #MLI.C.OPEN
jsr GP.GOSYSTEM
bcc LB43B
@ -1143,7 +1143,7 @@ LB5AD lda #$EF
lda #$7F
sta GP.NLINEMASK
lda #MLI.NEWLINE
lda #MLI.C.NEWLINE
jsr GP.GOSYSTEM
bcs LB5F0
@ -1252,7 +1252,7 @@ LB67C sta GP.MLIRW.DATAPTR
stz GP.MLIRW.COUNT+1
lda #MLI.NEWLINE
lda #MLI.C.NEWLINE
jsr GP.GOSYSTEM
bcs LB69B
@ -1485,7 +1485,7 @@ LB805 dey
LB839 rts
*--------------------------------------
BS.GetFileInfo ldx #$0A
lda #MLI.GFINFO
lda #MLI.C.GETFILEINFO
bne LB858
BS.SetFileInfoNoDate
@ -1496,7 +1496,7 @@ BS.SetFileInfoNoDate
bpl .1
BS.SetFileInfo ldx #$07
lda #MLI.SFINFO
lda #MLI.C.SETFILEINFO
LB858 stx GP.SSGINFO
jmp GP.GOSYSTEM
@ -1523,14 +1523,14 @@ BS.KW.MEM jsr MON.CROUT
sta $260+11
lda #0
.2 pha
ldx #BSX.Mem.X
sta XBC10
.2 ldx #BSX.Mem.X
jsr BS.ToAUX
jsr BS.LINEBUFOUT
pla
inc
inc XBC10
lda XBC10
cmp #6
bne .2
@ -1550,7 +1550,7 @@ BS.KW.ONLINE jsr MON.CROUT
.1 sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.ONLINE
lda #MLI.C.ONLINE
jsr GP.GOSYSTEM
bcc .2
@ -1763,16 +1763,16 @@ BS.KW.PATH lda GP.FoundBITS
jsr BS.ToAUX
jsr MON.CROUT
ldx #$ff
ldx #$00
.1 inx
cpx BS.CMDBUF.LEN
.1 cpx MLI.PATHBUF
beq .2
lda BS.CMDBUF,x
lda MLI.PATHBUF+1,x
ora #$80
jsr MON.COUT
bra .1
inx
bne .1
.2 jsr MON.CROUT
jsr MON.CROUT
@ -1784,7 +1784,7 @@ BS.SetPath clc
rts
*--------------------------------------
BS.WBlock jsr MLI
.DA #MLI.WRITEBLOCK
.DA #MLI.C.WRITEBLOCK
.DA BS.WBlock.P
bcs .9
@ -1811,7 +1811,7 @@ BS.Expand2PATHBUF
beq .1
jsr MLI no, get current path as a base
.DA #MLI.GETPREFIX
.DA #MLI.C.GETPREFIX
.DA BS.Expand2.P
.1 ldx #BSX.Expand.X

View File

@ -1,76 +1,76 @@
NEW
AUTO 3,1
*--------------------------------------
jmp BS.ENTRY GP.ENTRY
jmp BS.DOSCMD GP.DOSCMD
jmp GP.RTS GP.EXTRNCMD
jmp BS.ERROUT GP.ERROUT
jmp BS.PRINTERR GP.PRINTERR
.BS 1 GP.ERRCODE
GP.ENTRY jmp BS.ENTRY
GP.DOSCMD jmp BS.DOSCMD
GP.EXTRNCMD jmp GP.RTS
GP.ERROUT jmp BS.ERROUT
GP.PRINTERR jmp BS.PRINTERR
GP.ERRCODE .BS 1
*--------------------------------------
.DA MON.COUT1 GP.OUTVECT0
.DA BS.NODEVERR GP.OUTVECT1
.DA BS.NODEVERR GP.OUTVECT2
.DA BS.NODEVERR GP.OUTVECT3
.DA BS.NODEVERR GP.OUTVECT4
.DA BS.NODEVERR GP.OUTVECT5
.DA BS.NODEVERR GP.OUTVECT6
.DA BS.NODEVERR GP.OUTVECT7
.DA MON.KEYIN GP.INVECT0
.DA BS.NODEVERR GP.INVECT1
.DA BS.NODEVERR GP.INVECT2
.DA BS.NODEVERR GP.INVECT3
.DA BS.NODEVERR GP.INVECT4
.DA BS.NODEVERR GP.INVECT5
.DA BS.NODEVERR GP.INVECT6
.DA BS.NODEVERR GP.INVECT7
.DA MON.COUT1 GP.VECTOUT
.DA MON.KEYIN GP.VECTIN
.DA BS.JMP.GP.VSYSO GP.VDOSO
.DA BS.JMP.GP.VSYSI GP.VDOSI
.BS 2 GP.VSYSO
.BS 2 GP.VSYSI
.DA #6 GP.VDEFSLT
.DA #1 GP.VDEFDRV
.BS 1 GP.PREGA
.BS 1 GP.PREGX
.BS 1 GP.PREGY
.BS 1 GP.DTRACE
.BS 1 GP.STATE
.BS 1 GP.EXECACTV
.BS 1 GP.IFILACTV
.BS 1 GP.OFILACTV
.BS 1 GP.PFXACTV
.BS 1 GP.DIRFLG
.BS 1 GP.EDIRFLG
.BS 1 GP.STRINGS
.BS 1 GP.TBUFPTR
.BS 1 GP.INPTR
.BS 1 GP.CHRLAST
.BS 1 GP.OPENCNT
.BS 1 GP.EXECFILE
.BS 1 GP.CATFLAG
.BS 2 GP.XTRNADDR
.BS 1 GP.XLEN
.BS 1 GP.XCNUM
.BS 2 GP.AllowedBITS
.BS 2 GP.FoundBITS
.BS 2 GP.ParamA
.BS 3 GP.ParamB
.BS 2 GP.ParamE
.BS 2 GP.ParamL
.BS 1 GP.ParamS
.BS 1 GP.ParamD
.BS 2 GP.ParamF
.BS 2 GP.ParamR
.BS 1 GP.ParamV
.BS 2 GP.ParamAT
.BS 1 GP.ParamT
.BS 1 GP.ParamINPR
.DA BS.CMDBUF.LEN GP.VPATH1
.DA MLI.PATHBUF GP.VPATH2
GP.OUTVECT0 .DA MON.COUT1
GP.OUTVECT1 .DA BS.NODEVERR
GP.OUTVECT2 .DA BS.NODEVERR
GP.OUTVECT3 .DA BS.NODEVERR
GP.OUTVECT4 .DA BS.NODEVERR
GP.OUTVECT5 .DA BS.NODEVERR
GP.OUTVECT6 .DA BS.NODEVERR
GP.OUTVECT7 .DA BS.NODEVERR
GP.INVECT0 .DA MON.KEYIN
GP.INVECT1 .DA BS.NODEVERR
GP.INVECT2 .DA BS.NODEVERR
GP.INVECT3 .DA BS.NODEVERR
GP.INVECT4 .DA BS.NODEVERR
GP.INVECT5 .DA BS.NODEVERR
GP.INVECT6 .DA BS.NODEVERR
GP.INVECT7 .DA BS.NODEVERR
GP.VECTOUT .DA MON.COUT1
GP.VECTIN .DA MON.KEYIN
GP.VDOSO .DA BS.JMP.GP.VSYSO
GP.VDOSI .DA BS.JMP.GP.VSYSI
GP.VSYSO .BS 2
GP.VSYSI .BS 2
GP.VDEFSLT .DA #6
GP.VDEFDRV .DA #1
GP.PREGA .BS 1
GP.PREGX .BS 1
GP.PREGY .BS 1
GP.DTRACE .BS 1
GP.STATE .BS 1
GP.EXECACTV .BS 1
GP.IFILACTV .BS 1
GP.OFILACTV .BS 1
GP.PFXACTV .BS 1
GP.DIRFLG .BS 1
GP.EDIRFLG .BS 1
GP.STRINGS .BS 1
GP.TBUFPTR .BS 1
GP.INPTR .BS 1
GP.CHRLAST .BS 1
GP.OPENCNT .BS 1
GP.EXECFILE .BS 1
GP.CATFLAG .BS 1
GP.XTRNADDR .BS 2
GP.XLEN .BS 1
GP.XCNUM .BS 1
GP.AllowedBITS .BS 2
GP.FoundBITS .BS 2
GP.ParamA .BS 2
GP.ParamB .BS 3
GP.ParamE .BS 2
GP.ParamL .BS 2
GP.ParamS .BS 1
GP.ParamD .BS 1
GP.ParamF .BS 2
GP.ParamR .BS 2
GP.ParamV .BS 1
GP.ParamAT .BS 2
GP.ParamT .BS 1
GP.ParamINPR .BS 1
GP.VPATH1 .DA BS.CMDBUF.LEN
GP.VPATH2 .DA MLI.PATHBUF
*--------------------------------------
sta GP.GOSYSTEM.C GP.GOSYSTEM
GP.GOSYSTEM sta GP.GOSYSTEM.C
stx BS.CALLX
and #$1F
tax
@ -78,85 +78,84 @@ NEW
sta GP.GOSYSTEM.P
ldx BS.CALLX
jsr MLI
.BS 1 GP.GOSYSTEM.C
.DA GP.GOSYSTEM.P GP.GOSYSTEM.P
GP.GOSYSTEM.C .BS 1
GP.GOSYSTEM.P .DA GP.GOSYSTEM.P
bcs GP.BADCALL
rts
*--------------------------------------
ldx #$12 GP.BADCALL
GP.BADCALL ldx #$12
GP.MLIERR1 cmp BS.MLIERTBL,x
beq GP.MLIERR2
LBE8D cmp BS.MLIERTBL,x
beq LBE97
dex
bpl GP.MLIERR1
bpl LBE8D
ldx #$13
GP.MLIERR2 lda BS.BIERRTBL,x
LBE97 lda BS.BIERRTBL,x
ldx BS.CALLX
sec
rts GP.RTS
GP.RTS rts
*--------------------------------------
.BS 1 GP.CISPARE1
GP.CISPARE1 .BS 1
*--------------------------------------
.DA #7 GP.SCREATE
.DA BS.CMDBUF.LEN GP.SCREATEPATH
.DA #$C3 GP.CRACCESS
.BS 1 GP.CRTYPE
.BS 2 GP.CRAUXTYPE
.BS 1 GP.CRSTTYPE
.BS 4 GP.DATETIME
GP.SCREATE .DA #7
GP.SCREATEPATH .DA BS.CMDBUF.LEN
GP.CRACCESS .DA #$C3
GP.CRTYPE .BS 1
GP.CRAUXTYPE .BS 2
GP.CRSTTYPE .BS 1
GP.DATETIME .BS 4
*--------------------------------------
.DA #1 GP.SDSTROY
.DA BS.CMDBUF.LEN GP.SDSTROYPATH
GP.SDSTROY .DA #1
GP.SDSTROYPATH .DA BS.CMDBUF.LEN
*--------------------------------------
.DA #2 GP.SRECNAME
.DA BS.CMDBUF.LEN GP.SRECNAMEOLD
.DA MLI.PATHBUF GP.SRECNAMENEW
GP.SRECNAME .DA #2
GP.SRECNAMEOLD .DA BS.CMDBUF.LEN
GP.SRECNAMENEW .DA MLI.PATHBUF
*--------------------------------------
.BS 1 GP.SSGINFO
.DA BS.CMDBUF.LEN GP.SSGINFOPATH
.BS 1 GP.FIACCESS
.BS 1 GP.FITYPE
.BS 2 GP.FIAUXTYPE
.BS 1 GP.STTYPE
.BS 2 GP.FIBLOKS
.BS 4 GP.FIMDATE
.BS 4 GP.FICDATE
GP.SSGINFO .BS 1
GP.SSGINFOPATH .DA BS.CMDBUF.LEN
GP.FIACCESS .BS 1
GP.FITYPE .BS 1
GP.FIAUXTYPE .BS 2
GP.STTYPE .BS 1
GP.FIBLOKS .BS 2
GP.FIMDATE .BS 4
GP.FICDATE .BS 4
*--------------------------------------
.DA #2 GP.MLIMRKEOFBUF
.BS 1 GP.MLIMRKEOFBUF.REFNUM
.BS 3 GP.SBUFADR
GP.MLIMRKEOFBUF .DA #2
GP.MLIMRKEOFBUF.REFNUM
.BS 1
GP.SBUFADR .BS 3
*--------------------------------------
.DA #3 GP.SOPEN
.DA BS.CMDBUF.LEN GP.TXTBUF
.BS 2 GP.OSYSBUF
.BS 1 GP.OREFNUM
GP.SOPEN .DA #3
GP.TXTBUF .DA BS.CMDBUF.LEN
GP.OSYSBUF .BS 2
GP.OREFNUM .BS 1
*--------------------------------------
.DA #3 GP.SNEWLIN
.BS 1 GP.NEWLREF
.DA #$7F GP.NLINEMASK
.DA #13 GP.NLINECHAR
GP.SNEWLIN .DA #3
GP.NEWLREF .BS 1
GP.NLINEMASK .DA #$7F
GP.NLINECHAR .DA #13
*--------------------------------------
.DA #4 GP.MLIRW
.BS 1 GP.MLIRW.REFNUM
.BS 2 GP.MLIRW.DATAPTR
.BS 2 GP.MLIRW.COUNT
.BS 2 GP.MLIRW.TRANS
GP.MLIRW .DA #4
GP.MLIRW.REFNUM .BS 1
GP.MLIRW.DATAPTR .BS 2
GP.MLIRW.COUNT .BS 2
GP.MLIRW.TRANS .BS 2
*--------------------------------------
.DA #1 GP.MLICF
.BS 1 GP.MLICF.REFNUM
GP.MLICF .DA #1
GP.MLICF.REFNUM .BS 1
*--------------------------------------
.BS 1 GP.CCCSPARE
GP.CCCSPARE .BS 1
*--------------------------------------
GP.COPYRIGHT .AS -"COPYRIGHT APPLE, 1983"
jmp BS.GETBUFR GP.GETBUFR
jmp BS.FREEBUFR GP.FREEBUFR
.BS 1 GP.RSHIMEM
.BS 1
jmp (BS.TBOX,x) GP.TBOX
GP.GETBUFR jmp BS.GETBUFR
GP.FREEBUFR jmp BS.FREEBUFR
GP.RSHIMEM .BS 5
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s.gp

View File

@ -157,7 +157,7 @@ L2115 iny
beq L214E
jsr MLI
.DA #MLI.GETPREFIX
.DA #MLI.C.GETPREFIX
.DA LDR.GETSETPFX.P
bne L218B
@ -177,11 +177,11 @@ L213E dex
bcs L216F
jsr MLI
.DA #MLI.SETPREFIX
.DA #MLI.C.SETPREFIX
.DA LDR.SETPFXSLASH.P
L214E jsr MLI
.DA #MLI.ONLINE
.DA #MLI.C.ONLINE
.DA LDR.ONLINE.P
bne L218B
@ -194,7 +194,7 @@ L214E jsr MLI
lda #'/'
sta MLI.PATHBUF+1
jsr MLI
.DA #MLI.SETPREFIX
.DA #MLI.C.SETPREFIX
.DA LDR.GETSETPFX.P
bne L218B
@ -222,7 +222,7 @@ L218B lda LDR.PFX.LEN
bcs L2198
jsr MLI
.DA #MLI.SETPREFIX
.DA #MLI.C.SETPREFIX
.DA LDR.SETPFXSLASH.P
L2198 lda LDR.STARTUP.LEN
@ -255,8 +255,8 @@ L21C3 lda LDR.JMP.GP.ENTRY,x
sta DOS.WARMSTART,x
sta DOS.COLDSTART,x
sta MON.USRJMP,x
lda LDR.AMPJMP,x
sta MON.AMPJMP,x
lda LDR.AMPERSANDJMP,x
sta MON.AMPERSANDJMP,x
dex
bpl L21C3
@ -280,7 +280,8 @@ L21C3 lda LDR.JMP.GP.ENTRY,x
LDR.JMP.GP.ENTRY
jmp GP.ENTRY
LDR.AMPJMP jmp GP.DOSCMD
LDR.AMPERSANDJMP
jmp GP.DOSCMD
*--------------------------------------
LDR.KSW lda GP.INVECT0
sta ZP.KSW
@ -366,7 +367,7 @@ LDR.GFInfoYA sty LDR.GFINFO.P+1
pha
jsr MLI
.DA #MLI.GFINFO
.DA #MLI.C.GETFILEINFO
.DA LDR.GFINFO.P
plx

View File

@ -45,9 +45,6 @@ BSX.Fre0.X .EQ *-BSX.JMP
BSX.Fre1.X .EQ *-BSX.JMP
.DA BSX.Fre1
*--------------------------------------
BSX.Rel.X .EQ *-BSX.JMP
.DA BSX.Rel
*--------------------------------------
BSX.CheckOpt jsr BS.TMPBUF3Reset
jsr BSX.ToUpper
@ -489,6 +486,9 @@ BSX.IsIntCmd lda #BSX.IntCmds
.5 dec GP.XCNUM
bne .1
sec
rts
*--------------------------------------
@ -1087,10 +1087,10 @@ BSX.SetPath clc
rts
*--------------------------------------
BSX.GetPath ldx BSX.PATH.LEN
stx BS.CMDBUF.LEN
stx MLI.PATHBUF
.1 lda BSX.PATH-1,x
sta BS.CMDBUF-1,x
.1 lda BSX.PATH,x
sta MLI.PATHBUF+1,x
dex
bne .1

View File

@ -11,16 +11,52 @@ NEW
sta $C010
.EM
*--------------------------------------
.INB inc/bs.i
.INB inc/mli.i
.INB inc/io.i
.INB inc/io.d2.i
.INB inc/as.i
.INB inc/mon.i
*--------------------------------------
HIMEM .EQ $9F00
HIMEM .EQ $A000
LOWERCASE .EQ 1
*--------------------------------------
BS.E.RANGE .EQ $02
BS.E.NODEV .EQ $03
BS.E.WPROT .EQ $04
BS.E.ENDOFDATA .EQ $05
BS.E.PATHNFND6 .EQ $06
BS.E.PATHNFND7 .EQ $07
BS.E.IO .EQ $08
BS.E.DISKFULL .EQ $09
BS.E.LOCKED .EQ $0A
BS.E.INVOPT .EQ $0B
BS.E.NOBUFFER .EQ $0C
BS.E.MISMATCH .EQ $0D
BS.E.TOOLARGE .EQ $0E
BS.E.NODIRECT .EQ $0F
BS.E.SYNTAX .EQ $10
BS.E.DIRFULL .EQ $11
BS.E.FNOTOPEN .EQ $12
BS.E.DUPFILE .EQ $13
BS.E.FBUSTY .EQ $14
BS.E.FSTILLOPEN .EQ $15
*--------------------------------------
CMDBITS0.PFIX .EQ $80 Prefix needs fetching, pathname optional
CMDBITS0.SLOT .EQ $40 No parameters to be processed
CMDBITS0.RRUN .EQ $20 Command only valid during program
CMDBITS0.FNOPT .EQ $10 Filename is optional
CMDBITS0.CRFLG .EQ $08 CREATE allowed
CMDBITS0.T .EQ $04 File type
CMDBITS0.FN2 .EQ $02 Filename '2' for RENAME
CMDBITS0.FN1 .EQ $01 Filename expected
CMDBITS1.A .EQ $80 Address
CMDBITS1.B .EQ $40 Byte
CMDBITS1.E .EQ $20 End address
CMDBITS1.L .EQ $10 Length
CMDBITS1.LINE .EQ $08 '@' line number
CMDBITS1.SD .EQ $04 Slot and drive numbers
CMDBITS1.F .EQ $02 Field
CMDBITS1.R .EQ $01 Record
CMDBITS1.V .EQ $00 Volume number ignored
*--------------------------------------
ZPPtr1 .EQ 0
ZPPtr2 .EQ 2
ZPInBufPtr .EQ 4
@ -35,6 +71,53 @@ ZPBLLenBits .EQ 13
bRAMFlag .EQ 14
ZPCode .EQ 15
ZP.WNDLFT .EQ $20
ZP.WNDWDT .EQ $21
ZP.WNDTOP .EQ $22
ZP.WNDBOT .EQ $23
ZP.CH .EQ $24
ZP.CV .EQ $25
ZP.BASL .EQ $28
ZP.BASH .EQ $29
ZP.PROMPT .EQ $33
ZP.CSW .EQ $36
ZP.KSW .EQ $38
ZP.PCL .EQ $3A
ZP.PCH .EQ $3B
ZP.A1L .EQ $3C
ZP.A1H .EQ $3D
ZP.A2L .EQ $3E
ZP.A2H .EQ $3F
ZP.A4L .EQ $40
ZP.A4H .EQ $41
ZP.CMD .EQ $42
ZP.UNITNUM .EQ $43
ZP.BUFPTR .EQ $44
ZP.BLKNUM .EQ $46
AS.LINNUM .EQ $50
AS.PGRMSTART .EQ $67
AS.VARSTART .EQ $69
AS.ARRAYSTART .EQ $6B
AS.ARRAYEND .EQ $6D
AS.STRINGSTART .EQ $6F
AS.STRINGPTR .EQ $71
AS.HIMEM .EQ $73
AS.CURLINE .EQ $75
AS.LOWTR .EQ $9B
AS.PGRMEND .EQ $AF
AS.TXTPTR .EQ $B8
AS.ERRFLG .EQ $D8
AS.ERRNUM .EQ $DE
AS.TRCFLG .EQ $F2
AS.REMSTK .EQ $F8
*--------------------------------------
ZPXPtr1 .EQ 0
ZPXPtr2 .EQ 2
@ -63,7 +146,45 @@ DOS.FILEMGRPARM .EQ $03DC
DOS.RWTSPARM .EQ $03E3
DOS.RECONNECT .EQ $03DA
DOS.JMPBRKVECT .EQ $03EF
MON.AMPERSANDJMP .EQ $03F5
MON.USRJMP .EQ $03F8
MON.NMIJMP .EQ $03FB
MON.IRQVECT .EQ $03FE
MON.BRKVECT .EQ $03F0
MON.POWERUP .EQ $03F2
MON.POWERUPBYTE .EQ $03F4
*--------------------------------------
MLI.MAXPATH .EQ 64
MLI.C.ALLOCIRQ .EQ $40
MLI.C.DEALLOCIRQ .EQ $41
MLI.C.ATALK .EQ $42
MLI.C.QUIT .EQ $65
MLI.C.READBLOCK .EQ $80
MLI.C.WRITEBLOCK .EQ $81
MLI.C.GETTIME .EQ $82
MLI.C.CREATE .EQ $C0
MLI.C.DESTROY .EQ $C1
MLI.C.RENAME .EQ $C2
MLI.C.SETFILEINFO .EQ $C3
MLI.C.GETFILEINFO .EQ $C4
MLI.C.ONLINE .EQ $C5
MLI.C.SETPREFIX .EQ $C6
MLI.C.GETPREFIX .EQ $C7
MLI.C.OPEN .EQ $C8
MLI.C.NEWLINE .EQ $C9
MLI.C.READ .EQ $CA
MLI.C.WRITE .EQ $CB
MLI.C.CLOSE .EQ $CC
MLI.C.FLUSH .EQ $CD
MLI.C.SETMARK .EQ $CE
MLI.C.GETMARK .EQ $CF
MLI.C.SETEOF .EQ $D0
MLI.C.GETEOF .EQ $D1
MLI.C.SETBUF .EQ $D2
MLI.C.GETBUF .EQ $D3
*--------------------------------------
MLI .EQ $BF00
MLI.DEVPTRS .EQ $BF10
MLI.DEVPTRS3D2 .EQ $BF26
MLI.DEVNUM .EQ $BF30
@ -77,6 +198,52 @@ MLI.SLTBYT .EQ $BF99
MLI.PFIXPTR .EQ $BF9A
MLI.MLIACTV .EQ $BF9B
MLI.IVERSION .EQ $BFFD
*--------------------------------------
IO.KBD .EQ $C000 R
IO.CLR80STORE .EQ $C000 W
IO.SET80STORE .EQ $C001 W
IO.CLRREADAUX .EQ $C002 W
IO.SETREADAUX .EQ $C003 W
IO.CLRWRITEAUX .EQ $C004 W
IO.SETWRITEAUX .EQ $C005 W
IO.CLRALTZP .EQ $C008 W
IO.SETALTZP .EQ $C009 W
IO.CLR80DISP .EQ $C00C W
IO.SET80DISP .EQ $C00D W
IO.KSTROBE .EQ $C010 W
IO.RROMBNK2 .EQ $C082 R
IO.RRAMWRAMBNK2 .EQ $C083 RR
IO.RROMBNK1 .EQ $C08A R
IO.RRAMWRAMBNK1 .EQ $C08B RR
*--------------------------------------
AS.RESTART .EQ $D43C
AS.RESTART1 .EQ $D43F
AS.FINDLINE .EQ $D61A
AS.CLEAR1 .EQ $D665
AS.NEXTSTMT .EQ $D7D2
AS.EXECSTMT .EQ $D820
AS.BITERRFLG .EQ $D865
AS.NORMAL .EQ $F273
AS.COLDBOOT .EQ $E000
AS.INTPRINTAX .EQ $ED24
*--------------------------------------
MON.BREAKV .EQ $FA59
MON.INIT .EQ $FB2F
MON.HOME .EQ $FC58
MON.CLREOL .EQ $FC9C
MON.RDKEY .EQ $FD0C
MON.KEYIN0 .EQ $FD10
MON.KEYIN .EQ $FD1B
MON.GETLN .EQ $FD6A
MON.CROUT .EQ $FD8E
MON.COUT .EQ $FDED
MON.COUT1 .EQ $FDF0
MON.IIGSID .EQ $FE1F
MON.SETINV .EQ $FE80
MON.SETNORM .EQ $FE84
MON.SETKBD .EQ $FE89
MON.SETVID .EQ $FE93
MON.ENTERMON .EQ $FF69
*--------------------------------------
.INB usr/src/basic.fx/basic.s.ldr
*--------------------------------------
@ -101,10 +268,6 @@ LDR.MAIN.DST .EQ *
.INB usr/src/basic.fx/basic.s.a
.INB usr/src/basic.fx/basic.s.b
.INB usr/src/basic.fx/basic.s.c
BS.TBOX .DA PrintFYA
.INB usr/src/shared/x.printf.s
.INB usr/src/basic.fx/basic.s.d
MAIN.LEN .EQ *-LDR.MAIN.DST
.EP
@ -136,7 +299,6 @@ X.TRkFMT.Z .EQ $10
.LIST OFF
.INB usr/src/basic.fx/basic.s.xf
.INB usr/src/basic.fx/basic.s.xm
.INB usr/src/basic.fx/basic.s.xr
.INB usr/src/basic.fx/basic.s.x
.EP
AUX.LEN .EQ *-LDR.AUX.SRC

View File

@ -44,7 +44,7 @@ L.MSG2 .DA MSG2
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBETALK
>SYSCALL LoadLib
>LIBC LoadLib
bcs .9
sta hLIBETALK
@ -71,8 +71,8 @@ CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
>PUSHBI 4 2 Ptrs
>PUSHW L.SSCANF.ADDR
lda #1
>SYSCALL ArgV
>SYSCALL SScanF
>LIBC ArgV
>LIBC SScanF
bcs CS.RUN.ERR
ldy #S.PS.ARGC
@ -85,7 +85,7 @@ CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
jmp CS.RUN.ADD
CS.RUN.ERR >LDYA L.MSG.Usage
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
rts
@ -101,7 +101,7 @@ CS.RUN.QUERY jsr Init.Timeout
bcs .8
>SLEEP
>SYSCALL GetChar
>LIBC GetChar
bcs .1
cmp #3
@ -127,7 +127,7 @@ CS.RUN.QUERY jsr Init.Timeout
>PUSHBI 8
>LDYA L.MSG2
>SYSCALL PrintF
>LIBC PrintF
.8 lda #0
@ -143,8 +143,8 @@ CS.RUN.ADD >PUSHEA.G DST.MAC+5
>PUSHBI 12 6 Ptrs
>PUSHW L.SSCANF.MAC
lda #2
>SYSCALL ArgV
>SYSCALL SScanF
>LIBC ArgV
>LIBC SScanF
bcs .9
>PUSHEA.G DST.MAC
@ -160,7 +160,7 @@ CS.RUN.ADD >PUSHEA.G DST.MAC+5
CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GetCache
>STYA ZPPTR1
>LDYA L.MSG0
>SYSCALL PutS
>LIBC PutS
ldx #K.AARPCACHE.SIZE
@ -188,7 +188,7 @@ CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GetCache
>PUSHBI 12
>LDYA L.MSG1
phx
>SYSCALL PrintF
>LIBC PrintF
plx
.4 lda ZPPTR1
@ -222,7 +222,7 @@ CS.DOEVENT lda (pEvent)
CS.QUIT lda hLIBETALK
beq .8
>SYSCALL UnloadLib
>LIBC UnloadLib
.8 clc
rts

View File

@ -75,7 +75,7 @@ CS.INIT clc ; nothing to init, so just clc and retur
CS.RUN
.1 inc ArgIndex ; Check next argument
lda ArgIndex
>SYSCALL ArgV ; check for an arg at index in A
>LIBC ArgV ; check for an arg at index in A
bcs .4 ; If doesn't exist, we're done with args
>STYA ZPPtr1 ; ArgV pointer was in Y,A so stick into ZPPtr1
@ -93,7 +93,7 @@ CS.RUN
bpl .5 ; no, so go check next possibility
>LDYA L.MSG.FAST ; push address for fast mode message
>SYSCALL PutS ; print fast mode msg
>LIBC PutS ; print fast mode msg
jsr CS.RUN.SetFastMode ; call fast mode routine
jmp .99 ; jump to successful exit
@ -102,14 +102,14 @@ CS.RUN
bit bSlow ; did they want us to switch to slow mode?
bpl .9 ; no, so go display usage
>LDYA L.MSG.SLOW ; push address for slow mode message
>SYSCALL PutS ; print slow mode message
>LIBC PutS ; print slow mode message
jsr CS.RUN.SetSlowMode ; call slow mode routine
jmp .99 ; jump to successful exit
*--- Display usage and error out ------
.9
>LDYA L.MSG.USAGE ; push address for usage text
>SYSCALL PutS ; print usage message
>LIBC PutS ; print usage message
lda #E.SYN ; set OS return code as Syntax Error
sec ; indicate we don't want CS.RUN called again
rts ; return to OS

View File

@ -6,7 +6,7 @@ CORE.Init ldy #CCS.MAX
sty pCCS
>LDYAI CODESEG
>SYSCALL GetMem
>LIBC GetMem
bcs .90
>STYA ZPCodeBufPtr
@ -14,7 +14,7 @@ CORE.Init ldy #CCS.MAX
>STA.G hCodeBuf
>LDYAI DATASEG
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPDataBufPtr
@ -22,25 +22,25 @@ CORE.Init ldy #CCS.MAX
>STA.G hDataBuf
lda #SL..+SL._
>SYSCALL SListNew
>KAPI SListNew
.90 bcs .9
>STA.G hLabels
lda #SL..+SL._
>SYSCALL SListNew
>KAPI SListNew
bcs .9
>STA.G hVars
>LDYAI STRVSEG
>SYSCALL StrVNew
>LIBC StrVNew
bcs .9
sta hStrings
>LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPStrBuf1
@ -48,7 +48,7 @@ CORE.Init ldy #CCS.MAX
>STA.G hStrBuf1
>LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPStrBuf2
@ -56,7 +56,7 @@ CORE.Init ldy #CCS.MAX
>STA.G hStrBuf2
>LDYAI FWREF
>SYSCALL GetMem
>LIBC GetMem
>STYA ZPFWRefBufPtr
txa
@ -71,7 +71,7 @@ CORE.Init ldy #CCS.MAX
CORE.Quit lda hStrings
beq .1
>SYSCALL StrVFree
>LIBC StrVFree
.1 ldy #hStrBuf2
jsr CORE.Quit.Freemem
@ -91,14 +91,14 @@ CORE.Cleanup ldy #hFWRefBuf
>LDA.G hVars
beq .1
>SYSCALL SListFree
>KAPI SListFree
>STZ.G hVars
.1 >LDA.G hLabels
beq .8
>SYSCALL SListFree
>KAPI SListFree
>STZ.G hLabels
@ -114,7 +114,7 @@ CORE.Quit.Freemem
sta (pData),y
pla
>SYSCALL FreeMem
>LIBC FreeMem
.8 rts
*--------------------------------------
@ -227,10 +227,10 @@ CORE.Compile jsr CORE.GetChar
CORE.KW.JMP jmp (J.ACOS.KW,x)
*--------------------------------------
CORE.FWREF >LDYA L.MSG.FWREF
>SYSCALL PutS
>LIBC PutS
>LDA.G hFWRefBuf
>SYSCALL GetMemPtr
>LIBC GetMemPtr
>STYA ZPInputBufPtr
.1 lda (ZPInputBufPtr)
@ -261,7 +261,7 @@ CORE.FWREF >LDYA L.MSG.FWREF
.9 >PUSHW L.MSG.FWREFERR
>PUSHW ZPInputBufPtr
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
lda #E.CSYN
sec
@ -278,7 +278,7 @@ CORE.Run jsr CORE.Cleanup
sta ZPPtr1+1
>LDA.G hCodeBuf
>SYSCALL GetMemPtr
>LIBC GetMemPtr
>STYA ZPCodeBufPtr
lda ZPPtr1
@ -299,7 +299,7 @@ CORE.Run jsr CORE.Cleanup
sta ZPPtr1+1
>LDA.G hDataBuf
>SYSCALL GetMemPtr
>LIBC GetMemPtr
>STYA ZPDataBufPtr
lda ZPPtr1
@ -319,7 +319,7 @@ CORE.Run jsr CORE.Cleanup
>PUSHA Data Size
>PUSHBI 4
>SYSCALL PrintF
>LIBC PrintF
lda #0
tay
@ -491,13 +491,13 @@ CORE.CreateLabel
>PUSHW VAR.ID
>PUSHWI ZPCodeBufPtr
>PUSHWI 2 2 bytes : ADDR
>SYSCALL SListAddData
>KAPI SListAddData
.9 rts
*--------------------------------------
CORE.GetLabel >PUSHB.G hLabels
>PUSHW ZPInputBufPtr
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
>KAPI SListLookup
bcs .9
>STYA VAR.ID
@ -510,7 +510,7 @@ CORE.GetLabel >PUSHB.G hLabels
>PUSHWI VAR.ADDR
>PUSHWI 2 2 bytes : ADDR
>PUSHWZ From Start
>SYSCALL SListGetData
>KAPI SListGetData
.9 rts
*--------------------------------------
@ -574,7 +574,7 @@ CORE.CreateOrGetVar
>PUSHW VAR.ID
>PUSHWI VAR.ADDR
>PUSHWI 3 3 bytes : ADDR + TYPE
>SYSCALL SListAddData
>KAPI SListAddData
rts
*--------------------------------------
.7 jsr CORE.GetVarType
@ -594,7 +594,7 @@ CORE.NewVarKey >LDA.G hVars
CORE.NewKey >PUSHA
>PUSHW ZPInputBufPtr
>PUSHWI 0 ScopeID
>SYSCALL SListNewKey
>KAPI SListNewKey
bcs .9
pha
@ -612,7 +612,7 @@ CORE.GetAddr >PUSHA
>PUSHW ZPInputBufPtr
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
>KAPI SListLookup
bcs .9
>STYA VAR.ID
@ -624,7 +624,7 @@ CORE.GetAddr >PUSHA
>PUSHWI VAR.ADDR
>PUSHWI 3 3 bytes : ADDR + TYPE
>PUSHWZ From Start
>SYSCALL SListGetData
>KAPI SListGetData
rts
.9 >POP 1

View File

@ -168,7 +168,7 @@ EXP.CreateStrConst
jsr CORE.GetStrID
>PUSHYA
>PUSHW ZPStrBuf1
>SYSCALL StrVSet
>LIBC StrVSet
bcs .99
ldy STRID
@ -185,7 +185,7 @@ EXP.Int16 jsr CORE.IsDigit10
.1 >PUSHW ZPInputBufPtr
>PUSHWI ZPInputBufPtr
>PUSHBI 10
>SYSCALL StrToL
>LIBC StrToL
bcs .99
jsr CODE.PUSHINT16
@ -206,7 +206,7 @@ EXP.VARLookup >LDA.G hVars
>PUSHW ZPInputBufPtr
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
>KAPI SListLookup
bcs .3
>PUSHYA KeyID
@ -217,7 +217,7 @@ EXP.VARLookup >LDA.G hVars
.1 >PUSHWI EXP.ADDR
>PUSHWI 3 3 bytes : ADDR + TYPE
>PUSHWZ From Start
>SYSCALL SListGetData
>KAPI SListGetData
bcs .99
jsr CORE.GetVarType
@ -246,7 +246,7 @@ EXP.VARLookup >LDA.G hVars
>PUSHWI EXP.ADDR
>PUSHWI 3 3 bytes : ADDR + TYPE
>SYSCALL SListAddData
>KAPI SListAddData
bcc .7
.9 inc pStack discard extra hVars

View File

@ -20,7 +20,7 @@ RT.StrAdd ldx #2
>PUSHW ZPStrBuf1
>PUSHW ZPStrBuf2
>SYSCALL strcat
>LIBC strcat
>PUSHWZ RVALUE in buffer
@ -34,7 +34,7 @@ RT.StrCmp ldx #2
>PUSHW ZPStrBuf1
>PUSHW ZPStrBuf2
>SYSCALL strcmp
>LIBC strcmp
>PUSHYA
@ -61,12 +61,12 @@ RT.StrSet sty STRID
>PUSHA
>PUSHW ZPStrBuf1
>SYSCALL StrVGet
>LIBC StrVGet
.1 >PUSHB hStrings
>PUSHW STRID
>PUSHW ZPStrBuf1
>SYSCALL StrVSet
>LIBC StrVSet
inc pStack
inc pStack
@ -81,7 +81,7 @@ RT.StrOut jsr RT.StrPull
>PUSHW ZPStrBuf1
>PUSHBI 0
>SYSCALL fprintf
>LIBC fprintf
rts
*--------------------------------------
RT.StrPull ldx #0
@ -97,7 +97,7 @@ RT.StrPullX >PULLW STRID
>PUSHB hStrings
>PUSHW STRID
>PUSHW ZPStrBuf1,x
>SYSCALL StrVGet
>LIBC StrVGet
.8 rts
*--------------------------------------
@ -130,7 +130,7 @@ RT.IntOut >PUSHW L.MSG.INT16
>PUSHA
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
inc pStack
inc pStack
rts
@ -144,10 +144,10 @@ RT.TIMEd.1 >PUSHW ZPStrBuf1
>PUSHW L.FMT.DATE,x
>PUSHEA.G TimeBuf
>PUSHEA.G TimeBuf
>SYSCALL Time
>LEA.G TimeBuf
>LIBC Time
>SYSCALL StrFTime
>LIBC StrFTime
>PUSHWZ RVALUE in buffer
@ -208,7 +208,7 @@ RT.INPUT lda #0
bcs .1
sta (ZPStrBuf1),y
>SYSCALL PutChar
>LIBC PutChar
inc ZPPtr1
bra .1
@ -329,14 +329,14 @@ RT.STRd >PULLYA int
pla
>PUSHYA
>PUSHBI 2
>SYSCALL sprintf
>LIBC sprintf
>PUSHWZ RVALUE in buffer
rts
*--------------------------------------
RT.VAL >PULLYA str
>SYSCALL atoi
>LIBC atoi
>PUSHYA
rts
*--------------------------------------
@ -346,16 +346,16 @@ RT.OUTX ldy #S.PS.hStdOut
lda (pPS),y
>PUSHA
>PUSHW L.OUT,x
>SYSCALL FPutS
>LIBC FPutS
rts
*--------------------------------------
* TODO: handle lost conn CS and remap VT100 ESC codes
*--------------------------------------
RT.GetChar >SYSCALL GetChar
RT.GetChar >LIBC GetChar
cmp #C.CR
bne .8
>SYSCALL GetChar LF
>LIBC GetChar LF
lda #C.CR

View File

@ -242,7 +242,7 @@ CS.INIT.RTS rts
CS.RUN >PUSHW L.MSG.GREETINGS
>PUSHW A2osX.KVER
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
bcs CS.INIT.RTS
jsr CS.RUN.ARGS
@ -254,7 +254,7 @@ CS.RUN >PUSHW L.MSG.GREETINGS
>PUSHW L.MSG.COMPILING
>PUSHW ZPPtr2 File name
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
bcs CS.INIT.RTS
CS.RUN.LOOP >SLEEP
@ -308,7 +308,7 @@ CS.RUN.LOOP >SLEEP
CS.RUN.ARGS inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .7
>STYA ZPPtr1
@ -352,7 +352,7 @@ CS.RUN.ARGS inc ArgIndex
.90 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
>LIBC PrintF
lda #E.SYN
sec QUIT Process
@ -362,13 +362,13 @@ CS.RUN.FOpen >PUSHYA
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
bcs .9
>STA.G hFile
>LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA.G InputBufPtr
@ -385,7 +385,7 @@ CS.RUN.FGetS >LDYA.G InputBufPtr
>PUSHB.G hFile
>PUSHW ZPInputBufPtr
>PUSHWI 256
>SYSCALL FGetS
>LIBC FGetS
rts
*--------------------------------------
@ -397,13 +397,13 @@ CS.QUIT jsr CORE.Quit
CS.FClose >LDA.G hFile
beq .1
>SYSCALL FClose
>LIBC FClose
>STZ.G hFile
.1 >LDA.G hInputBuf
beq .8
>SYSCALL FreeMem
>LIBC FreeMem
>STZ.G hInputBuf
.8
@ -426,7 +426,7 @@ PrintDebugMsg >PUSHW L.MSG.DEBUG
>PUSHA
>PUSHBI 6
>SYSCALL PrintF
>LIBC PrintF
rts
*--------------------------------------
PrintTraceMsg ldy #S.PS.hStdErr
@ -437,7 +437,7 @@ PrintTraceMsg ldy #S.PS.hStdErr
>PUSHW.G LineCounter
>PUSHW.G InputBufPtr
>PUSHBI 4
>SYSCALL FPrintF
>LIBC FPrintF
rts
*--------------------------------------
@ -476,7 +476,7 @@ PrintErrorMsg >LDA.G bTrace
>PUSHW L.MSG.ERROR
>PUSHW ZPInputBufPtr
>PUSHBI 2
>SYSCALL FPrintF
>LIBC FPrintF
rts
*--------------------------------------
.INB usr/src/bin/acos.s.code

View File

@ -64,7 +64,7 @@ L.ADT.DIR .DA ADT.DIR
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib
>LIBC LoadLib
bcs .9
sta hLIBTCPIP
@ -75,7 +75,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
lda (ZPIPCfgPtr) Configured ?
bmi CS.RUN.IPOK
>LDYA L.MSG.IPKO
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
rts
@ -87,7 +87,7 @@ CS.RUN.IPOK ldy #S.IPCFG.IP+3
dex
bpl .1
>INC.G ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .9
>STYA ZPHostPtr
@ -104,18 +104,18 @@ CS.RUN.IPOK ldy #S.IPCFG.IP+3
>PUSHW ZPHostPtr
>PUSHBI 2
>LDYA L.MSG.UNKNOWN
>SYSCALL PrintF
>LIBC PrintF
bra CS.RUN.ESYN
.9 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL PrintF
>LIBC PrintF
CS.RUN.ESYN lda #E.SYN
secCS.RUN.RTS
rts
CS.RUN.HOSTOK >INC.G ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcc .10
jmp CS.RUN.PORTOK
.10 >STYA ZPPtr
@ -123,11 +123,11 @@ CS.RUN.HOSTOK >INC.G ArgIndex
cmp #'-'
beq .1
>LDYA ZPPtr
>SYSCALL atoi
>LIBC atoi
bcs CS.RUN.RTS
>STYA SA.REMOTE+S.SOCKADDR.PORT
>INC.G ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .8
>STYA ZPPtr
lda (ZPPtr)
@ -138,17 +138,17 @@ CS.RUN.HOSTOK >INC.G ArgIndex
cmp #'U'
bne .2
>INC.G ArgIndex
>SYSCALL ArgV
>LIBC ArgV
.9 bcs CS.RUN.ESYN
>STYA ZPReqBufPtr
>SYSCALL strlen
>LIBC strlen
>STYA ZPReqBufLen
.8 bra CS.RUN.PORTOK
.2 cmp #'F'
bne CS.RUN.ESYN
>INC.G ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs CS.RUN.RTS
CS.RUN.PORTOK >PUSHW ZPHostPtr
>PUSHW SA.REMOTE+S.SOCKADDR.PORT
@ -159,7 +159,7 @@ CS.RUN.PORTOK >PUSHW ZPHostPtr
bpl .1
>PUSHBI 8
>LDYA L.MSG.HOSTOK
>SYSCALL PrintF
>LIBC PrintF
CS.RUN.OPENSKT >PUSHBI 0 no protocol
lda #S.SOCKET.T.DGRAM
@ -173,7 +173,7 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcc .2
.9 >LDYA L.MSG.SKTKO
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
c rts
@ -182,9 +182,9 @@ c rts
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcs .9
>LDYA L.MSG.SKTOK
>SYSCALL PutS
>LIBC PutS
>LDYAI RESP.BUFSIZE
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPRespBufPtr
txa
@ -203,7 +203,7 @@ CS.RUN.SKTERR pha
>PUSHA
>PUSHBI 1
>LDYA L.MSG.SKTERR
>SYSCALL PrintF
>LIBC PrintF
pla
sec
rts
@ -212,7 +212,7 @@ CS.RUN.IOERR pha
>PUSHA
>PUSHBI 1
>LDYA L.MSG.IOERR
>SYSCALL PrintF
>LIBC PrintF
pla
sec
rts
@ -252,7 +252,7 @@ CS.RUN.DIRDECODE
bcs .99
bra .1
.2 >STA.G hFrame
>SYSCALL GetMemPtr
>LIBC GetMemPtr
>STYA ZPRespBufPtr
ldy #S.UDP+1
@ -276,7 +276,7 @@ CS.RUN.DIRDECODE
>PUSHW ZPPayloadPtr
ldy #S.PS.hStdOut
lda (pPS),y
>SYSCALL fwrite
>LIBC fwrite
>INC.G bResponse
bra .1
.8 cmp #MLI.E.IO SKT Close ?
@ -291,7 +291,7 @@ CS.RUN.DIRDECODE
rts
*--------------------------------------
CS.RUN.UNRLE >LDYA ZPPayloadLen
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPPayloadPtr
>STYA ZPPtr
@ -343,7 +343,7 @@ CS.QUIT >LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
>LIBC UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -16,7 +16,7 @@ X.COPY.TO.DEST .EQ 0
X.DELETE.SOURCE .EQ 0
X.RESET.SRC.DIR .EQ 0 single pass
*--------------------------------------
DBG .EQ 0
DBG .EQ 1
*--------------------------------------
.DUMMY
.OR ZPBIN
@ -47,19 +47,20 @@ ZS.END .ED
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 Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #2 BIN Layout Version 2
.DA #0
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.DIR .DA MSG.DIR
@ -79,7 +80,7 @@ CS.INIT clc
rts
*--------------------------------------
CS.RUN >INC.G ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .8
>STYA ZPPtr1
@ -94,10 +95,10 @@ CS.RUN >INC.G ArgIndex
bne CS.RUN
>INC.G ArgIndex -X
>SYSCALL ArgV
>LIBC ArgV
bcs .9
>SYSCALL StrDup
>LIBC StrDup
bcs .9
txa
@ -105,7 +106,7 @@ CS.RUN >INC.G ArgIndex
bra CS.RUN
.9 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
.99 rts
@ -132,7 +133,7 @@ CS.RUN >INC.G ArgIndex
beq .9
*--------------------------------------
>LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
bcs .99
>STYA ZPFullPath
@ -140,7 +141,7 @@ CS.RUN >INC.G ArgIndex
>STA.G hSrcFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>LIBC GetMemPtr
>STYA ZPPtr1
ldy #$ff
@ -161,7 +162,7 @@ CS.RUN >INC.G ArgIndex
.98 bcs .99
>LDYAI CHNK.SIZE
>SYSCALL GetMem
>LIBC GetMem
bcs .98
>STYA ZPInBufPtr
@ -169,7 +170,7 @@ CS.RUN >INC.G ArgIndex
>STA.G hSrcBuf
>LDYAI CHNK.SIZE
>SYSCALL GetMem
>LIBC GetMem
bcs .98
>STYA ZPOutBufPtr
@ -178,13 +179,13 @@ CS.RUN >INC.G ArgIndex
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
>LIBC FEOF
bcs .99
tay
bne .1
>SYSCALL GetChar
>LIBC GetChar
bcs .99
cmp #$03 Ctrl-C
@ -268,7 +269,7 @@ CS.RUN.DIR lda bRecurse
>PUSHW ZPRelPath
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
bcs .9
jsr CS.RUN.WriteArcHdrDir
@ -288,16 +289,16 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath
>LDA.G hArcFile
tay
lda FILEs.hName-1,y
>SYSCALL GetMemPtr
>LIBC GetMemPtr
>PUSHYA
>SYSCALL StrCmp
>LIBC StrCmp
bcc .8
>PUSHW L.MSG.FILE
>PUSHW ZPRelPath
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
bcs .9
jsr CS.RUN.WriteArcHdrFile
@ -307,7 +308,7 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath
bcs .9
.1 lda #'.'
>SYSCALL PutChar
>LIBC PutChar
jsr CS.RUN.ReadFile
bcc .2
@ -342,7 +343,7 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath
*--------------------------------------
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>SYSCALL PutS
>LIBC PutS
rts
.1 pha
@ -352,7 +353,7 @@ CS.RUN.CheckErr bcs .1
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
pla
sec
@ -361,20 +362,20 @@ CS.RUN.CheckErr bcs .1
CS.RUN.BuildFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>LIBC GetMemPtr
>PUSHYA
>SYSCALL StrCpy
>LIBC StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>SYSCALL StrCat
>LIBC StrCat
rts
*--------------------------------------
CS.RUN.OpenFile >PUSHW ZPFullPath
>PUSHBI O.RDONLY
>PUSHBI 0 Type
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
bcs .9
>STA.G hFile
@ -384,7 +385,7 @@ CS.RUN.OpenFile >PUSHW ZPFullPath
CS.RUN.ReadFile >PUSHB.G hFile
>PUSHW ZPInBufPtr
>PUSHWI CHNK.SIZE
>SYSCALL FRead
>LIBC FRead
bcs .9
>STYA.G Shunk.SrcSize
@ -393,7 +394,7 @@ CS.RUN.ReadFile >PUSHB.G hFile
*--------------------------------------
CS.RUN.CloseFile
>LDA.G hFile
>SYSCALL FClose
>LIBC FClose
bcs .9
>STZ.G hFile
@ -410,7 +411,7 @@ CS.RUN.Arc >LDYA.G Shunk.SrcSize
.9 rts
*--------------------------------------
CS.RUN.OpenArc >LDA.G ArcName
>SYSCALL ArgV
>LIBC ArgV
>PUSHYA
bit bAppend
@ -420,14 +421,14 @@ CS.RUN.OpenArc >LDA.G ArcName
>PUSHBI $CF PAK
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
bcs .9
>STA.G hArcFile
>PUSHB.G hArcFile
>PUSHW L.ARC.Header
>SYSCALL FPutS
>LIBC FPutS
.9
CS.RUN.OpenArc.RTS
rts
@ -437,20 +438,20 @@ CS.RUN.AppendArc
>PUSHBI $CF PAK
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
bcs CS.RUN.OpenArc.RTS
>STA.G hArcFile
>PUSHB.G hArcFile
>PUSHLZ
>PUSHBI SEEK.SET
>SYSCALL FSeek
>LIBC FSeek
bcs CS.RUN.OpenArc.RTS
>PUSHB.G hArcFile
>PUSHW ZPInBufPtr
>PUSHWI 3
>SYSCALL FRead
>LIBC FRead
bcs .9
cpy #3
@ -468,11 +469,11 @@ CS.RUN.AppendArc
>PUSHB.G hArcFile
>PUSHLZ
>PUSHBI SEEK.END
>SYSCALL FSeek
>LIBC FSeek
.9 rts
.99 >LDYA L.MSG.E.IARC
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
rts
@ -513,7 +514,7 @@ CS.RUN.WriteArcHdr
>PUSHB.G hArcFile
>PUSHW ZPRelPath
>SYSCALL FPutS
>LIBC FPutS
CS.RUN.WriteArcHdr.9
rts
@ -554,7 +555,7 @@ CS.RUN.WriteSrcData
>PUSHB.G hArcFile
>PUSHW ZPInBufPtr
>PUSHW.G Shunk.SrcSize
>SYSCALL FWrite
>LIBC FWrite
.9 rts
*--------------------------------------
CS.RUN.WriteArcData
@ -573,7 +574,7 @@ CS.RUN.WriteArcData
>PUSHB.G hArcFile
>PUSHW ZPOutBufPtr
>PUSHW.G Shunk.DstSize
>SYSCALL FWrite
>LIBC FWrite
.9 rts
*--------------------------------------
CS.RUN.WriteArcByteY
@ -584,10 +585,10 @@ CS.RUN.WriteArcByteA
>PUSHB.G hArcFile
pla
>PUSHA
>SYSCALL FPutC
>LIBC FPutC
rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
@ -611,7 +612,7 @@ CS.QUIT jsr X.LeaveSubDir
>LDA.G hArcFile
beq .1
>SYSCALL FClose
>LIBC FClose
.1 clc
rts
@ -619,7 +620,7 @@ CS.QUIT jsr X.LeaveSubDir
.7 lda (pData),y
beq .8
>SYSCALL FreeMem
>LIBC FreeMem
.8 rts
*--------------------------------------
@ -672,10 +673,11 @@ MSG.DBG2 .CS " S.TB.Cnt :%5D, STR.TB.Cnt:%5D, BL.TB.Cnt :%5D\r\n"
.CZ " %5D %5D %5D %5D %5D %5D %5D %5D %5D %5D %5D %5D\r\n"
MSG.DBG3 .CZ " Output : %6u Bits, %5D Bytes, Alg=%d\r\n"
.FIN
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
ArgIndex .BS 1
ArcName .BS 1
hSrcFullPath .BS 1
@ -690,8 +692,7 @@ Shunk.SrcSize .BS 2
Shunk.DstSize .BS 2
.INB usr/src/shared/x.fileenum.g
DS.END
.ED
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/arc.s

View File

@ -90,13 +90,13 @@ CS.RUN ldy #S.PS.ARGC
bcs .99
lda #2
>SYSCALL ArgV
>LIBC ArgV
>PUSHYA
>PUSHBI O.CREATE+O.WRONLY
>PUSHB.G STATBUF+S.STAT.P.TYPE
>PUSHW.G STATBUF+S.STAT.P.AUXTYPE
>SYSCALL FOpen
>LIBC FOpen
bcs .99
sta hDstFile
@ -105,21 +105,21 @@ CS.RUN ldy #S.PS.ARGC
.9 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
>LIBC PrintF
lda #E.SYN
sec
.99 rts
*--------------------------------------
CS.RUN.START >PUSHW L.MSG.SRCFILE
lda #1
>SYSCALL ArgV
>LIBC ArgV
>PUSHYA
>PUSHW ZPSrcFileSize
>PUSHW.G ARCME.HEADER+5
>PUSHB.G ARCME.HEADER+7
>PUSHW ZPDstTableOfs
>PUSHBI 9
>SYSCALL PrintF
>LIBC PrintF
>LDYA ZPDstTableOfs
jsr CS.RUN.GetSrcBufYA
@ -128,19 +128,19 @@ CS.RUN.START >PUSHW L.MSG.SRCFILE
>PUSHB hSrcFile
>PUSHLZ
>PUSHBI SEEK.SET
>SYSCALL FSeek
>LIBC FSeek
bcs CS.RUN.RTS
>PUSHB hSrcFile
>PUSHW ZPInBufPtr
>PUSHW ZPDstTableOfs
>SYSCALL FRead
>LIBC FRead
bcs CS.RUN.RTS
>PUSHB hDstFile
>PUSHW ZPInBufPtr
>PUSHW ZPDstTableOfs
>SYSCALL FWrite
>LIBC FWrite
bcs CS.RUN.RTS
jsr CS.QUIT.BUF
@ -153,13 +153,13 @@ CS.RUN.RTS rts
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
>LIBC FEOF
bcs CS.RUN.RTS
tay
bne .1
>SYSCALL GetChar
>LIBC GetChar
bcs CS.RUN.RTS
cmp #$03 Ctrl-C
@ -186,7 +186,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
>PUSHW ZPChunkOfs
>PUSHW ZPChunkLen
>PUSHBI 5
>SYSCALL PrintF
>LIBC PrintF
bcs .9
jsr CS.RUN.Arc
@ -217,20 +217,20 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
*--------------------------------------
CS.RUN.CheckSrcFile
lda #1
>SYSCALL ArgV
>LIBC ArgV
>PUSHYA
>PUSHBI O.RDONLY
>PUSHBI 0 Type
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
bcs .99
sta hSrcFile
>PUSHB hSrcFile
>PUSHEA.G STATBUF
>SYSCALL FStat
>LIBC FStat
.99 bcs .9
>LDA.G STATBUF+S.STAT.SIZE+3
@ -273,13 +273,13 @@ CS.RUN.CheckTAG >PUSHB hSrcFile
>PUSHYA
>PUSHBI SEEK.SET
>SYSCALL FSeek
>LIBC FSeek
bcs CS.RUN.CheckSrcFile.RTS
>PUSHB hSrcFile
>PUSHEA.G ARCME.HEADER
>PUSHWI 10
>SYSCALL FRead
>LIBC FRead
bcs CS.RUN.CheckSrcFile.RTS
ldx #4
@ -313,7 +313,7 @@ CS.RUN.GetTable >LDA.G ARCME.HEADER+8
>PUSHWZ
>PUSHW ZPDstTableOfs
>PUSHBI SEEK.SET
>SYSCALL FSeek
>LIBC FSeek
bcs .9
>PUSHB hSrcFile
@ -326,7 +326,7 @@ CS.RUN.GetTable >LDA.G ARCME.HEADER+8
lda #0
>PUSHYA
>SYSCALL FRead
>LIBC FRead
.9 rts
*--------------------------------------
@ -354,13 +354,13 @@ CS.RUN.GetChunk lda ZPChunkIndex
>PUSHWZ
>PUSHW ZPChunkOfs
>PUSHBI SEEK.SET
>SYSCALL FSeek
>LIBC FSeek
bcs .9
>PUSHB hSrcFile
>PUSHEA.G CHUNK.HEADER
>PUSHWI S.ARCSHNK.H
>SYSCALL FRead
>LIBC FRead
bcs .9
>LDA.G CHUNK.HEADER+2
@ -382,7 +382,7 @@ CS.RUN.GetChunk lda ZPChunkIndex
>PUSHB hSrcFile
>PUSHW ZPInBufPtr
>PUSHW ZPChunkLen
>SYSCALL FRead
>LIBC FRead
bcs .9
* clc
@ -394,7 +394,7 @@ CS.RUN.GetChunk lda ZPChunkIndex
.9 rts
*--------------------------------------
CS.RUN.GetSrcBufYA
>SYSCALL GetMem
>LIBC GetMem
bcs .9
stx hSrcBuf
@ -403,7 +403,7 @@ CS.RUN.GetSrcBufYA
.9 rts
*--------------------------------------
CS.RUN.Arc >LDYA ZPChunkLen
>SYSCALL GetMem
>LIBC GetMem
bcs .9
stx hDstBuf
@ -422,7 +422,7 @@ CS.RUN.RewriteTable
>PUSHWZ
>PUSHW ZPDstTableOfs
>PUSHBI SEEK.SET
>SYSCALL FSeek
>LIBC FSeek
bcs CS.RUN.WriteTable.RTS
*--------------------------------------
CS.RUN.WriteTable
@ -433,12 +433,12 @@ CS.RUN.WriteTable
tay
lda #0
>PUSHYA
>SYSCALL FWrite
>LIBC FWrite
CS.RUN.WriteTable.RTS
rts
*--------------------------------------
CS.RUN.WriteArc lda hDstFile
>SYSCALL FTell
>LIBC FTell
bcs .9
>PULLW ZPChunkNewOfs
@ -448,7 +448,7 @@ CS.RUN.WriteArc lda hDstFile
>PUSHB hDstFile
>PUSHW ZPOutBufPtr
>PUSHW ZPChunkPakedLen
>SYSCALL FWrite
>LIBC FWrite
bcs .9
>PUSHW L.MSG.ARCED
@ -457,7 +457,7 @@ CS.RUN.WriteArc lda hDstFile
>PUSHW ZPChunkPakedLen
>PUSHW ZPChunkNewOfs
>PUSHBI 6
>SYSCALL PrintF
>LIBC PrintF
.9
CS.RUN.WriteArc.RTS
@ -465,7 +465,7 @@ CS.RUN.WriteArc.RTS
*--------------------------------------
CS.RUN.WriteStore
lda hDstFile
>SYSCALL FTell
>LIBC FTell
bcs CS.RUN.WriteArc.RTS
>PULLW ZPChunkNewOfs
@ -475,13 +475,13 @@ CS.RUN.WriteStore
>PUSHB hDstFile
>PUSHEA.G CHUNK.HEADER
>PUSHWI S.ARCSHNK.H
>SYSCALL FWrite
>LIBC FWrite
bcs .9
>PUSHB hDstFile
>PUSHW ZPInBufPtr
>PUSHW ZPChunkLen
>SYSCALL FWrite
>LIBC FWrite
bcs .9
>PUSHW L.MSG.ARCED
@ -489,7 +489,7 @@ CS.RUN.WriteStore
>PUSHW ZPChunkPakedLen
>PUSHW ZPChunkNewOfs
>PUSHBI 6
>SYSCALL PrintF
>LIBC PrintF
.9 rts
*--------------------------------------
@ -526,24 +526,24 @@ CS.DOEVENT sec
*--------------------------------------
CS.QUIT lda hDstFile
beq .2
>SYSCALL FClose
>LIBC FClose
.2 lda hSrcFile
beq CS.QUIT.BUF
>SYSCALL FClose
>LIBC FClose
*--------------------------------------
CS.QUIT.BUF lda hDstBuf
beq .1
stz hDstBuf
>SYSCALL FreeMem
>LIBC FreeMem
.1 lda hSrcBuf
beq .8
stz hSrcBuf
>SYSCALL FreeMem
>LIBC FreeMem
.8 clc
rts

View File

@ -49,7 +49,7 @@ L.MSG2 .DA MSG2
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib
>LIBC LoadLib
bcs .9
sta hLIBTCPIP
.9 rts
@ -70,7 +70,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
jmp CS.RUN.DUMP
.2 lda #1
>SYSCALL ArgV
>LIBC ArgV
>PUSHYA
>PUSHW L.SSCANF.IP
>PUSHEA.G DST.IP
@ -78,7 +78,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
>PUSHEA.G DST.IP+2
>PUSHEA.G DST.IP+3
>PUSHBI 8 4 Ptrs
>SYSCALL SScanF
>LIBC SScanF
bcs CS.RUN.ERR
ldy #S.PS.ARGC
@ -90,7 +90,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
jmp CS.RUN.ADD
CS.RUN.ERR >LDYA L.MSG.Usage
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
rts
@ -106,7 +106,7 @@ CS.RUN.QUERY jsr Init.Timeout
bcs .8
>SLEEP
>SYSCALL GetChar
>LIBC GetChar
bcs .1
cmp #3
@ -133,7 +133,7 @@ CS.RUN.QUERY jsr Init.Timeout
bne .3
>PUSHBI 10
>SYSCALL PrintF
>LIBC PrintF
.8 lda #0
@ -141,7 +141,7 @@ CS.RUN.QUERY jsr Init.Timeout
rts
*--------------------------------------
CS.RUN.ADD lda #2
>SYSCALL ArgV
>LIBC ArgV
>PUSHYA
>PUSHW L.SSCANF.MAC
>PUSHEA.G DST.MAC
@ -151,7 +151,7 @@ CS.RUN.ADD lda #2
>PUSHEA.G DST.MAC+4
>PUSHEA.G DST.MAC+5
>PUSHBI 12 6 Ptrs
>SYSCALL SScanF
>LIBC SScanF
bcs .9
>PUSHEA.G DST.MAC
@ -166,7 +166,7 @@ CS.RUN.ADD lda #2
CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.GetCache
>STYA ZPPTR1
>LDYA L.MSG0
>SYSCALL PutS
>LIBC PutS
lda #K.ARPCACHE.SIZE
sta EntryCount
@ -198,7 +198,7 @@ CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.GetCache
bne .2
>PUSHBI 13
>SYSCALL PrintF
>LIBC PrintF
.4 lda ZPPTR1
clc
@ -231,7 +231,7 @@ CS.DOEVENT lda (pEvent)
CS.QUIT lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
>LIBC UnloadLib
.8 clc
rts

View File

@ -2,24 +2,24 @@ NEW
AUTO 3,1
*---------------------------------------
T.ADDR.MODES .EQ *
.DA #2,$$"#a"
.DA #5,$$"(a),Y"
.DA #5,$$"(a,X)"
.DA #1,$$"a"
.DA #3,$$"a,X"
.DA #2,$$"aa"
.DA #4,$$"aa,X"
.DA #4,$$"aa,Y"
.DA #4,$$"(aa)"
.DA #3,$$"a,Y"
.HS 00
.PS "#a"
.PS "(a),Y"
.PS "(a,X)"
.PS "a"
.PS "a,X"
.PS "aa"
.PS "aa,X"
.PS "aa,Y"
.PS "(aa)"
.PS "a,Y"
.DA #0
*---------------------------------------
T.REGISTERS .EQ *
.DA #1,$$"Y"
.DA #1,$$"X"
.HS 00
.PS "Y"
.PS "X"
.DA #0
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.6502.A
LOAD USR/SRC/BIN/ASM.6502.S
SAVE usr/src/bin/asm.6502.a
LOAD usr/src/bin/asm.6502.s
ASM

View File

@ -3,327 +3,478 @@ NEW
*---------------------------------------
T.OPCODES .EQ *
ADC .DA ADC.E+1-*
.DA #3,$$"ADC"
.DA #1,#3,$$"69a"
.DA #2,#3,$$"71a"
.DA #3,#3,$$"61a"
.DA #4,#3,$$"65a"
.DA #5,#3,$$"75a"
.DA #6,#4,$$"6Daa"
.DA #7,#4,$$"7Daa"
.DA #8,#4,$$"79aa"
ADC.E .HS 00
.PS "ADC"
.DA #1
.PS "69a"
.DA #2
.PS "71a"
.DA #3
.PS "61a"
.DA #4
.PS "65a"
.DA #5
.PS "75a"
.DA #6
.PS "6Daa"
.DA #7
.PS "7Daa"
.DA #8
.PS "79aa"
ADC.E .DA #0
AND .DA AND.E+1-*
.DA #3,$$"AND"
.DA #1,#3,$$"29a"
.DA #2,#3,$$"31a"
.DA #3,#3,$$"21a"
.DA #4,#3,$$"25a"
.DA #5,#3,$$"35a"
.DA #6,#4,$$"2Daa"
.DA #7,#4,$$"3Daa"
.DA #8,#4,$$"39aa"
AND.E .HS 00
.PS "AND"
.DA #1
.PS "29a"
.DA #2
.PS "31a"
.DA #3
.PS "21a"
.DA #4
.PS "25a"
.DA #5
.PS "35a"
.DA #6
.PS "2Daa"
.DA #7
.PS "3Daa"
.DA #8
.PS "39aa"
AND.E .DA #0
ASL .DA ASL.E+1-*
.DA #3,$$"ASL"
.DA #4,#3,$$"06a"
.DA #5,#3,$$"16a"
.DA #6,#4,$$"0Eaa"
.DA #7,#4,$$"1Eaa"
.DA #255,#2,$$"0A"
ASL.E .HS 00
.PS "ASL"
.DA #4
.PS "06a"
.DA #5
.PS "16a"
.DA #6
.PS "0Eaa"
.DA #7
.PS "1Eaa"
.DA #255
.PS "0A"
ASL.E .DA #0
BCC .DA BCC.E+1-*
.DA #3,$$"BCC"
.DA #6,#3,$$"90r"
BCC.E .HS 00
.PS "BCC"
.DA #6
.PS "90r"
BCC.E .DA #0
BCS .DA BCS.E+1-*
.DA #3,$$"BCS"
.DA #6,#3,$$"B0r"
BCS.E .HS 00
.PS "BCS"
.DA #6
.PS "B0r"
BCS.E .DA #0
BEQ .DA BEQ.E+1-*
.DA #3,$$"BEQ"
.DA #6,#3,$$"F0r"
BEQ.E .HS 00
.PS "BEQ"
.DA #6
.PS "F0r"
BEQ.E .DA #0
BIT .DA BIT.E+1-*
.DA #3,$$"BIT"
.DA #4,#3,$$"24a"
.DA #6,#4,$$"2Caa"
BIT.E .HS 00
.PS "BIT"
.DA #4
.PS "24a"
.DA #6
.PS "2Caa"
BIT.E .DA #0
BMI .DA BMI.E+1-*
.DA #3,$$"BMI"
.DA #6,#3,$$"30r"
BMI.E .HS 00
.PS "BMI"
.DA #6
.PS "30r"
BMI.E .DA #0
BNE .DA BNE.E+1-*
.DA #3,$$"BNE"
.DA #6,#3,$$"D0r"
BNE.E .HS 00
.PS "BNE"
.DA #6
.PS "D0r"
BNE.E .DA #0
BPL .DA BPL.E+1-*
.DA #3,$$"BPL"
.DA #6,#3,$$"10r"
BPL.E .HS 00
.PS "BPL"
.DA #6
.PS "10r"
BPL.E .DA #0
BRK .DA BRK.E+1-*
.DA #3,$$"BRK"
.DA #255,#2,$$"00"
BRK.E .HS 00
.PS "BRK"
.DA #255
.PS "00"
BRK.E .DA #0
BVC .DA BVC.E+1-*
.DA #3,$$"BVC"
.DA #6,#3,$$"50r"
BVC.E .HS 00
.PS "BVC"
.DA #6
.PS "50r"
BVC.E .DA #0
BVS .DA BVS.E+1-*
.DA #3,$$"BVS"
.DA #6,#3,$$"70r"
BVS.E .HS 00
.PS "BVS"
.DA #6
.PS "70r"
BVS.E .DA #0
CLC .DA CLC.E+1-*
.DA #3,$$"CLC"
.DA #255,#2,$$"18"
CLC.E .HS 00
.PS "CLC"
.DA #255
.PS "18"
CLC.E .DA #0
CLD .DA CLD.E+1-*
.DA #3,$$"CLD"
.DA #255,#2,$$"D8"
CLD.E .HS 00
.PS "CLD"
.DA #255
.PS "D8"
CLD.E .DA #0
CLI .DA CLI.E+1-*
.DA #3,$$"CLI"
.DA #255,#2,$$"58"
CLI.E .HS 00
.PS "CLI"
.DA #255
.PS "58"
CLI.E .DA #0
CLV .DA CLV.E+1-*
.DA #3,$$"CLV"
.DA #255,#2,$$"B8"
CLV.E .HS 00
.PS "CLV"
.DA #255
.PS "B8"
CLV.E .DA #0
CMP .DA CMP.E+1-*
.DA #3,$$"CMP"
.DA #1,#3,$$"C9a"
.DA #2,#3,$$"D1a"
.DA #3,#3,$$"C1a"
.DA #4,#3,$$"C5a"
.DA #5,#3,$$"D5a"
.DA #6,#4,$$"CDaa"
.DA #7,#4,$$"DDaa"
.DA #8,#4,$$"D9aa"
CMP.E .HS 00
.PS "CMP"
.DA #1
.PS "C9a"
.DA #2
.PS "D1a"
.DA #3
.PS "C1a"
.DA #4
.PS "C5a"
.DA #5
.PS "D5a"
.DA #6
.PS "CDaa"
.DA #7
.PS "DDaa"
.DA #8
.PS "D9aa"
CMP.E .DA #0
CPX .DA CPX.E+1-*
.DA #3,$$"CPX"
.DA #1,#3,$$"E0a"
.DA #4,#3,$$"E4a"
.DA #6,#4,$$"Ecaa"
CPX.E .HS 00
.PS "CPX"
.DA #1
.PS "E0a"
.DA #4
.PS "E4a"
.DA #6
.PS "Ecaa"
CPX.E .DA #0
CPY .DA CPY.E+1-*
.DA #3,$$"CPY"
.DA #1,#3,$$"C0a"
.DA #4,#3,$$"C4a"
.DA #6,#4,$$"Ccaa"
CPY.E .HS 00
.PS "CPY"
.DA #1
.PS "C0a"
.DA #4
.PS "C4a"
.DA #6
.PS "Ccaa"
CPY.E .DA #0
DEC .DA DEC.E+1-*
.DA #3,$$"DEC"
.DA #4,#3,$$"C6a"
.DA #5,#3,$$"D6a"
.DA #6,#4,$$"Ceaa"
.DA #7,#4,$$"Deaa"
DEC.E .HS 00
.PS "DEC"
.DA #4
.PS "C6a"
.DA #5
.PS "D6a"
.DA #6
.PS "Ceaa"
.DA #7
.PS "Deaa"
DEC.E .DA #0
DEX .DA DEX.E+1-*
.DA #3,$$"DEX"
.DA #255,#2,$$"CA"
DEX.E .HS 00
.PS "DEX"
.DA #255
.PS "CA"
DEX.E .DA #0
DEY .DA DEY.E+1-*
.DA #3,$$"DEY"
.DA #255,#2,$$"88"
DEY.E .HS 00
.PS "DEY"
.DA #255
.PS "88"
DEY.E .DA #0
EOR .DA EOR.E+1-*
.DA #3,$$"EOR"
.DA #1,#3,$$"49a"
.DA #2,#3,$$"51a"
.DA #3,#3,$$"41a"
.DA #4,#3,$$"45a"
.DA #5,#3,$$"55a"
.DA #6,#4,$$"4Daa"
.DA #7,#4,$$"5Daa"
.DA #8,#4,$$"59aa"
EOR.E .HS 00
.PS "EOR"
.DA #1
.PS "49a"
.DA #2
.PS "51a"
.DA #3
.PS "41a"
.DA #4
.PS "45a"
.DA #5
.PS "55a"
.DA #6
.PS "4Daa"
.DA #7
.PS "5Daa"
.DA #8
.PS "59aa"
EOR.E .DA #0
INC .DA INC.E+1-*
.DA #3,$$"INC"
.DA #4,#3,$$"E6a"
.DA #5,#3,$$"F6a"
.DA #6,#4,$$"EEaa"
.DA #7,#4,$$"FEaa"
INC.E .HS 00
.PS "INC"
.DA #4
.PS "E6a"
.DA #5
.PS "F6a"
.DA #6
.PS "EEaa"
.DA #7
.PS "FEaa"
INC.E .DA #0
INX .DA INX.E+1-*
.DA #3,$$"INX"
.DA #255,#2,$$"E8"
INX.E .HS 00
.PS "INX"
.DA #255
.PS "E8"
INX.E .DA #0
INY .DA INY.E+1-*
.DA #3,$$"INY"
.DA #255,#2,$$"C8"
INY.E .HS 00
.PS "INY"
.DA #255
.PS "C8"
INY.E .DA #0
JMP .DA JMP.E+1-*
.DA #3,$$"JMP"
.DA #9,#4,$$"6Caa"
.DA #6,#4,$$"4Caa"
JMP.E .HS 00
.PS "JMP"
.DA #9
.PS "6Caa"
.DA #6
.PS "4Caa"
JMP.E .DA #0
JSR .DA JSR.E+1-*
.DA #3,$$"JSR"
.DA #6,#4,$$"20aa"
JSR.E .HS 00
.PS "JSR"
.DA #6
.PS "20aa"
JSR.E .DA #0
LDA .DA LDA.E+1-*
.DA #3,$$"LDA"
.DA #1,#3,$$"A9a"
.DA #2,#3,$$"B1a"
.DA #3,#3,$$"A1a"
.DA #4,#3,$$"A5a"
.DA #5,#3,$$"B5a"
.DA #6,#4,$$"ADaa"
.DA #7,#4,$$"BDaa"
.DA #8,#4,$$"B9aa"
LDA.E .HS 00
.PS "LDA"
.DA #1
.PS "A9a"
.DA #2
.PS "B1a"
.DA #3
.PS "A1a"
.DA #4
.PS "A5a"
.DA #5
.PS "B5a"
.DA #6
.PS "ADaa"
.DA #7
.PS "BDaa"
.DA #8
.PS "B9aa"
LDA.E .DA #0
LDX .DA LDX.E+1-*
.DA #3,$$"LDX"
.DA #1,#3,$$"A2a"
.DA #4,#3,$$"A6a"
.DA #10,#3,$$"B6a"
.DA #6,#4,$$"AEaa"
.DA #8,#4,$$"BEaa"
LDX.E .HS 00
.PS "LDX"
.DA #1
.PS "A2a"
.DA #4
.PS "A6a"
.DA #10
.PS "B6a"
.DA #6
.PS "AEaa"
.DA #8
.PS "BEaa"
LDX.E .DA #0
LDY .DA LDY.E+1-*
.DA #3,$$"LDY"
.DA #1,#3,$$"A0a"
.DA #4,#3,$$"A4a"
.DA #5,#3,$$"B4a"
.DA #6,#4,$$"ACaa"
.DA #7,#4,$$"BCaa"
LDY.E .HS 00
.PS "LDY"
.DA #1
.PS "A0a"
.DA #4
.PS "A4a"
.DA #5
.PS "B4a"
.DA #6
.PS "ACaa"
.DA #7
.PS "BCaa"
LDY.E .DA #0
LSR .DA LSR.E+1-*
.DA #3,$$"LSR"
.DA #4,#3,$$"46a"
.DA #5,#3,$$"56a"
.DA #6,#4,$$"4Eaa"
.DA #7,#4,$$"5Eaa"
.DA #255,#2,$$"4A"
LSR.E .HS 00
.PS "LSR"
.DA #4
.PS "46a"
.DA #5
.PS "56a"
.DA #6
.PS "4Eaa"
.DA #7
.PS "5Eaa"
.DA #255
.PS "4A"
LSR.E .DA #0
NOP .DA NOP.E+1-*
.DA #3,$$"NOP"
.DA #255,#2,$$"EA"
NOP.E .HS 00
.PS "NOP"
.DA #255
.PS "EA"
NOP.E .DA #0
ORA .DA ORA.E+1-*
.DA #3,$$"ORA"
.DA #1,#3,$$"09a"
.DA #2,#3,$$"11a"
.DA #3,#3,$$"01a"
.DA #4,#3,$$"05a"
.DA #5,#3,$$"15a"
.DA #6,#4,$$"0Daa"
.DA #7,#4,$$"1Daa"
.DA #8,#4,$$"19aa"
ORA.E .HS 00
.PS "ORA"
.DA #1
.PS "09a"
.DA #2
.PS "11a"
.DA #3
.PS "01a"
.DA #4
.PS "05a"
.DA #5
.PS "15a"
.DA #6
.PS "0Daa"
.DA #7
.PS "1Daa"
.DA #8
.PS "19aa"
ORA.E .DA #0
PHA .DA PHA.E+1-*
.DA #3,$$"PHA"
.DA #255,#2,$$"48"
PHA.E .HS 00
.PS "PHA"
.DA #255
.PS "48"
PHA.E .DA #0
PHP .DA PHP.E+1-*
.DA #3,$$"PHP"
.DA #255,#2,$$"08"
PHP.E .HS 00
.PS "PHP"
.DA #255
.PS "08"
PHP.E .DA #0
PLA .DA PLA.E+1-*
.DA #3,$$"PLA"
.DA #255,#2,$$"68"
PLA.E .HS 00
.PS "PLA"
.DA #255
.PS "68"
PLA.E .DA #0
PLP .DA PLP.E+1-*
.DA #3,$$"PLP"
.DA #255,#2,$$"28"
PLP.E .HS 00
.PS "PLP"
.DA #255
.PS "28"
PLP.E .DA #0
ROL .DA ROL.E+1-*
.DA #3,$$"ROL"
.DA #4,#3,$$"26a"
.DA #5,#3,$$"36a"
.DA #6,#4,$$"2Eaa"
.DA #7,#4,$$"3Eaa"
.DA #255,#2,$$"2A"
ROL.E .HS 00
.PS "ROL"
.DA #4
.PS "26a"
.DA #5
.PS "36a"
.DA #6
.PS "2Eaa"
.DA #7
.PS "3Eaa"
.DA #255
.PS "2A"
ROL.E .DA #0
ROR .DA ROR.E+1-*
.DA #3,$$"ROR"
.DA #4,#3,$$"66a"
.DA #5,#3,$$"76a"
.DA #6,#4,$$"6Eaa"
.DA #7,#4,$$"7Eaa"
.DA #255,#2,$$"6A"
ROR.E .HS 00
.PS "ROR"
.DA #4
.PS "66a"
.DA #5
.PS "76a"
.DA #6
.PS "6Eaa"
.DA #7
.PS "7Eaa"
.DA #255
.PS "6A"
ROR.E .DA #0
RTI .DA RTI.E+1-*
.DA #3,$$"RTI"
.DA #255,#2,$$"40"
RTI.E .HS 00
.PS "RTI"
.DA #255
.PS "40"
RTI.E .DA #0
RTS .DA RTS.E+1-*
.DA #3,$$"RTS"
.DA #255,#2,$$"60"
RTS.E .HS 00
.PS "RTS"
.DA #255
.PS "60"
RTS.E .DA #0
SBC .DA SBC.E+1-*
.DA #3,$$"SBC"
.DA #1,#3,$$"E9a"
.DA #2,#3,$$"F1a"
.DA #3,#3,$$"E1a"
.DA #4,#3,$$"E5a"
.DA #5,#3,$$"F5a"
.DA #6,#4,$$"EDaa"
.DA #7,#4,$$"FDaa"
.DA #8,#4,$$"F9aa"
SBC.E .HS 00
.PS "SBC"
.DA #1
.PS "E9a"
.DA #2
.PS "F1a"
.DA #3
.PS "E1a"
.DA #4
.PS "E5a"
.DA #5
.PS "F5a"
.DA #6
.PS "EDaa"
.DA #7
.PS "FDaa"
.DA #8
.PS "F9aa"
SBC.E .DA #0
SEC .DA SEC.E+1-*
.DA #3,$$"SEC"
.DA #255,#2,$$"38"
SEC.E .HS 00
.PS "SEC"
.DA #255
.PS "38"
SEC.E .DA #0
SED .DA SED.E+1-*
.DA #3,$$"SED"
.DA #255,#2,$$"F8"
SED.E .HS 00
.PS "SED"
.DA #255
.PS "F8"
SED.E .DA #0
SEI .DA SEI.E+1-*
.DA #3,$$"SEI"
.DA #255,#2,$$"78"
SEI.E .HS 00
.PS "SEI"
.DA #255
.PS "78"
SEI.E .DA #0
STA .DA STA.E+1-*
.DA #3,$$"STA"
.DA #2,#3,$$"91a"
.DA #3,#3,$$"81a"
.DA #4,#3,$$"85a"
.DA #5,#3,$$"95a"
.DA #6,#4,$$"8Daa"
.DA #7,#4,$$"9Daa"
.DA #8,#4,$$"99aa"
STA.E .HS 00
.PS "STA"
.DA #2
.PS "91a"
.DA #3
.PS "81a"
.DA #4
.PS "85a"
.DA #5
.PS "95a"
.DA #6
.PS "8Daa"
.DA #7
.PS "9Daa"
.DA #8
.PS "99aa"
STA.E .DA #0
STX .DA STX.E+1-*
.DA #3,$$"STX"
.DA #4,#3,$$"86a"
.DA #10,#3,$$"96a"
.DA #6,#4,$$"8Eaa"
STX.E .HS 00
.PS "STX"
.DA #4
.PS "86a"
.DA #10
.PS "96a"
.DA #6
.PS "8Eaa"
STX.E .DA #0
STY .DA STY.E+1-*
.DA #3,$$"STY"
.DA #4,#3,$$"84a"
.DA #5,#3,$$"94a"
.DA #6,#4,$$"8Caa"
STY.E .HS 00
.PS "STY"
.DA #4
.PS "84a"
.DA #5
.PS "94a"
.DA #6
.PS "8Caa"
STY.E .DA #0
TAX .DA TAX.E+1-*
.DA #3,$$"TAX"
.DA #255,#2,$$"AA"
TAX.E .HS 00
.PS "TAX"
.DA #255
.PS "AA"
TAX.E .DA #0
TAY .DA TAY.E+1-*
.DA #3,$$"TAY"
.DA #255,#2,$$"A8"
TAY.E .HS 00
.PS "TAY"
.DA #255
.PS "A8"
TAY.E .DA #0
TSX .DA TSX.E+1-*
.DA #3,$$"TSX"
.DA #255,#2,$$"BA"
TSX.E .HS 00
.PS "TSX"
.DA #255
.PS "BA"
TSX.E .DA #0
TXA .DA TXA.E+1-*
.DA #3,$$"TXA"
.DA #255,#2,$$"8A"
TXA.E .HS 00
.PS "TXA"
.DA #255
.PS "8A"
TXA.E .DA #0
TXS .DA TXS.E+1-*
.DA #3,$$"TXS"
.DA #255,#2,$$"9A"
TXS.E .HS 00
.PS "TXS"
.DA #255
.PS "9A"
TXS.E .DA #0
TYA .DA TYA.E+1-*
.DA #3,$$"TYA"
.DA #255,#2,$$"98"
TYA.E .HS 00
.HS 0000
.PS "TYA"
.DA #255
.PS "98"
TYA.E .DA #0
.DA 0
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.6502.O
LOAD USR/SRC/BIN/ASM.6502.S
SAVE usr/src/bin/asm.6502.o
LOAD usr/src/bin/asm.6502.s
ASM

View File

@ -8,9 +8,9 @@ NEW
.DA T.REGISTERS
.DA T.OPCODES
*---------------------------------------
.INB USR/SRC/BIN/ASM.6502.O
.INB USR/SRC/BIN/ASM.6502.A
.INB usr/src/bin/asm.6502.o
.INB usr/src/bin/asm.6502.a
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.6502.S
SAVE usr/src/bin/asm.6502.s
ASM

View File

@ -2,34 +2,34 @@ NEW
AUTO 3,1
*---------------------------------------
T.ADDR.MODES .EQ *
.DA #4,$$"##aa"
.DA #2,$$"#a"
.DA #3,$$"(a)"
.DA #5,$$"(a),Y"
.DA #7,$$"(a,S),Y"
.DA #5,$$"(a,X)"
.DA #3,$$"[a]"
.DA #5,$$"[a],Y"
.DA #1,$$"a"
.DA #3,$$"a,S"
.DA #3,$$"a,X"
.DA #2,$$"aa"
.DA #4,$$"aa,X"
.DA #4,$$"aa,Y"
.DA #3,$$"aaa"
.DA #5,$$"aaa,X"
.DA #4,$$"(aa)"
.DA #6,$$"(aa,X)"
.DA #4,$$"[aa]"
.DA #3,$$"a,Y"
.DA #3,$$"a,b"
.HS 00
.PS "##aa"
.PS "#a"
.PS "(a)"
.PS "(a),Y"
.PS "(a,S),Y"
.PS "(a,X)"
.PS "[a]"
.PS "[a],Y"
.PS "a"
.PS "a,S"
.PS "a,X"
.PS "aa"
.PS "aa,X"
.PS "aa,Y"
.PS "aaa"
.PS "aaa,X"
.PS "[aa]"
.PS "(aa)"
.PS "(aa,X)"
.PS "a,Y"
.PS "a,b"
.DA #0
*---------------------------------------
T.REGISTERS .EQ *
.DA #1,$$"Y"
.DA #1,$$"S"
.DA #1,$$"X"
.HS 00
.PS "Y"
.PS "S"
.PS "X"
.DA #0
*---------------------------------------
MAN
SAVE usr/src/bin/asm.65816.a

File diff suppressed because it is too large Load Diff

View File

@ -8,8 +8,8 @@ NEW
.DA T.REGISTERS
.DA T.OPCODES
*---------------------------------------
.INB USR/SRC/BIN/ASM.65816.O
.INB USR/SRC/BIN/ASM.65816.A
.INB usr/src/bin/asm.65816.o
.INB usr/src/bin/asm.65816.a
*---------------------------------------
MAN
SAVE usr/src/bin/asm.65816.s

View File

@ -2,26 +2,26 @@ NEW
AUTO 3,1
*---------------------------------------
T.ADDR.MODES .EQ *
.DA #2,$$"#a"
.DA #3,$$"(a)"
.DA #5,$$"(a),Y"
.DA #5,$$"(a,X)"
.DA #1,$$"a"
.DA #3,$$"a,X"
.DA #2,$$"aa"
.DA #4,$$"aa,X"
.DA #4,$$"aa,Y"
.DA #4,$$"(aa)"
.DA #6,$$"(aa,X)"
.DA #3,$$"a,Y"
.HS 00
.PS "#a"
.PS "(a)"
.PS "(a),Y"
.PS "(a,X)"
.PS "a"
.PS "a,X"
.PS "aa"
.PS "aa,X"
.PS "aa,Y"
.PS "(aa)"
.PS "(aa,X)"
.PS "a,Y"
.DA #0
*---------------------------------------
T.REGISTERS .EQ *
.DA #1,$$"Y"
.DA #1,$$"X"
.HS 00
.PS "Y"
.PS "X"
.DA #0
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.65C02.A
LOAD USR/SRC/BIN/ASM.65C02.S
SAVE usr/src/bin/asm.65C02.a
LOAD usr/src/bin/asm.65C02.s
ASM

View File

@ -3,386 +3,566 @@ NEW
*---------------------------------------
T.OPCODES .EQ *
ADC .DA ADC.E+1-*
.DA #3,$$"ADC"
.DA #1,#3,$$"69a"
.DA #2,#3,$$"72a"
.DA #3,#3,$$"71a"
.DA #4,#3,$$"61a"
.DA #5,#3,$$"65a"
.DA #6,#3,$$"75a"
.DA #7,#4,$$"6Daa"
.DA #8,#4,$$"7Daa"
.DA #9,#4,$$"79aa"
ADC.E .HS 00
.PS "ADC"
.DA #1
.PS "69a"
.DA #2
.PS "72a"
.DA #3
.PS "71a"
.DA #4
.PS "61a"
.DA #5
.PS "65a"
.DA #6
.PS "75a"
.DA #7
.PS "6Daa"
.DA #8
.PS "7Daa"
.DA #9
.PS "79aa"
ADC.E .DA #0
AND .DA AND.E+1-*
.DA #3,$$"AND"
.DA #1,#3,$$"29a"
.DA #2,#3,$$"32a"
.DA #3,#3,$$"31a"
.DA #4,#3,$$"21a"
.DA #5,#3,$$"25a"
.DA #6,#3,$$"35a"
.DA #7,#4,$$"2Daa"
.DA #8,#4,$$"3Daa"
.DA #9,#4,$$"39aa"
AND.E .HS 00
.PS "AND"
.DA #1
.PS "29a"
.DA #2
.PS "32a"
.DA #3
.PS "31a"
.DA #4
.PS "21a"
.DA #5
.PS "25a"
.DA #6
.PS "35a"
.DA #7
.PS "2Daa"
.DA #8
.PS "3Daa"
.DA #9
.PS "39aa"
AND.E .DA #0
ASL .DA ASL.E+1-*
.DA #3,$$"ASL"
.DA #5,#3,$$"06a"
.DA #6,#3,$$"16a"
.DA #7,#4,$$"0Eaa"
.DA #8,#4,$$"1Eaa"
.DA #255,#2,$$"0A"
ASL.E .HS 00
.PS "ASL"
.DA #5
.PS "06a"
.DA #6
.PS "16a"
.DA #7
.PS "0Eaa"
.DA #8
.PS "1Eaa"
.DA #255
.PS "0A"
ASL.E .DA #0
BCC .DA BCC.E+1-*
.DA #3,$$"BCC"
.DA #7,#3,$$"90r"
BCC.E .HS 00
.PS "BCC"
.DA #7
.PS "90r"
BCC.E .DA #0
BCS .DA BCS.E+1-*
.DA #3,$$"BCS"
.DA #7,#3,$$"B0r"
BCS.E .HS 00
.PS "BCS"
.DA #7
.PS "B0r"
BCS.E .DA #0
BEQ .DA BEQ.E+1-*
.DA #3,$$"BEQ"
.DA #7,#3,$$"F0r"
BEQ.E .HS 00
.PS "BEQ"
.DA #7
.PS "F0r"
BEQ.E .DA #0
BIT .DA BIT.E+1-*
.DA #3,$$"BIT"
.DA #1,#3,$$"89a"
.DA #5,#3,$$"24a"
.DA #6,#3,$$"34a"
.DA #7,#4,$$"2Caa"
.DA #8,#4,$$"3Caa"
BIT.E .HS 00
.PS "BIT"
.DA #1
.PS "89a"
.DA #5
.PS "24a"
.DA #6
.PS "34a"
.DA #7
.PS "2Caa"
.DA #8
.PS "3Caa"
BIT.E .DA #0
BMI .DA BMI.E+1-*
.DA #3,$$"BMI"
.DA #7,#3,$$"30r"
BMI.E .HS 00
.PS "BMI"
.DA #7
.PS "30r"
BMI.E .DA #0
BNE .DA BNE.E+1-*
.DA #3,$$"BNE"
.DA #7,#3,$$"D0r"
BNE.E .HS 00
.PS "BNE"
.DA #7
.PS "D0r"
BNE.E .DA #0
BPL .DA BPL.E+1-*
.DA #3,$$"BPL"
.DA #7,#3,$$"10r"
BPL.E .HS 00
.PS "BPL"
.DA #7
.PS "10r"
BPL.E .DA #0
BRA .DA BRA.E+1-*
.DA #3,$$"BRA"
.DA #7,#3,$$"80r"
BRA.E .HS 00
.PS "BRA"
.DA #7
.PS "80r"
BRA.E .DA #0
BRK .DA BRK.E+1-*
.DA #3,$$"BRK"
.DA #255,#2,$$"00"
BRK.E .HS 00
.PS "BRK"
.DA #255
.PS "00"
BRK.E .DA #0
BVC .DA BVC.E+1-*
.DA #3,$$"BVC"
.DA #7,#3,$$"50r"
BVC.E .HS 00
.PS "BVC"
.DA #7
.PS "50r"
BVC.E .DA #0
BVS .DA BVS.E+1-*
.DA #3,$$"BVS"
.DA #7,#3,$$"70r"
BVS.E .HS 00
.PS "BVS"
.DA #7
.PS "70r"
BVS.E .DA #0
CLC .DA CLC.E+1-*
.DA #3,$$"CLC"
.DA #255,#2,$$"18"
CLC.E .HS 00
.PS "CLC"
.DA #255
.PS "18"
CLC.E .DA #0
CLD .DA CLD.E+1-*
.DA #3,$$"CLD"
.DA #255,#2,$$"D8"
CLD.E .HS 00
.PS "CLD"
.DA #255
.PS "D8"
CLD.E .DA #0
CLI .DA CLI.E+1-*
.DA #3,$$"CLI"
.DA #255,#2,$$"58"
CLI.E .HS 00
.PS "CLI"
.DA #255
.PS "58"
CLI.E .DA #0
CLV .DA CLV.E+1-*
.DA #3,$$"CLV"
.DA #255,#2,$$"B8"
CLV.E .HS 00
.PS "CLV"
.DA #255
.PS "B8"
CLV.E .DA #0
CMP .DA CMP.E+1-*
.DA #3,$$"CMP"
.DA #1,#3,$$"C9a"
.DA #2,#3,$$"D2a"
.DA #3,#3,$$"D1a"
.DA #4,#3,$$"C1a"
.DA #5,#3,$$"C5a"
.DA #6,#3,$$"D5a"
.DA #7,#4,$$"CDaa"
.DA #8,#4,$$"DDaa"
.DA #9,#4,$$"D9aa"
CMP.E .HS 00
.PS "CMP"
.DA #1
.PS "C9a"
.DA #2
.PS "D2a"
.DA #3
.PS "D1a"
.DA #4
.PS "C1a"
.DA #5
.PS "C5a"
.DA #6
.PS "D5a"
.DA #7
.PS "CDaa"
.DA #8
.PS "DDaa"
.DA #9
.PS "D9aa"
CMP.E .DA #0
CPX .DA CPX.E+1-*
.DA #3,$$"CPX"
.DA #1,#3,$$"E0a"
.DA #5,#3,$$"E4a"
.DA #7,#4,$$"ECaa"
CPX.E .HS 00
.PS "CPX"
.DA #1
.PS "E0a"
.DA #5
.PS "E4a"
.DA #7
.PS "ECaa"
CPX.E .DA #0
CPY .DA CPY.E+1-*
.DA #3,$$"CPY"
.DA #1,#3,$$"C0a"
.DA #5,#3,$$"C4a"
.DA #7,#4,$$"CCaa"
CPY.E .HS 00
.PS "CPY"
.DA #1
.PS "C0a"
.DA #5
.PS "C4a"
.DA #7
.PS "CCaa"
CPY.E .DA #0
DEC .DA DEC.E+1-*
.DA #3,$$"DEC"
.DA #5,#3,$$"C6a"
.DA #6,#3,$$"D6a"
.DA #7,#4,$$"CEaa"
.DA #8,#4,$$"DEaa"
.DA #255,#2,$$"3A"
DEC.E .HS 00
.PS "DEC"
.DA #5
.PS "C6a"
.DA #6
.PS "D6a"
.DA #7
.PS "CEaa"
.DA #8
.PS "DEaa"
.DA #255
.PS "3A"
DEC.E .DA #0
DEX .DA DEX.E+1-*
.DA #3,$$"DEX"
.DA #255,#2,$$"CA"
DEX.E .HS 00
.PS "DEX"
.DA #255
.PS "CA"
DEX.E .DA #0
DEY .DA DEY.E+1-*
.DA #3,$$"DEY"
.DA #255,#2,$$"88"
DEY.E .HS 00
.PS "DEY"
.DA #255
.PS "88"
DEY.E .DA #0
EOR .DA EOR.E+1-*
.DA #3,$$"EOR"
.DA #1,#3,$$"49a"
.DA #2,#3,$$"52a"
.DA #3,#3,$$"51a"
.DA #4,#3,$$"41a"
.DA #5,#3,$$"45a"
.DA #6,#3,$$"55a"
.DA #7,#4,$$"4Daa"
.DA #8,#4,$$"5Daa"
.DA #9,#4,$$"59aa"
EOR.E .HS 00
.PS "EOR"
.DA #1
.PS "49a"
.DA #2
.PS "52a"
.DA #3
.PS "51a"
.DA #4
.PS "41a"
.DA #5
.PS "45a"
.DA #6
.PS "55a"
.DA #7
.PS "4Daa"
.DA #8
.PS "5Daa"
.DA #9
.PS "59aa"
EOR.E .DA #0
INC .DA INC.E+1-*
.DA #3,$$"INC"
.DA #5,#3,$$"E6a"
.DA #6,#3,$$"F6a"
.DA #7,#4,$$"EEaa"
.DA #8,#4,$$"FEaa"
.DA #255,#2,$$"1A"
INC.E .HS 00
.PS "INC"
.DA #5
.PS "E6a"
.DA #6
.PS "F6a"
.DA #7
.PS "EEaa"
.DA #8
.PS "FEaa"
.DA #255
.PS "1A"
INC.E .DA #0
INX .DA INX.E+1-*
.DA #3,$$"INX"
.DA #255,#2,$$"E8"
INX.E .HS 00
.PS "INX"
.DA #255
.PS "E8"
INX.E .DA #0
INY .DA INY.E+1-*
.DA #3,$$"INY"
.DA #255,#2,$$"C8"
INY.E .HS 00
.PS "INY"
.DA #255
.PS "C8"
INY.E .DA #0
JMP .DA JMP.E+1-*
.DA #3,$$"JMP"
.DA #10,#4,$$"6Caa"
.DA #11,#4,$$"7Caa"
.DA #7,#4,$$"4Caa"
JMP.E .HS 00
.PS "JMP"
.DA #10
.PS "6Caa"
.DA #11
.PS "7Caa"
.DA #7
.PS "4Caa"
JMP.E .DA #0
JSR .DA JSR.E+1-*
.DA #3,$$"JSR"
.DA #7,#4,$$"20aa"
JSR.E .HS 00
.PS "JSR"
.DA #7
.PS "20aa"
JSR.E .DA #0
LDA .DA LDA.E+1-*
.DA #3,$$"LDA"
.DA #1,#3,$$"A9a"
.DA #2,#3,$$"B2a"
.DA #3,#3,$$"B1a"
.DA #4,#3,$$"A1a"
.DA #5,#3,$$"A5a"
.DA #6,#3,$$"B5a"
.DA #7,#4,$$"ADaa"
.DA #8,#4,$$"BDaa"
.DA #9,#4,$$"B9aa"
LDA.E .HS 00
.PS "LDA"
.DA #1
.PS "A9a"
.DA #2
.PS "B2a"
.DA #3
.PS "B1a"
.DA #4
.PS "A1a"
.DA #5
.PS "A5a"
.DA #6
.PS "B5a"
.DA #7
.PS "ADaa"
.DA #8
.PS "BDaa"
.DA #9
.PS "B9aa"
LDA.E .DA #0
LDX .DA LDX.E+1-*
.DA #3,$$"LDX"
.DA #1,#3,$$"A2a"
.DA #5,#3,$$"A6a"
.DA #12,#3,$$"B6a"
.DA #7,#4,$$"AEaa"
.DA #9,#4,$$"BEaa"
LDX.E .HS 00
.PS "LDX"
.DA #1
.PS "A2a"
.DA #5
.PS "A6a"
.DA #12
.PS "B6a"
.DA #7
.PS "AEaa"
.DA #9
.PS "BEaa"
LDX.E .DA #0
LDY .DA LDY.E+1-*
.DA #3,$$"LDY"
.DA #1,#3,$$"A0a"
.DA #5,#3,$$"A4a"
.DA #6,#3,$$"B4a"
.DA #7,#4,$$"ACaa"
.DA #8,#4,$$"BCaa"
LDY.E .HS 00
.PS "LDY"
.DA #1
.PS "A0a"
.DA #5
.PS "A4a"
.DA #6
.PS "B4a"
.DA #7
.PS "ACaa"
.DA #8
.PS "BCaa"
LDY.E .DA #0
LSR .DA LSR.E+1-*
.DA #3,$$"LSR"
.DA #5,#3,$$"46a"
.DA #6,#3,$$"56a"
.DA #7,#4,$$"4Eaa"
.DA #8,#4,$$"5Eaa"
.DA #255,#2,$$"4A"
LSR.E .HS 00
.PS "LSR"
.DA #5
.PS "46a"
.DA #6
.PS "56a"
.DA #7
.PS "4Eaa"
.DA #8
.PS "5Eaa"
.DA #255
.PS "4A"
LSR.E .DA #0
NOP .DA NOP.E+1-*
.DA #3,$$"NOP"
.DA #255,#2,$$"EA"
NOP.E .HS 00
.PS "NOP"
.DA #255
.PS "EA"
NOP.E .DA #0
ORA .DA ORA.E+1-*
.DA #3,$$"ORA"
.DA #1,#3,$$"09a"
.DA #2,#3,$$"12a"
.DA #3,#3,$$"11a"
.DA #4,#3,$$"01a"
.DA #5,#3,$$"05a"
.DA #6,#3,$$"15a"
.DA #7,#4,$$"0Daa"
.DA #8,#4,$$"1Daa"
.DA #9,#4,$$"19aa"
ORA.E .HS 00
.PS "ORA"
.DA #1
.PS "09a"
.DA #2
.PS "12a"
.DA #3
.PS "11a"
.DA #4
.PS "01a"
.DA #5
.PS "05a"
.DA #6
.PS "15a"
.DA #7
.PS "0Daa"
.DA #8
.PS "1Daa"
.DA #9
.PS "19aa"
ORA.E .DA #0
PHA .DA PHA.E+1-*
.DA #3,$$"PHA"
.DA #255,#2,$$"48"
PHA.E .HS 00
.PS "PHA"
.DA #255
.PS "48"
PHA.E .DA #0
PHP .DA PHP.E+1-*
.DA #3,$$"PHP"
.DA #255,#2,$$"08"
PHP.E .HS 00
.PS "PHP"
.DA #255
.PS "08"
PHP.E .DA #0
PHX .DA PHX.E+1-*
.DA #3,$$"PHX"
.DA #255,#2,$$"DA"
PHX.E .HS 00
.PS "PHX"
.DA #255
.PS "DA"
PHX.E .DA #0
PHY .DA PHY.E+1-*
.DA #3,$$"PHY"
.DA #255,#2,$$"5A"
PHY.E .HS 00
.PS "PHY"
.DA #255
.PS "5A"
PHY.E .DA #0
PLA .DA PLA.E+1-*
.DA #3,$$"PLA"
.DA #255,#2,$$"68"
PLA.E .HS 00
.PS "PLA"
.DA #255
.PS "68"
PLA.E .DA #0
PLP .DA PLP.E+1-*
.DA #3,$$"PLP"
.DA #255,#2,$$"28"
PLP.E .HS 00
.PS "PLP"
.DA #255
.PS "28"
PLP.E .DA #0
PLX .DA PLX.E+1-*
.DA #3,$$"PLX"
.DA #255,#2,$$"FA"
PLX.E .HS 00
.PS "PLX"
.DA #255
.PS "FA"
PLX.E .DA #0
PLY .DA PLY.E+1-*
.DA #3,$$"PLY"
.DA #255,#2,$$"7A"
PLY.E .HS 00
.PS "PLY"
.DA #255
.PS "7A"
PLY.E .DA #0
ROL .DA ROL.E+1-*
.DA #3,$$"ROL"
.DA #5,#3,$$"26a"
.DA #6,#3,$$"36a"
.DA #7,#4,$$"2Eaa"
.DA #8,#4,$$"3Eaa"
.DA #255,#2,$$"2A"
ROL.E .HS 00
.PS "ROL"
.DA #5
.PS "26a"
.DA #6
.PS "36a"
.DA #7
.PS "2Eaa"
.DA #8
.PS "3Eaa"
.DA #255
.PS "2A"
ROL.E .DA #0
ROR .DA ROR.E+1-*
.DA #3,$$"ROR"
.DA #5,#3,$$"66a"
.DA #6,#3,$$"76a"
.DA #7,#4,$$"6Eaa"
.DA #8,#4,$$"7Eaa"
.DA #255,#2,$$"6A"
ROR.E .HS 00
.PS "ROR"
.DA #5
.PS "66a"
.DA #6
.PS "76a"
.DA #7
.PS "6Eaa"
.DA #8
.PS "7Eaa"
.DA #255
.PS "6A"
ROR.E .DA #0
RTI .DA RTI.E+1-*
.DA #3,$$"RTI"
.DA #255,#2,$$"40"
RTI.E .HS 00
.PS "RTI"
.DA #255
.PS "40"
RTI.E .DA #0
RTS .DA RTS.E+1-*
.DA #3,$$"RTS"
.DA #255,#2,$$"60"
RTS.E .HS 00
.PS "RTS"
.DA #255
.PS "60"
RTS.E .DA #0
SBC .DA SBC.E+1-*
.DA #3,$$"SBC"
.DA #1,#3,$$"E9a"
.DA #2,#3,$$"F2a"
.DA #3,#3,$$"F1a"
.DA #4,#3,$$"E1a"
.DA #5,#3,$$"E5a"
.DA #6,#3,$$"F5a"
.DA #7,#4,$$"EDaa"
.DA #8,#4,$$"FDaa"
.DA #9,#4,$$"F9aa"
SBC.E .HS 00
.PS "SBC"
.DA #1
.PS "E9a"
.DA #2
.PS "F2a"
.DA #3
.PS "F1a"
.DA #4
.PS "E1a"
.DA #5
.PS "E5a"
.DA #6
.PS "F5a"
.DA #7
.PS "EDaa"
.DA #8
.PS "FDaa"
.DA #9
.PS "F9aa"
SBC.E .DA #0
SEC .DA SEC.E+1-*
.DA #3,$$"SEC"
.DA #255,#2,$$"38"
SEC.E .HS 00
.PS "SEC"
.DA #255
.PS "38"
SEC.E .DA #0
SED .DA SED.E+1-*
.DA #3,$$"SED"
.DA #255,#2,$$"F8"
SED.E .HS 00
.PS "SED"
.DA #255
.PS "F8"
SED.E .DA #0
SEI .DA SEI.E+1-*
.DA #3,$$"SEI"
.DA #255,#2,$$"78"
SEI.E .HS 00
.PS "SEI"
.DA #255
.PS "78"
SEI.E .DA #0
STA .DA STA.E+1-*
.DA #3,$$"STA"
.DA #2,#3,$$"92a"
.DA #3,#3,$$"91a"
.DA #4,#3,$$"81a"
.DA #5,#3,$$"85a"
.DA #6,#3,$$"95a"
.DA #7,#4,$$"8Daa"
.DA #8,#4,$$"9Daa"
.DA #9,#4,$$"99aa"
STA.E .HS 00
.PS "STA"
.DA #2
.PS "92a"
.DA #3
.PS "91a"
.DA #4
.PS "81a"
.DA #5
.PS "85a"
.DA #6
.PS "95a"
.DA #7
.PS "8Daa"
.DA #8
.PS "9Daa"
.DA #9
.PS "99aa"
STA.E .DA #0
STP .DA STP.E+1-*
.DA #3,$$"STP"
.DA #255,#2,$$"DB"
STP.E .HS 00
.PS "STP"
.DA #255
.PS "DB"
STP.E .DA #0
STX .DA STX.E+1-*
.DA #3,$$"STX"
.DA #5,#3,$$"86a"
.DA #12,#3,$$"96a"
.DA #7,#4,$$"8Eaa"
STX.E .HS 00
.PS "STX"
.DA #5
.PS "86a"
.DA #12
.PS "96a"
.DA #7
.PS "8Eaa"
STX.E .DA #0
STY .DA STY.E+1-*
.DA #3,$$"STY"
.DA #5,#3,$$"84a"
.DA #6,#3,$$"94a"
.DA #7,#4,$$"8Caa"
STY.E .HS 00
.PS "STY"
.DA #5
.PS "84a"
.DA #6
.PS "94a"
.DA #7
.PS "8Caa"
STY.E .DA #0
STZ .DA STZ.E+1-*
.DA #3,$$"STZ"
.DA #5,#3,$$"64a"
.DA #6,#3,$$"74a"
.DA #7,#4,$$"9Caa"
.DA #8,#4,$$"9Eaa"
STZ.E .HS 00
.PS "STZ"
.DA #5
.PS "64a"
.DA #6
.PS "74a"
.DA #7
.PS "9Caa"
.DA #8
.PS "9Eaa"
STZ.E .DA #0
TAX .DA TAX.E+1-*
.DA #3,$$"TAX"
.DA #255,#2,$$"AA"
TAX.E .HS 00
.PS "TAX"
.DA #255
.PS "AA"
TAX.E .DA #0
TAY .DA TAY.E+1-*
.DA #3,$$"TAY"
.DA #255,#2,$$"A8"
TAY.E .HS 00
.PS "TAY"
.DA #255
.PS "A8"
TAY.E .DA #0
TRB .DA TRB.E+1-*
.DA #3,$$"TRB"
.DA #5,#3,$$"14a"
.DA #7,#4,$$"1Caa"
TRB.E .HS 00
.PS "TRB"
.DA #5
.PS "14a"
.DA #7
.PS "1Caa"
TRB.E .DA #0
TSB .DA TSB.E+1-*
.DA #3,$$"TSB"
.DA #5,#3,$$"04a"
.DA #7,#4,$$"0Caa"
TSB.E .HS 00
.PS "TSB"
.DA #5
.PS "04a"
.DA #7
.PS "0Caa"
TSB.E .DA #0
TSX .DA TSX.E+1-*
.DA #3,$$"TSX"
.DA #255,#2,$$"BA"
TSX.E .HS 00
.PS "TSX"
.DA #255
.PS "BA"
TSX.E .DA #0
TXA .DA TXA.E+1-*
.DA #3,$$"TXA"
.DA #255,#2,$$"8A"
TXA.E .HS 00
.PS "TXA"
.DA #255
.PS "8A"
TXA.E .DA #0
TXS .DA TXS.E+1-*
.DA #3,$$"TXS"
.DA #255,#2,$$"9A"
TXS.E .HS 00
.PS "TXS"
.DA #255
.PS "9A"
TXS.E .DA #0
TYA .DA TYA.E+1-*
.DA #3,$$"TYA"
.DA #255,#2,$$"98"
TYA.E .HS 00
.PS "TYA"
.DA #255
.PS "98"
TYA.E .DA #0
WAI .DA WAI.E+1-*
.DA #3,$$"WAI"
.DA #255,#2,$$"CB"
WAI.E .HS 00
.HS 0000
.PS "WAI"
.DA #255
.PS "CB"
WAI.E .DA #0
.DA 0
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.65C02.O
LOAD USR/SRC/BIN/ASM.65C02.S
SAVE usr/src/bin/asm.65C02.o
LOAD usr/src/bin/asm.65C02.s
ASM

View File

@ -8,9 +8,9 @@ NEW
.DA T.REGISTERS
.DA T.OPCODES
*---------------------------------------
.INB USR/SRC/BIN/ASM.65C02.O
.INB USR/SRC/BIN/ASM.65C02.A
.INB usr/src/bin/asm.65C02.o
.INB usr/src/bin/asm.65C02.a
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.65C02.S
SAVE usr/src/bin/asm.65C02.s
ASM

View File

@ -2,27 +2,27 @@ NEW
AUTO 3,1
*---------------------------------------
T.ADDR.MODES .EQ *
.DA #2,$$"#a"
.DA #3,$$"(a)"
.DA #5,$$"(a),Y"
.DA #5,$$"(a,X)"
.DA #1,$$"a"
.DA #3,$$"a,X"
.DA #2,$$"aa"
.DA #4,$$"aa,X"
.DA #4,$$"aa,Y"
.DA #4,$$"a,bb"
.DA #4,$$"(aa)"
.DA #6,$$"(aa,x)"
.DA #3,$$"a,Y"
.HS 00
.PS "#a"
.PS "(a)"
.PS "(a),Y"
.PS "(a,X)"
.PS "a"
.PS "a,X"
.PS "aa"
.PS "aa,X"
.PS "aa,Y"
.PS "a,bb"
.PS "(aa)"
.PS "(aa,x)"
.PS "a,Y"
.DA #0
*---------------------------------------
T.REGISTERS .EQ *
.DA #1,$$"Y"
.DA #1,$$"X"
.HS 00
.PS "Y"
.PS "X"
.DA #0
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.65R02.A
LOAD USR/SRC/BIN/ASM.65R02.S
SAVE usr/src/bin/asm.65R02.a
LOAD usr/src/bin/asm.65R02.s
ASM

File diff suppressed because it is too large Load Diff

View File

@ -8,9 +8,9 @@ NEW
.DA T.REGISTERS
.DA T.OPCODES
*---------------------------------------
.INB USR/SRC/BIN/ASM.65R02.O
.INB USR/SRC/BIN/ASM.65R02.A
.INB usr/src/bin/asm.65R02.o
.INB usr/src/bin/asm.65R02.a
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.65R02.S
SAVE usr/src/bin/asm.65R02.s
ASM

167
BIN/ASM.S.CORE.txt Normal file
View File

@ -0,0 +1,167 @@
NEW
AUTO 3,1
*---------------------------------------
CORE.Pass2Init >STZ.G MAC.StkPtr
>STZ.G SYM.BufPtr
ldy #ASM.TotalLines
.1 sta (pData),y
iny
cpy #ASM.TotalLines+8
bcc .1
>INC.G ASM.PASS
*---------------------------------------
CORE.Pass1Init lda #$ff
>STA.G ASM.LI.ON
iny #ASM.LI.CON
sta (pData),y
iny #ASM.LI.MON
sta (pData),y
iny #ASM.LI.XON
sta (pData),y
lda #0
ldy #ASM.PC
.1 sta (pData),y
iny
cpy #ASM.PC.DU+4
bcc .1
jsr OUT.PrintPass
bcs .9
jsr OUT.PrintCR
bcs .9
>LDYA.G SRC.pFILENAME
jmp FIO.OpenFile
.9 rts
*---------------------------------------
CORE.ASMFile >SLEEP
ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .9
tay
bne .1
>LIBC GetChar
bcs .9 I/O err
cmp #3 Ctrl-C
beq .9
cmp #19 Ctrl-S
bne .1
>LDA.G bPause
eor #$ff
sta (pData),y
bmi CORE.ASMFile
bpl .2
.1 >LDA.G bPause
bmi CORE.ASMFile
*---------------------------------------
.2 >LDYA ZPLineBuf
>STYA ZPLinePtr
.3 >LDA.G MAC.StkPtr
beq .5
jsr MAC.ReadLine
bcs .9
lda (ZPLineBuf)
bne .7
jsr MAC.Pop
bcc CORE.ASMFile
rts
*---------------------------------------
.5 jsr FIO.ReadLine
bcc .6
cmp #MLI.E.EOF End Of File?
sec
bne .9
jsr FIO.FileClose
bcs .9
>LDA.G SRC.Depth end of root file ?
bne CORE.ASMFile no continue back to previous file
jmp SYM.StoreGlobal Flush any pending SYM
*---------------------------------------
.6 jsr OUT.PrintBufReset
ldy #ASM.TotalLines
jsr CORE.IncDWordY
lda (ZPLineBuf)
beq .8
cmp #'*' Comment?
beq .8
cmp #';' Comment?
beq .8
ldy #ASM.CodeLines
jsr CORE.IncDWordY
*---------------------------------------
.7 jsr SRC.ParseLine
bcs .9
.8 jsr OUT.PrintLine
bcs .9
jmp CORE.ASMFile
.9 rts
*---------------------------------------
CORE.IncDWordY lda (pData),y
inc
sta (pData),y
bne .8
iny
lda (pData),y
inc
sta (pData),y
bne .8
iny
lda (pData),y
inc
sta (pData),y
bne .8
iny
lda (pData),y
inc
sta (pData),y
.8 rts
*---------------------------------------
MAN
SAVE usr/src/bin/asm.s.core
LOAD usr/src/bin/asm.s
ASM

View File

@ -1,19 +1,6 @@
NEW
AUTO 3,1
*---------------------------------------
DIR.Reset lda #$ff
>STA.G ASM.LI.ON
iny #ASM.LI.CON
sta (pData),y
iny #ASM.LI.MON
sta (pData),y
iny #ASM.LI.XON
sta (pData),y
>STA.G MAC.StkPtr
rts
*---------------------------------------
DIR.AC clc
rts
*---------------------------------------
@ -24,7 +11,7 @@ DIR.AS clc
lda #0
ror
sta DIR.Byte Save b7 of last char in string
jsr SRC.GetNextChar
jsr SRC.GetNextCharNB
bcs .9
cmp #'-'
@ -79,10 +66,11 @@ DIR.AS.RTS rts
*---------------------------------------
DIR.AZ jsr DIR.AS
bcs DIR.AS.RTS
lda #0
jmp OUT.EmitByte
*---------------------------------------
DIR.PS jsr SRC.GetNextChar
DIR.PS jsr SRC.GetNextCharNB
bcs .9
sta DIR.Word Save delimiter....
@ -122,7 +110,7 @@ DIR.PS jsr SRC.GetNextChar
sec
rts
*---------------------------------------
DIR.CS jsr SRC.GetNextChar
DIR.CS jsr SRC.GetNextCharNB
bcs .9
stz DIR.Byte
@ -175,6 +163,7 @@ DIR.CZ.RTS rts
*---------------------------------------
DIR.CZ jsr DIR.CS
bcs DIR.CZ.RTS
lda #0
jmp OUT.EmitByte
*---------------------------------------
@ -223,6 +212,7 @@ DIR.BS jsr SRC.GetNextCharNB
.1 inc DIR.Word
bne .2
inc DIR.Word+1
beq .8
@ -281,29 +271,26 @@ DIR.DA jsr SRC.GetNextCharNB
rts
*---------------------------------------
DIR.DO >LDA.G ASM.DO.StackPtr
tay
inc
beq .1 empty stack
cmp #DO.MAXDEPTH
bcs .98
tya
beq .1
* clc
adc #ASM.DO.Stack-1
tay
lda (pData),y Previous DO is false?
lda (pData),y Previous DO = TRUE ?
bne .1
>INC.G ASM.DO.StackPtr yes,stack FALSE
>INC.G ASM.DO.StackPtr FALSE, stack another FALSE
* clc
adc #ASM.DO.Stack-1
tay
lda #0
bra .8
*---------------------------------------
.1 jsr SRC.GetNextCharNB
bcs .99
@ -321,6 +308,7 @@ DIR.DO >LDA.G ASM.DO.StackPtr
ora SRC.ACC+2
ora SRC.ACC+3
beq .8
lda #$ff
.8 sta (pData),y
@ -333,9 +321,9 @@ DIR.DO >LDA.G ASM.DO.StackPtr
.99 rts
*---------------------------------------
DIR.EL >LDA.G ASM.DO.StackPtr
tax
beq .9
tax
dec
beq .1 no previous DO context
@ -360,6 +348,15 @@ DIR.EL >LDA.G ASM.DO.StackPtr
sec
rts
*---------------------------------------
DIR.FI >LDA.G ASM.DO.StackPtr
beq DIR.EP.ILLEGAL
dec
sta (pData),y
clc
rts
*---------------------------------------
DIR.EM lda #E.MACRO.INV.DEF
sec
rts
@ -378,6 +375,7 @@ DIR.PH >LDA.G ASM.PH.ON
lda #$80
sta (pData),y
ldy #ASM.PC.PH
jsr DIR.SavePC
@ -397,6 +395,7 @@ DIR.EP >LDA.G ASM.PH.ON
lda #0
sta (pData),y
ldy #ASM.PC.PH
jmp DIR.RestorePC
.9
@ -409,153 +408,129 @@ DIR.SE sec
*---------------------------------------
DIR.EQ clc
jsr EXP.ResetAcc keep F
lda (ZPSymbolBuf)
bcc .1
ora #SYMG.F.RW
.1 ora #SYMG.F.EQU
sta (ZPSymbolBuf)
sta SRC.ACC.F
lda #$ff
>STA.G OUT.bEquate
>LDA.G SYM.BufPtr
beq DIR.EP.ILLEGAL not in global symbol context
eor #SYMG
beq .1
bcs DIR.EP.ILLEGAL .SE not allowed in local/private
bcc .10 .EQ in local, skip F update
.1 ror A = 0 : CS = SYMG.F.RW
ora #SYMG.F.EQU
sta SRC.ACC.F
.10 jsr SRC.GetNextCharNB
bcs .9
jsr EXP.ResetAccV keep F
jsr SRC.GetNextCharNB
bcs .98
jsr EXP.Eval
bcs DIR.EP.RTS
>LDA.G SYM.BufPtr
cmp #SYMG
beq .12
bne .4
ldy #SYMG-1
tay
ldx #3 we are in local/private
.11 lda SRC.ACC,x update value
dey
sta (ZPSymbolBuf),y
dex
bpl .11
clc
rts
.12 ldy #SYMG-1
.13 lda SRC.ACC.F,y
.2 lda SRC.ACC.F,y
sta (ZPSymbolBuf),y
dey
bpl .13
>LDA.G ASM.PASS
bne .2
>LDA.G ASM.PASS
bne .3
jmp SYM.StoreGlobal
.3 lda (ZPSymbolBuf)
and #SYMG.F.FWREF
beq .8
.2 jmp SYM.UpdateGlobal
.9 lda #E.SYNTAX.ERROR
jmp SYM.UpdateGlobal
.4 jsr SYM.Acc2Offset
bcs .99
lda #$FF
>STA.G SYM.bDirty
.8 clc
rts
.98 lda #E.SYNTAX.ERROR
sec
rts
*---------------------------------------
DIR.FI >LDA.G ASM.DO.StackPtr
beq DIR.EP.ILLEGAL
dec
sta (pData),y
clc
rts
.99 rts
*---------------------------------------
DIR.HS clc
.HS B0 BCS
DIR.HX sec
ror DIR.Word
ror DIR.Byte
stz DIR.Word
jsr SRC.GetNextCharNB
bcs .99
jsr SRC.IsDigit16
bcs .99
.1 sta DIR.Byte
jsr SRC.GetNextChar
bcc .2
jmp OUT.EmitByte
.2 jsr SRC.IsDigit16
bcc .3
cmp #','
beq .22
cmp #'.'
bne .99
.22 lda DIR.Byte
jsr OUT.EmitByte
bcc .5
rts
*---------------------------------------
.3 bit DIR.Word
bmi .30
asl DIR.Byte
asl DIR.Byte
asl DIR.Byte
asl DIR.Byte
bra .4
.30 asl
asl
asl
asl
.4 ora DIR.Byte
jsr OUT.EmitByte
bcs .9
.10 jsr SRC.IsDigit16
bcs .9
.1 jsr .80
bcs .99
jsr SRC.GetNextChar
bcs .8
cmp #C.SPACE
beq .8
jsr SRC.IsDigit16
bcc .1
cmp #','
beq .5
beq .2
cmp #'.'
bne .99
.5 jsr SRC.GetNextChar
bcs .99
.2 jsr SRC.GetNextChar
bcc .10
jsr SRC.IsDigit16
bcc .1
.99 lda #E.SYNTAX.ERROR
.9 lda #E.SYNTAX.ERROR
sec
.9 rts
.99 rts
.8 clc
.8 lda #0
*---------------------------------------
.80 bit DIR.Word
bmi .81
sta DIR.Word+1
dec DIR.Word
clc
rts
.81 bit DIR.Byte
bmi .82
asl DIR.Word+1
asl DIR.Word+1
asl DIR.Word+1
asl DIR.Word+1
bra .88
.82 asl
asl
asl
asl
.88 ora DIR.Word+1
stz DIR.Word
jmp OUT.EmitByte
*---------------------------------------
DIR.IN jsr SRC.GetNextCharNB
bcs .9
@ -571,7 +546,7 @@ DIR.LI jsr SRC.GetNextChar
bcs .9
>LDYA L.T.LI
jsr SRC.GetKeyword
jsr SRC.Lookup
bcs .9
jsr .7
@ -622,32 +597,30 @@ DIR.LI.XON ldy #ASM.LI.XON
DIR.LI.XOFF ldy #ASM.LI.XON
clc
DIR.LI.APPLY lda #0
ror
sta (pData),y
rts
*---------------------------------------
DIR.MA >LDA.G ASM.MA.ON
DIR.MA >LDA.G MAC.bLearning
bmi .9
>LDA.G ASM.PASS If Pass#2, ignore
>LDA.G ASM.PASS If Pass#2, ignore
bne .8
jsr SRC.GetNextCharNB
beq DIR.OP.SYNERR
>PUSHB.G MAC.hList
>PUSHW ZPLinePtr
>PUSHWI 0 ScopeID
>SYSCALL SListNewKey
jsr MAC.New
bcs .99
>STYA.G MAC.ID
.8 lda #$ff
>STA.G ASM.MA.ON
>STA.G MAC.bLearning
clc
rts
.9 lda #E.MACRO.INV.DEF
@ -672,15 +645,14 @@ DIR.OR jsr SRC.GetNextCharNB
jsr EXP.Eval
bcs .9
ldx #0
ldy #ASM.PC
ldx #3
ldy #ASM.PC+3
.1 lda SRC.ACC,x
sta (pData),y
iny
inx
cpx #4
bne .1
dey
dex
bpl .1
>LDA.G ASM.DU.ON
bmi .8
@ -694,7 +666,10 @@ DIR.OR jsr SRC.GetNextCharNB
iny
sta (pData),y
.8 clc
.8
* clc
.9 rts
*---------------------------------------
DIR.EN
@ -712,88 +687,99 @@ DIR.TA.RTS rts
*---------------------------------------
DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
beq DIR.TA.8
>LDA.G ArgDstFile
beq .1
>SYSCALL ArgV
bra .2
>LDYA.G DST.pFILENAME
cmp #0
bne .2
.1 jsr SRC.GetNextCharNB
bcs DIR.OP.SYNERR
>LDYA ZPLinePtr
.2 >SYSCALL StrDup
bcs DIR.TA.RTS
>STYA ZPPtr1
stx ZPPtr2
.2 >STYA R1
lda #S.FI.T.BIN
sta ZPPtr2+1
sta R2+1
ldy #$ff
.3 iny
lda (ZPPtr1),y
beq .7
cmp #','
bne .3
lda #0
sta (ZPPtr1),y
lda #'/'
cmp (R1)
beq .3
sta (ZPTmpBuf)
iny
lda (ZPPtr1),y
cmp #'T'
beq .4
bra .3
.30 lda #E.SYNTAX.ERROR
bra .9
.30 inc R1
bne .3
inc R1+1
.3 iny
lda (R1)
sta (ZPTmpBuf),y
beq .7
.4 ldx #0
.5 iny
lda (ZPPtr1),y
cmp DIR.SYS,x including \0
eor #','
bne .30
inx
cpx #4
bne .5
sta (ZPTmpBuf),y
inc R1
bne .40
inc R1+1
.40 lda (R1)
cmp #'T'
bne .98
inc R1
bne .4
inc R1+1
.4 ldy #$ff
.6 iny
lda (R1),y
cmp DIR.SYS,y including \0
bne .98
iny
cpy #4
bcc .6
lda #S.FI.T.SYS
sta ZPPtr2+1
sta R2+1
.7 >PUSHW ZPPtr1
>PUSHWZ Allocate
>SYSCALL RealPath
bcs .9
txa
>STA.G DST.hFILENAME
>SYSCALL GetMemPtr
>PUSHYA
.7 >SS
>PUSHW ZPTmpBuf
>PUSHBI O.WRONLY+O.CREATE
>PUSHB ZPPtr2+1 Type
>PUSHB R2+1 Type
>PUSHW.G DST.AUXTYPE
>SYSCALL FOpen
bcs .9
>LIBC FOpen
>SR
bcs .99
>STA.G DST.hREFNUM
>STYA.G DST.pFILE
clc
.9 php
pha
lda ZPPtr2
>SYSCALL FreeMem
pla
plp
* clc
rts
.98 lda #E.SYNTAX.ERROR
sec
.99 rts
*---------------------------------------
DIR.SavePC phy
plx
DIR.SavePC tya
tax
ldy #ASM.PC+3
.1 lda (pData),y
@ -802,8 +788,9 @@ DIR.SavePC phy
cpy #ASM.PC-1
bne .1
phx
ply
txa
tay
ldx #3
.2 pla
@ -824,6 +811,7 @@ DIR.RestorePC ldx #3
bpl .1
ldy #ASM.PC+3
ldx #3
.2 pla

View File

@ -5,7 +5,11 @@ NEW
* # : 8b,Byte 1
* / : 8b,Byte 2
* ^ : 8b,Byte 3
* ## : 16b,Byte 1,2
* // : 16b,Byte 2,3
* ^^ : 16b,Byte 3,4
* < : 24b,Byte 1,2,3
* << : 24b,Byte 2,3,4
* > : 32b
*---------------------------------------
* Num Format : 0-9 -> decimal
@ -19,8 +23,11 @@ EXP.Eval.Missing
sec
rts
EXP.Eval.SYN lda #E.SYNTAX.ERROR
sec
rts
EXP.Eval >STZ.G EXP.Modifier
>STA.G EXP.Prefix
>STA.G EXP.Operator
jsr SRC.GetChar
@ -28,15 +35,13 @@ EXP.Eval >STZ.G EXP.Modifier
jsr SRC.IsMODReserved
bcs EXP.Eval.Next
jsr SRC.MODLookup
bcs EXP.Eval.SYN
txa
>STA.G EXP.Modifier
lda #'#'
>STA.G EXP.Prefix
EXP.Eval.Next0 jsr SRC.GetNextChar
EXP.Eval.Next stz SRC.ACC
stz SRC.ACC+1
stz SRC.ACC+2
@ -48,18 +53,18 @@ EXP.Eval.Next stz SRC.ACC
cmp #'.' Local Label?
bne .12
>LDA.G MAC.StkPtr
bne .9 illegal INSIDE macro
jsr EXP.GetLocal
bcs .99
bra .13
jmp EXP.EvalOperator
.12 cmp #':'
.12 cmp #':' Private Label ?
bne .14
>LDA.G MAC.StkPtr
beq .9 illegal OUTSIDE macro
.13 jsr EXP.GetLocal
jsr EXP.GetPrivate
bcs .99
jmp EXP.EvalOperator
@ -81,13 +86,15 @@ EXP.Eval.Next stz SRC.ACC
jsr SRC.GetDecimal
bcs EXP.EvalExitRTS
jmp EXP.EvalOperator
jmp EXP.EvalOperator
*---------------------------------------
.1 cmp #'$' Hex?
bne .2
jsr SRC.GetHex
bcs EXP.EvalExitRTS
jmp EXP.EvalOperator
.2 cmp #'%' binary?
@ -95,6 +102,7 @@ EXP.Eval.Next stz SRC.ACC
jsr SRC.GetBinary
bcs EXP.EvalExitRTS
jmp EXP.EvalOperator
.3 cmp #'&' octal?
@ -102,6 +110,7 @@ EXP.Eval.Next stz SRC.ACC
jsr SRC.GetOctal
bcs EXP.EvalExitRTS
bra EXP.EvalOperator
.4 cmp #'''
@ -109,6 +118,7 @@ EXP.Eval.Next stz SRC.ACC
jsr SRC.GetNextChar
bcs EXP.EvalExitSYN
jsr EXP.SetAccA
jsr SRC.GetNextChar
bcs EXP.EvalOperator
@ -150,18 +160,18 @@ EXP.Eval.Next stz SRC.ACC
jsr SYM.LookupGlobal
bcc EXP.EvalOperator
EXP.EvalExitRTS rts
EXP.EvalExitOK >LDA.G EXP.Modifier
beq .1
asl
tax
lda #SYMG.F.FWREF Reset FW flag because of IMM modifier
trb SRC.ACC.F
jmp (J.EXP.MOD-2,x)
jmp (J.MODS-2,x)
.1 clc
rts
@ -183,9 +193,9 @@ EXP.EvalOperator
lda SRC.ACC.F
ora SRC.ARG.F
and #SYMG.F.FWREF
and #SYMG.F.EQU+SYMG.F.FWREF
tsb SRC.ACC.F
jsr EXP.Compute ARG op ACC -> ACC
bcc .7
@ -211,27 +221,33 @@ EXP.EvalOperator
txa
>STA.G EXP.Operator
ldx #3
jsr SRC.GetNextChar
bcs EXP.EvalExitSYN
.8 lda SRC.ACC,x
sta SRC.ARG,x
ldx #4
.8 lda SRC.ACC.F,x
sta SRC.ARG.F,x
dex
bpl .8
lda SRC.ACC.F
sta SRC.ARG.F
jmp EXP.Eval.Next0
jmp EXP.Eval.Next
*---------------------------------------
EXP.GetLocal jsr SRC.GetNextChar
EXP.GetPrivate lda ZPMacroCtxID
sta R3+1
bra EXP.GetLocal1
EXP.GetLocal stz R3+1
EXP.GetLocal1 jsr SRC.GetNextChar
bcs .9
jsr SRC.GetDecimal8
bcs EXP.EvalExitSYN
tax
sta R3
jsr SYM.LookupLocalX
jsr SYM.LookupLocal
bcc .8
>LDA.G ASM.PASS pass#2?
@ -267,7 +283,30 @@ EXP.MOD.8.1 lda #1
clc
rts
EXP.MOD.24 lda #3
EXP.MOD.16.3 lda SRC.ACC+2
sta SRC.ACC
lda SRC.ACC+3
sta SRC.ACC
bra EXP.MOD.16.1
EXP.MOD.16.2 lda SRC.ACC+1
sta SRC.ACC
lda SRC.ACC+2
sta SRC.ACC+1
EXP.MOD.16.1 lda #2
sta SRC.ACC.SIZE
clc
rts
EXP.MOD.24.2 lda SRC.ACC+1
sta SRC.ACC
lda SRC.ACC+2
sta SRC.ACC+1
lda SRC.ACC+3
sta SRC.ACC+2
EXP.MOD.24.1 lda #3
sta SRC.ACC.SIZE
clc
rts
@ -376,7 +415,18 @@ EXP.OP.ADD ldx #0 ARG-ACC->ACC
lda #E.VAL.TOO.BIG
.8 rts
*---------------------------------------
EXP.OP.SUB jsr EXP.SUB
EXP.OP.SUB
.DO EXPDBG=1
>SS
>PUSHW L.MSG.EXPDBG
>PUSHL SRC.ARG
>PUSHL SRC.ACC
>PUSHBI 8
>LIBC PrintF
>SR
>DEBUG
.FIN
jsr EXP.SUB
bcs .8
lda #E.VAL.TOO.BIG
@ -416,7 +466,7 @@ EXP.OP.DIV >PUSHL SRC.ARG
*---------------------------------------
EXP.ResetAcc stz SRC.ACC.F
EXP.ResetAccV lda #2
lda #2
sta SRC.ACC.SIZE
stz SRC.ACC
@ -435,16 +485,18 @@ EXP.SetAccA sta SRC.ACC
rts
*---------------------------------------
.DO ASMDBG=1
EXP.DBG >SYSCALL putchar
>PUSHW L.MSG.DBG
>PUSHB.G MAC.CtxID
EXP.ASMDBG >LIBC putchar
>SS
>PUSHW L.MSG.ASMDBG
>PUSHB ZPMacroCtxID
>PUSHL SRC.ARG
>PUSHL SRC.ACC
>PUSHB SRC.ACC.F
>PUSHB SRC.ACC.SIZE
>PUSHBI 11
>SYSCALL PrintF
* >DEBUG
>LIBC PrintF
>SR
rts
.FIN
*---------------------------------------

View File

@ -1,38 +1,78 @@
NEW
AUTO 3,1
*---------------------------------------
FIO.Quit >LDA.G SRC.Depth
beq .1
jsr FIO.FileClose
bra FIO.Quit
.1 >LDYA.G DST.pFILE
cmp #0
beq .2
>LIBC FClose
.2 >LDYA ZPLineBuf
beq .3
>LIBC Free
.3 >LDYA ZPTmpBuf
beq .4
>LIBC Free
.4 ldy #ASM.pCPUDEF+1
jsr .7
ldy #SRC.pFILENAME+1
.7 lda (pData),y
beq .8
pha
dey
lda (pData),y
tay
pla
>LIBC Free
.8 rts
*---------------------------------------
FIO.Init.RTS rts
FIO.Init >LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs FIO.Init.RTS
>STYA ZPLineBuf
txa
>STA.G SRC.hLineBuf
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs FIO.Init.RTS
>STYA ZPTmpBuf
txa
>STA.G SRC.hTmpBuf
>LDYA L.ASM.6502
FIO.LOAD.CPU >STYA ZPPtr2
*---------------------------------------
FIO.LOAD.CPU >STYA R2
ldy #S.PS.hARGV
lda (pPS),y
>SYSCALL GetMemPtr
ldy #S.PS.pCmdLine
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>STYA ZPPtr1
>STYA R1
ldy #$ff
ldx #$ff
.1 iny
inx
lda (ZPPtr1),y
lda (R1),y
sta ASM.CPU.FILE,x
bne .1
@ -42,7 +82,7 @@ FIO.LOAD.CPU >STYA ZPPtr2
.2 iny
inx
lda (ZPPtr2),y
lda (R2),y
jsr SRC.IsLetterOrDigit
bcs .3
@ -51,65 +91,76 @@ FIO.LOAD.CPU >STYA ZPPtr2
.3 stz ASM.CPU.FILE,x
>LDA.G ASM.hCPUFILE
>LDYA.G ASM.pCPUDEF
cmp #0
beq .4
>SYSCALL FreeMem
>LIBC Free
>STZ.G ASM.hCPUFILE
>STZ.G ASM.pCPUDEF+1
.4 >PUSHW L.MSG.CPU.FILE
.4 >SS
>PUSHW L.MSG.CPU.FILE
>PUSHW L.ASM.CPU.FILE
>PUSHBI 2
jsr OUT.Print
>LIBC PrintF
>SR
jsr OUT.PrintCR
>SS
>PUSHW L.ASM.CPU.FILE
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.BIN
>PUSHWZ Aux type
>SYSCALL LoadFile
>LIBC LoadFile
>SR
bcs .9
txa
>STA.G ASM.hCPUFILE
>SYSCALL GetMemPtr
>STYA ZPPtr1
>STYA R1
>STYA.G ASM.pCPUDEF
ldy #ASM.T.AM
lda (ZPPtr1),y
lda (R1),y
clc
adc ZPPtr1
adc R1
sta ZPAMPtr
iny
lda (ZPPtr1),y
adc ZPPtr1+1
lda (R1),y
adc R1+1
sta ZPAMPtr+1
iny
lda (ZPPtr1),y
lda (R1),y
clc
adc ZPPtr1
sta ZPRPtr
adc R1
sta ZPRegPtr
iny
lda (ZPPtr1),y
adc ZPPtr1+1
sta ZPRPtr+1
lda (R1),y
adc R1+1
sta ZPRegPtr+1
iny
lda (ZPPtr1),y
lda (R1),y
clc
adc ZPPtr1
adc R1
sta ZPOpsPtr
iny
lda (ZPPtr1),y
adc ZPPtr1+1
lda (R1),y
adc R1+1
sta ZPOpsPtr+1
.9 rts
*---------------------------------------
FIO.OpenFile >STYA ZPPtr1
FIO.OpenFile >SS
>STYA R1
>PUSHW L.MSG.SRC.FILE
>PUSHW ZPPtr1
>PUSHW R1
>PUSHBI 2
jsr OUT.Print
>LIBC PrintF
>SR
jsr OUT.PrintCR
>LDA.G SRC.Depth
cmp #IN.MAXDEPTH
@ -119,9 +170,11 @@ FIO.OpenFile >STYA ZPPtr1
sec
rts
.1 >PUSHW ZPPtr1
.1 >SS
>PUSHW R1
>PUSHW ZPTmpBuf
>SYSCALL Stat
>LIBC Stat
>SR
bcs .99
ldy #S.STAT.P.TYPE
@ -129,35 +182,44 @@ FIO.OpenFile >STYA ZPPtr1
cmp #S.FI.T.TXT
bne .2
ldx #O.RDONLY+O.TEXT
ldy #O.RDONLY+O.TEXT
bra .3
.2 cmp #$FA S-C/BAS?
bne .98
ldx #O.RDONLY
ldy #O.RDONLY
.3 >PUSHW ZPPtr1
txa
.3 >SS
>PUSHW R1
tya
>PUSHA
ldy #S.STAT.P.TYPE
lda (ZPTmpBuf),y
>PUSHA
>PUSHWZ
>SYSCALL FOpen
>LIBC FOpen
>SR
bcs .99
pha
>STYA R2
>INC.G SRC.Depth
clc
adc #SRC.hFILES-1
* clc
asl
adc #SRC.pFILES-2
tay
pla
lda R2
sta (pData),y
iny
lda R2+1
sta (pData),y
>LDA.G SRC.Depth
clc
adc #SRC.hFILETYPES-1
adc #SRC.FILETYPES-1
tay
phy
@ -180,16 +242,21 @@ FIO.OpenFile >STYA ZPPtr1
*---------------------------------------
FIO.ReadLine >LDA.G SRC.Depth
clc
adc #SRC.hFILETYPES-1
adc #SRC.FILETYPES-1
tay
lda (pData),y
bmi .10
bmi FIO.ReadLineA
jsr FIO.GethFile
>SS
jsr FIO.PushpFile
>PUSHW ZPLineBuf
>PUSHWI 256
jsr FIO.ReadFromFile
bcs .19
>LIBC FRead
>SR
bcs .99
tax $100 byte transfered ?
bne .98
tya
beq .13
@ -197,24 +264,54 @@ FIO.ReadLine >LDA.G SRC.Depth
dey
lda (ZPLineBuf),y
eor #C.CR
beq .22
beq .13 replace ending $0D with $00
iny
.22 lda #0 replace ending $0D with $00
lda #0
.13 sta (ZPLineBuf),y
>INC.G SRC.LINENUM
bne .19
bne .8
>INC.G SRC.LINENUM+1
.8 clc
rts
.98 lda #E.LINE.TOO.LONG
.19 rts
sec
.99 rts
*---------------------------------------
.10 jsr FIO.GethFile
FIO.ReadLineA >SS
jsr FIO.PushpFile
>PUSHW ZPTmpBuf
>PUSHWI 3
jsr FIO.ReadFromFile
bcs .19
>LIBC FRead
>SR
bcs .99
cpy #3
bcs .1
.98 lda #MLI.E.IO
sec
.99 rts
.1 lda (ZPTmpBuf) LEN
sec
sbc #3
bcc .98 LEN should be at least 3
bne .13
sta (ZPLineBuf)
clc
rts
.13 sta (ZPTmpBuf)
ldy #1
lda (ZPTmpBuf),y
@ -225,30 +322,27 @@ FIO.ReadLine >LDA.G SRC.Depth
pla
>STA.G SRC.LINENUM
jsr FIO.GethFile
>SS
jsr FIO.PushpFile
>PUSHW ZPTmpBuf
lda #0 LENHI = 0
>PUSHA
lda (ZPTmpBuf) LEN
sec
sbc #3
bcc .9 LEN should be at least 3
>PUSHA
jsr FIO.ReadFromFile
bcs .9
>LIBC FRead
>SR
bcs .99
>LDYA ZPTmpBuf
>STYA ZPPtr1
>STYA R1
ldy #0
.1 lda (ZPPtr1)
inc ZPPtr1
.10 lda (R1)
inc R1
bne .11
inc ZPPtr1+1
inc R1+1
.11 tax
bmi .2
@ -256,35 +350,35 @@ FIO.ReadLine >LDA.G SRC.Depth
beq .8 Ending 00
iny
bne .1
bne .10
bra .99
bra .97
.2 cmp #$C0 REPEAT char?
bne .5
lda (ZPPtr1) Get Repeat Count
inc ZPPtr1
lda (R1) Get Repeat Count
inc R1
bne .3
inc ZPPtr1+1
inc R1+1
.3 tax
lda (ZPPtr1) Get Repeat Char
inc ZPPtr1
lda (R1) Get Repeat Char
inc R1
bne .4
inc ZPPtr1+1
inc R1+1
.4 sta (ZPLineBuf),y
iny
beq .99
beq .97
dex
bne .4
bra .1
bra .10
.5 and #$3F Compute blank count
tax
@ -292,38 +386,32 @@ FIO.ReadLine >LDA.G SRC.Depth
.6 sta (ZPLineBuf),y
iny
beq .99
beq .97
dex
bne .6
bra .1
bra .10
.8 clc
.9 rts
.99 lda #E.LINE.TOO.LONG
.97 lda #E.LINE.TOO.LONG
sec
rts
*--------------------------------------
FIO.GethFile >LDA.G SRC.Depth
clc
adc #SRC.hFILES-1
FIO.PushpFile >LDA.G SRC.Depth
* clc
asl
adc #SRC.pFILES-1
tay
lda (pData),y
>PUSHA
dey
lda (pData),y
>PUSHA
rts
*--------------------------------------
FIO.ReadFromFile
>SYSCALL FRead
bcs .9
tax $100 byte transfered ?
beq .9
lda #E.LINE.TOO.LONG
sec
.9 rts
*---------------------------------------
FIO.FileClose >LDA.G SRC.Depth
beq .8
@ -331,11 +419,19 @@ FIO.FileClose >LDA.G SRC.Depth
dec
sta (pData),y
sec
adc #SRC.hFILES-1
inc
asl
* clc
adc #SRC.pFILES-2
tay
lda (pData),y
>SYSCALL FClose
pha
iny
lda (pData),y
ply
>LIBC FClose
.8 clc
rts

View File

@ -2,33 +2,22 @@ NEW
AUTO 3,1
*---------------------------------------
MAC.Init lda #SL..+SL._
>SYSCALL SListNew
>KAPI SListNew
bcs .9
>STA.G MAC.hList
>STYA.G MAC.pList
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .9
txa
>STA.G MAC.hBuf
>STYA.G MAC.pBuf
>LDYAI 256
>SYSCALL GetMem
>LDYAI MA.MAXDEPTH*8
>LIBC Malloc
bcs .9
>STYA ZPMacroArgBuf
txa
>STA.G MAC.hArgBuf
>LDYAI MA.MAXDEPTH*6
>SYSCALL GetMem
bcs .9
>STYA ZPMacroStk
txa
>STA.G MAC.hStk
>STYA.G MAC.pStack
.9 rts
*---------------------------------------
@ -38,49 +27,60 @@ MAC.Quit >LDA.G MAC.StkPtr
jsr MAC.Pop
bra MAC.Quit
.10 >LDA.G MAC.hStk
.10 >LDYA.G MAC.pStack
cmp #0
beq .1
>SYSCALL FreeMem
>LIBC Free
.1 >LDA.G MAC.hBuf
.1 >LDYA.G MAC.pBuf
cmp #0
beq .2
>SYSCALL FreeMem
>LIBC Free
.2 >LDA.G MAC.hArgBuf
beq .3
>SYSCALL FreeMem
.3 >LDA.G MAC.hList
.2 >LDYA.G MAC.pList
cmp #0
beq .8
>SYSCALL SListFree
>KAPI SListFree
.8 clc
rts
*---------------------------------------
MAC.Learn >LDA.G MAC.hBuf
>SYSCALL GetMemPtr
>STYA ZPMacroBuf
MAC.New >SS
>PUSHW.G MAC.pList
>PUSHW ZPLinePtr
>PUSHWZ ScopeID
>PUSHWI ZPLinePtr NextPtr
>KAPI SListNewKey
>SR
bcs .99
>STYA.G MAC.ID
* clc
.99 rts
*---------------------------------------
MAC.Learn >LDYA.G MAC.pBuf
>STYA R1
>STZ.G MAC.BufPtr
sta (ZPMacroBuf)
sta (R1)
lda (ZPLinePtr)
cmp #C.SPACE No label, scan to DIR/OP if any
bne .1
jsr SRC.GetNextCharNB
bcs .8
lda #C.SPACE Store ONE blank
jsr MAC.AddChar
jsr MAC.AddChar Store ONE blank
bcs .90
lda (ZPLinePtr) get back non blank char
bra .2
jsr SRC.GetNextCharNB
bcc .2
bra .80
*---------------------------------------
.1 jsr MAC.AddChar
bcs .99
@ -95,7 +95,7 @@ MAC.Learn >LDA.G MAC.hBuf
jsr SRC.GetNextCharNB
bcs .80
*---------------------------------------
.2 cmp #'.' Directive ?
bne .4
@ -103,29 +103,26 @@ MAC.Learn >LDA.G MAC.hBuf
lda (ZPLinePtr),y
beq .3
jsr SRC.ToUpperCase
cmp #'E'
beq .21
cmp #'e'
bne .3
.21 iny
lda (ZPLinePtr),y
beq .3
jsr SRC.ToUpperCase
cmp #'M'
beq .22
cmp #'m'
bne .3
.22 >STZ.G ASM.MA.ON
.8 clc
rts
>STZ.G MAC.bLearning
* lda #0
jmp MAC.AddChar End Of Macro
.80 lda #C.CR
jmp MAC.AddChar
*---------------------------------------
.3 lda (ZPLinePtr)
.4 jsr MAC.AddChar
@ -138,7 +135,7 @@ MAC.Learn >LDA.G MAC.hBuf
bne .4
jsr SRC.GetNextChar
bcs .8
bcs .80
cmp #C.SPACE
beq .80 Comments...
@ -169,101 +166,197 @@ MAC.AddChar tax
>LDA.G MAC.BufPtr
tay
txa
sta (ZPMacroBuf),y
sta (R1),y
>INC.G MAC.BufPtr
txa
beq .1
cmp #C.CR
eor #C.CR
bne .8
.1 >PUSHB.G MAC.hList
.1 >SS
>PUSHW.G MAC.pList
>PUSHW.G MAC.ID
>PUSHW ZPMacroBuf
>PUSHW R1
>LDA.G MAC.BufPtr
tay
lda #0
>PUSHYA
>SYSCALL SListAddData
>KAPI SListAddData
>SR
rts
.8 clc
rts
*---------------------------------------
MAC.Exec jsr SRC.GetNextChar skip '>'
bcs .90
MAC.Exec jsr MAC.Push
bcs .99
inc ZPMacroNextID
lda ZPMacroNextID
sta ZPMacroCtxID
>PUSHB.G MAC.hList
>PUSHW ZPLinePtr
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
bcs .90
jsr MAC.GetBody
bcs .99
>STYA ZPPtr1 MAC.ID
>STYA ZPMacroBuf
>STYA ZPMacroBufPtr
jsr SRC.SkipX
stz ZPMacroArgBuf+1
.1 jsr SRC.GetChar
jsr SRC.GetChar
bcs .8
cmp #C.SPACE
bne .92
jsr SRC.GetNextChar
beq .8 eol..
bcs .8 eol..
cmp #C.SPACE some arg...
bne .8
cmp #C.SPACE comment....skip
beq .8
.2 jsr SRC.GetNextChar comment....skip
bcc .2
jsr MAC.GetArgs
bcs .99
.8 jmp MAC.Push
.8 clc
rts
.90 lda #E.MACRO.INV
* sec
rts
.99 rts
.92 lda #E.SYNTAX.ERROR
sec
MAC.Exec.RTS rts
*---------------------------------------
MAC.ReadLine >LDA.G MAC.hBuf
>SYSCALL GetMemPtr
>STYA ZPMacroBuf
MAC.GetBody >SS
>PUSHW.G MAC.pList
>PUSHW ZPLinePtr
>PUSHWZ ScopeID
>PUSHWI ZPLinePtr NextPtr
>KAPI SListLookup
>SR
bcs .99
jsr MAC.Get ZPMacroArgBuf = args
>STYA R1 MAC.ID
>PUSHB.G MAC.hList
>PUSHW ZPPtr1 Mac ID
>PUSHW ZPMacroBuf
>PUSHWZ len = 0 (string mode)
>PUSHW ZPPtr2 offset
>SYSCALL SListGetData
bcs MAC.Exec.RTS
>SS
>PUSHW.G MAC.pList
>PUSHW R1 Mac ID
>PUSHWZ allocate
>PUSHWI $ffff all
>PUSHWZ from Start
>KAPI SListGetData
>SR
.99 rts
*---------------------------------------
MAC.GetArgs ldy #$ff
.10 iny
lda (ZPLinePtr),y
bne .10
iny
iny
lda #0
>LIBC Malloc
bcs .99
>STYA ZPMacroArgBuf
>STYA R2
ldx #0 arg cnt
.1 ldy #$ff
stz DIR.Byte between " flag
.2 iny
lda (ZPLinePtr),y
beq .3
cmp #C.SPACE end of args ?
bne .21
bit DIR.Byte
bpl .3
.20 sta (R2)
inc R2
bne .2
inc R2+1
bra .2
.21 cmp #'"'
bne .22
lda DIR.Byte
eor #$ff
sta DIR.Byte
bra .2
.22 cmp #','
bne .20
bit DIR.Byte
bmi .20
lda #0
sta (R2)
inc R2
bne .23
inc R2+1
.23 tya
beq .4
inx
sec
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
bra .1
.3 lda #0
sta (R2)
pha
tya
sec +1 for CR
adc ZPPtr2
sta ZPPtr2
pla
adc ZPPtr2+1
sta ZPPtr2+1
beq .4
ldy #0
inx
.4 stx ZPMacroArgCnt
clc
.99 rts
*---------------------------------------
MAC.ReadLine ldy #0
stz DIR.Byte
.1 lda (ZPMacroBuf)
beq .8
.1 lda (ZPMacroBufPtr)
beq .80
cmp #C.CR
beq .8
inc ZPMacroBuf
inc ZPMacroBufPtr
bne .2
inc ZPMacroBuf+1
inc ZPMacroBufPtr+1
.2 cmp #']'
bne .7
@ -271,12 +364,13 @@ MAC.ReadLine >LDA.G MAC.hBuf
bit DIR.Byte
bmi .7
lda (ZPMacroBuf)
lda (ZPMacroBufPtr)
beq .9
inc ZPMacroBuf
inc ZPMacroBufPtr
bne .21
inc ZPMacroBuf+1
inc ZPMacroBufPtr+1
.21 cmp #'#'
bne .22
@ -300,13 +394,14 @@ MAC.ReadLine >LDA.G MAC.hBuf
jsr MAC.GetArgX
bcs .1 no arg ]n, append nothing
.3 lda (ZPPtr1)
.3 lda (R1)
sta (ZPLineBuf),y
iny
inc ZPPtr1
inc R1
bne .4
inc ZPPtr1+1
inc R1+1
.4 dex
bne .3
@ -323,230 +418,30 @@ MAC.ReadLine >LDA.G MAC.hBuf
iny
bra .1
.8 lda #0
.8 inc ZPMacroBufPtr
bne .80
inc ZPMacroBufPtr+1
.80 lda #0
sta (ZPLineBuf),y
jmp MAC.Put
clc
rts
.9 lda #E.SYNTAX.ERROR
sec
MAC.ReadLine.RTS
rts
*---------------------------------------
MAC.Push >LDA.G MAC.StkPtr
cmp #MA.MAXDEPTH*6
beq MAC.ReadLine.RTS
>LDA.G MAC.CtxID
pha
>INC.G MAC.CtxStackPtr
clc
adc #MAC.CtxStack-1
tay
pla
sta (pData),y
>INC.G MAC.CtxNextID
>STA.G MAC.CtxID
ldy #$ff
.10 iny
lda (ZPLinePtr),y
bne .10
iny
iny
lda #0
>SYSCALL GetMem
bcs MAC.ReadLine.RTS
>STYA ZPPtr2
phx hArgs
ldx #0 arg cnt
.1 ldy #$ff
stz DIR.Byte between " flag
.2 iny
lda (ZPLinePtr),y
beq .3
cmp #C.SPACE end of args ?
bne .21
bit DIR.Byte
beq .3
.20 sta (ZPPtr2)
inc ZPPtr2
bne .2
inc ZPPtr2+1
bra .2
.21 cmp #'"'
bne .22
lda DIR.Byte
eor #$ff
sta DIR.Byte
bra .2
.22 cmp #','
bne .20
bit DIR.Byte
bmi .20
lda #0
sta (ZPPtr2)
inc ZPPtr2
bne .23
inc ZPPtr2+1
.23 tya
beq .4
inx
sec
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
bra .1
.3 lda #0
sta (ZPPtr2)
tya
beq .4
inx
.4 >LDA.G MAC.StkPtr
tay
pla push hArgs
sta (ZPMacroStk),y
iny
txa push arg count
sta (ZPMacroStk),y
iny
lda #0 push offset
sta (ZPMacroStk),y
iny
sta (ZPMacroStk),y
iny
lda ZPPtr1+1 push MAC.ID
sta (ZPMacroStk),y
iny
lda ZPPtr1
sta (ZPMacroStk),y
iny
tya
>STA.G MAC.StkPtr
clc
rts
.9 lda #E.MACRO.TOO.MANY
sec
rts
*---------------------------------------
MAC.Pop >LDA.G MAC.StkPtr
dec
dec mac id
dec
dec offset
dec arg cnt
dec hArgs
sta (pData),y 6 bytes off stack
tay
lda (ZPMacroStk),y
>SYSCALL FreeMem
>LDA.G MAC.CtxStackPtr
clc
adc #MAC.CtxStack-1
tay
lda (pData),y
>STA.G MAC.CtxID
>DEC.G MAC.CtxStackPtr
clc
rts
*---------------------------------------
MAC.Get >LDA.G MAC.StkPtr
tay
dey
lda (ZPMacroStk),y
sta ZPPtr1
dey
lda (ZPMacroStk),y
sta ZPPtr1+1 get mac ID
dey
lda (ZPMacroStk),y
sta ZPPtr2
dey
lda (ZPMacroStk),y
sta ZPPtr2+1 get offset
dey
lda (ZPMacroStk),y get arg count
sta ZPMacroArgCnt
dey
lda (ZPMacroStk),y
>SYSCALL GetMemPtr
>STYA ZPMacroArgBuf get args
rts
*---------------------------------------
MAC.Put >LDA.G MAC.StkPtr
tay
dey to arg cnt
dey
dey skip mac ID
lda ZPPtr2
sta (ZPMacroStk),y
dey
lda ZPPtr2+1
sta (ZPMacroStk),y save offset
clc
rts
*---------------------------------------
MAC.GetArgX phy
>LDYA ZPMacroArgBuf
>STYA ZPPtr1
>STYA R1
.1 ldy #$ff
.2 iny
lda (ZPPtr1),y
lda (R1),y
bne .2
.3 dex
@ -556,10 +451,11 @@ MAC.GetArgX phy
beq .9
sec
adc ZPPtr1
sta ZPPtr1
adc R1
sta R1
bcc .1
inc ZPPtr1+1
inc R1+1
bra .1
.4 tya
@ -574,6 +470,73 @@ MAC.GetArgX phy
sec
rts
*---------------------------------------
MAC.Push >LDA.G MAC.StkPtr
cmp #MA.MAXDEPTH*8
bcs .98
>LDYA.G MAC.pStack
>STYA R1
>LDA.G MAC.StkPtr
tay
ldx #0
.1 lda ZPMacroBuf,x
sta (R1),y
iny
inx
cpx #8
bcc .1
tya
>STA.G MAC.StkPtr
clc
rts
.98 lda #E.MACRO.TOO.MANY
* sec
rts
*---------------------------------------
MAC.Pop >LDYA ZPMacroArgBuf
beq .1
>LIBC Free
stz ZPMacroArgBuf+1
.1 >LDYA ZPMacroBuf
beq .2
>LIBC Free
stz ZPMacroBuf+1
.2 >LDYA.G MAC.pStack
>STYA R1
>LDA.G MAC.StkPtr
beq .8
sec
sbc #8
sta (pData),y 8 bytes off stack
tay
ldx #0
.3 lda (R1),y
sta ZPMacroBuf,x
iny
inx
cpx #8
bcc .3
.8 clc
rts
*---------------------------------------
MAN
SAVE usr/src/bin/asm.s.mac
LOAD usr/src/bin/asm.s

View File

@ -8,57 +8,49 @@ OUT.Init lda #PAGE.LEN
*---------------------------------------
OUT.EmitByte phy
phx
tax
>STA.G OUT.Byte
>LDA.G ASM.PASS
>LDA.G OUT.BufCnt
cmp #4
bne .4
jsr OUT.PrintBuf
bcs .9
.4 >LDA.G ASM.PASS
beq .1
>LDA.G ASM.DU.ON
bmi .1
>PUSHB.G DST.hREFNUM
txa
>PUSHA
phx
>SYSCALL FPutC
plx
>SS
>PUSHB 0
>PUSHB.G OUT.Byte
>PUSHW.G DST.pFILE
>LIBC FPutC
>SR
bcs .9
.1 >INC.G ASM.PC
bne .2
>INC.G ASM.PC+1
bne .2
>INC.G ASM.PC+2
bne .2
>INC.G ASM.PC+3
.1 ldy #ASM.PC
jsr CORE.IncDWordY
.2 >LDA.G ASM.PH.ON
>LDA.G ASM.PH.ON
beq .3
>INC.G ASM.PC.PH
bne .3
>INC.G ASM.PC.PH+1
bne .3
>INC.G ASM.PC.PH+2
bne .3
>INC.G ASM.PC.PH+3
>LDA.G ASM.DU.ON
bmi .3
ldy #ASM.PC.PH
jsr CORE.IncDWordY
.3 >LDA.G OUT.Buf
cmp #3
bne .4
.3 >LDA.G OUT.Byte
tax
phx
jsr OUT.PrintBuf
plx
bcs .9
ldy #OUT.Buf
lda #0
.4 inc
>LDA.G OUT.BufCnt
inc
sta (pData),y
clc
adc #OUT.Buf
adc #OUT.Buf-1
tay
txa
sta (pData),y
@ -77,12 +69,14 @@ OUT.PrintBuf jsr OUT.PrintLineOn
jsr OUT.PrintLineOutBuf
bcs OUT.PrintBuf.RTS
jsr OUT.PrintCR
bcs OUT.PrintBuf.RTS
OUT.PrintBufReset
>STZ.G OUT.Buf
>STZ.G OUT.BufCnt
>STZ.G OUT.bEquate
ldx #4
ldy #ASM.PC
@ -101,16 +95,14 @@ OUT.PrintBufReset
dex
bne .3
.8 clc
OUT.PrintBuf.CLCRTS
clc
OUT.PrintBuf.RTS
rts
*---------------------------------------
OUT.PrintLine jsr OUT.PrintLineOn
bcc OUT.PrintLine.1
clc
rts
bcs OUT.PrintBuf.CLCRTS
OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
bcs OUT.PrintBuf.RTS
@ -122,28 +114,33 @@ OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
pha
lda #'>'
>SYSCALL PutChar
>LIBC PutChar
pla
bra .1
.2 >PUSHW L.MSG.LINENUM
.2 >SS
>PUSHW L.MSG.LINENUM
>PUSHW.G SRC.LINENUM
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
>LDA.G MAC.CtxStackPtr
>LDA.G MAC.StkPtr
lsr
lsr
lsr
.3 dec
bmi .4
pha
lda #'>'
>SYSCALL PutChar
>LIBC PutChar
pla
bra .3
.4 >LDYA ZPLineBuf
>SYSCALL PutS
>LIBC PutS
jmp OUT.PrintCR1
*---------------------------------------
@ -151,8 +148,8 @@ OUT.PrintLineOutBuf
>LDA.G OUT.bEquate
bne OUT.PrintLineEQU
>LDA.G OUT.Buf
pha
>SS
>LDA.G OUT.BufCnt
asl
tax
>PUSHB L.MSG.OUT0+1,x
@ -163,17 +160,19 @@ OUT.PrintLineOutBuf
dey
>PUSHB (pData),y
pla
>LDA.G OUT.BufCnt
beq .2
pha
tax
lda #0
sta (pData),y
ldy #OUT.Buf
pha
.1 iny
>PUSHB (pData),y
.1 >PUSHB (pData),y
iny
dex
bne .1
@ -182,15 +181,17 @@ OUT.PrintLineOutBuf
.2 inc
inc
>PUSHA Byte Count+2 for PC
>SYSCALL PrintF
>LIBC PrintF
>SR
rts
*---------------------------------------
OUT.PrintLineEQU
>SS
lda SRC.ACC.SIZE
asl
tax
>PUSHB L.MSG.EQU0+1,x
>PUSHB L.MSG.EQU0,x
@ -207,7 +208,9 @@ OUT.PrintLineEQU
lda SRC.ACC.SIZE
.2 >PUSHA Byte Count
>SYSCALL PrintF
>LIBC PrintF
>SR
rts
*---------------------------------------
OUT.PrintLineOn
@ -217,14 +220,15 @@ OUT.PrintLineOn
>LDA.G ASM.LI.ON
bpl .9
>LDA.G ASM.MA.ON MACRO Mode ?
>LDA.G MAC.bLearning MACRO Mode ?
bmi .1
>LDA.G MAC.CtxID within MACRO ?
lda ZPMacroCtxID within MACRO ?
beq .11
.1 >LDA.G ASM.LI.MON
bpl .9
clc
rts
@ -239,6 +243,7 @@ OUT.PrintLineOn
>LDA.G ASM.LI.CON FALSE, check CON flag...
bpl .9
clc
rts
@ -257,10 +262,12 @@ OUT.PrintLineErr
jsr OUT.PrintLine.1
bcs OUT.PrintLineOnRTS
>SS
>PUSHW L.MSG.ERROR
>PUSHB DIR.Byte
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
>SR
lda ZPLinePtr
sec
@ -271,21 +278,18 @@ OUT.PrintLineErr
dec
jsr OUT.PrintLineErrDashA
>LDA.G MAC.CtxStackPtr
lda ZPMacroCtxID
jsr OUT.PrintLineErrDashA
lda #'^'
>SYSCALL PutChar
>LIBC PutChar
bcs OUT.PrintLineOnRTS
jsr OUT.PrintCR
>PUSHW L.MSG.PASS
>LDA.G ASM.PASS
inc
>PUSHA
>PUSHBI 1
jsr OUT.Print
jsr OUT.PrintPass
jsr OUT.PrintCR
jmp OUT.PrintCR
*---------------------------------------
@ -295,7 +299,7 @@ OUT.PrintLineErrDashA
.1 phx
lda #'-'
>SYSCALL PutChar
>LIBC PutChar
plx
bcs .9
@ -305,18 +309,45 @@ OUT.PrintLineErrDashA
.8 clc
.9 rts
*---------------------------------------
OUT.PrintWarn1 jsr OUT.PrintLine.1
OUT.PrintStats jsr OUT.PrintCR
>SS
>PUSHW L.MSG.STATS
>PUSHL.G ASM.TotalLines
>PUSHL.G ASM.CodeLines
>PUSHBI 8
>LIBC PrintF
>SR
bcc OUT.PrintCR1
>LDYA L.MSG.WARN1
>SYSCALL PutS
rts
*---------------------------------------
OUT.Print >SYSCALL PrintF
bcs OUT.Print.RTS
OUT.PrintPass >SS
>PUSHW L.MSG.PASS
>LDA.G ASM.PASS
inc
>PUSHA
>PUSHBI 1
>LIBC PrintF
>SR
bcc OUT.PrintCR1
rts
*---------------------------------------
OUT.PrintCR >PUSHW L.MSG.CRLF
OUT.PrintWarn1 jsr OUT.PrintLine.1
bcs .9
>LDYA L.MSG.WARN1
>LIBC PutS
bcc OUT.PrintCR1
.9 rts
*---------------------------------------
OUT.PrintCR >SS
>PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
>LIBC PrintF
>SR
OUT.PrintCR1 >DEC.G OUT.LineCnt
bne .8

View File

@ -1,28 +1,19 @@
NEW
AUTO 3,1
*---------------------------------------
SRC.ParseLine jsr OUT.PrintBufReset
SRC.ParseLine >LDA.G MAC.bLearning
bpl .1
>STZ.G OUT.bEquate
jmp MAC.Learn
jsr SRC.GetChar
bcs .8
.1 jsr SRC.DoCheck
bcs SRC.ParseLine.LABEL TRUE
cmp #'*' Comment?
beq .8
lda (ZPLinePtr) FALSE
cmp #C.SPACE
beq SRC.ParseLine.DirOp no label...
cmp #';' Comment?
beq .8
jsr SRC.DoCheck
bcs .7 TRUE
lda (ZPLinePtr)
.1 cmp #C.SPACE false....skip label processing
beq SRC.ParseLine.DirOp no label....
.2 jsr SRC.GetNextChar
.2 jsr SRC.GetNextChar ...skip label processing
bcs .8
cmp #C.SPACE
@ -30,14 +21,14 @@ SRC.ParseLine jsr OUT.PrintBufReset
bra SRC.ParseLine.DirOp
.7 >LDA.G ASM.MA.ON
bpl SRC.ParseLine.LABEL
jmp MAC.Learn
.8 clc
SRC.ParseLine.RTS
rts
SRC.ParseLine.InvLbl
lda #E.INV.LABEL
sec
rts
*---------------------------------------
SRC.ParseLine.LABEL
jsr SRC.GetChar
@ -48,18 +39,11 @@ SRC.ParseLine.LABEL
cpx #'.' local symbol?
bne .1
>LDA.G SYM.BufPtr Not relative to Global label...
beq SRC.ParseLine.InvLbl
>LDA.G MAC.StkPtr
bne SRC.ParseLine.InvLbl illegal in MACRO
bra .2
.1 cpx #':' private symbol?
bne .8
>LDA.G MAC.StkPtr
beq SRC.ParseLine.InvLbl illegal OUTSIDE macro
.2 >LDA.G SYM.BufPtr Not relative to Global label...
beq SRC.ParseLine.InvLbl
jsr SRC.GetNextChar
bcs SRC.ParseLine.InvLbl
@ -70,13 +54,33 @@ SRC.ParseLine.LABEL
jsr SYM.NewLocalA
bcs SRC.ParseLine.RTS
bra SRC.ParseLine.DirOp
*---------------------------------------
.1 cpx #':' private symbol?
bne .8
>LDA.G SYM.BufPtr Not relative to Global label...
beq SRC.ParseLine.InvLbl
>LDA.G MAC.StkPtr
beq SRC.ParseLine.InvLbl illegal OUTSIDE macro
jsr SRC.GetNextChar
bcs SRC.ParseLine.InvLbl
jsr SRC.GetDecimal8
bcs SRC.ParseLine.InvLbl
jsr SYM.NewPrivateA
bcs SRC.ParseLine.RTS
bra SRC.ParseLine.DirOp
*---------------------------------------
.8 jsr SYM.NewGlobal
bcs SRC.ParseLine.RTS
*---------------------------------------
SRC.ParseLine.DirOp
jsr SRC.GetNextCharNB Scan for an Opcode...
bcs SRC.ParseLine.Ok
bcs .8
cmp #'.'
bne .5
@ -84,7 +88,7 @@ SRC.ParseLine.DirOp
bcs SRC.ParseLine.InvDir
>LDYA L.T.DIRECTIVES
jsr SRC.GetKeyword
jsr SRC.Lookup
bcs SRC.ParseLine.InvDir
@ -98,28 +102,26 @@ SRC.ParseLine.DirOp
beq .1
cpx #DIR.FI.ID
bne SRC.ParseLine.Ok
bne .8
.1 jmp (J.DIRECTIVES,x)
.5 pha
jsr SRC.DoCheck
pla
bcc SRC.ParseLine.Err FALSE, skip all
bcc .99 FALSE, skip all
cmp #'>'
bne SRC.ParseLine.OpCode
jsr SRC.GetNextChar skip '>'
jmp MAC.Exec
SRC.ParseLine.Ok
clc
SRC.ParseLine.Err
rts
.8 clc
.99 rts
SRC.ParseLine.InvLbl
lda #E.INV.LABEL
sec
rts
SRC.ParseLine.InvDir
lda #E.INV.DIR
sec
@ -129,21 +131,20 @@ SRC.ParseLine.OpCode
>LDYA ZPOpsPtr
>STYA ZPOpDefPtr
.1 lda (ZPOpDefPtr) End Of OpCode List
.1 lda (ZPOpDefPtr)
ldy #1
ora (ZPOpDefPtr),y
beq .9
beq .9 End Of OpCode List
lda ZPOpDefPtr
clc
adc #2
sta ZPPtr2
sta R2
lda ZPOpDefPtr+1
adc #0
sta ZPPtr2+1
lda (ZPPtr2)
sta R2+1
lda (R2)
tax
ldy #0
@ -151,16 +152,10 @@ SRC.ParseLine.OpCode
.2 lda (ZPLinePtr),y
beq .7
cmp #'a'
bcc .3
jsr SRC.ToUpperCase
cmp #'z'+1
bcs .3
eor #$20
.3 iny
cmp (ZPPtr2),y
iny
cmp (R2),y
bne .7
dex
@ -177,6 +172,7 @@ SRC.ParseLine.OpCode
adc ZPLinePtr
sta ZPLinePtr
bcc .5
inc ZPLinePtr+1
.5 jsr SRC.GetChar
@ -204,6 +200,7 @@ SRC.ParseLine.OpCode
bcs .99
jmp SRC.ParseLine.Emit
.9 lda #E.INV.OPCODE
sec
.99 rts
@ -220,33 +217,44 @@ SRC.ParseLine.AM
.2 jsr SRC.IsLetter Any register?
bcs .6 no, try something else
>LDYA ZPRPtr Check in register table
jsr SRC.GetKeyword
>LDYA ZPRegPtr Check in register table
jsr SRC.Lookup
bcs .6
lda (ZPPtr1) get register len
lda (R1) get register len
tax
.4 inc ZPPtr1
.4 inc R1
bne .5
inc ZPPtr1+1
inc R1+1
.5 lda (ZPPtr1)
.5 lda (R1)
jsr SRC.AddToBuf
dex
bne .4
bra .74
*---------------------------------------
.6 jsr EXP.ResetAcc
jsr EXP.Eval
bcs .99
>LDA.G EXP.Prefix
>LDA.G EXP.Modifier
beq .75
lsr
tay
ldx T.MODS.LEN-1,y
beq .75
lda #'#'
jsr SRC.AddToBuf
.73 jsr SRC.AddToBuf
dex
bne .73
.75 jsr SRC.GetACCSize
@ -263,7 +271,7 @@ SRC.ParseLine.AM
bne .1
bra .8
*---------------------------------------
.7 jsr SRC.GetNextChar
bcs .8
@ -286,13 +294,44 @@ SRC.ParseLine.AM
.88 jmp SRC.ParseLine.Emit
*---------------------------------------
SRC.GetACCSize lda SRC.ACC.F
and #SYMG.F.FWREF
beq .1
>LDA.G ASM.PASS
beq .10
lda SRC.ACC+1
bne .10
jsr OUT.PrintWarn1
.10 ldx #2
rts
*---------------------------------------
.1 ldx SRC.ACC.SIZE
beq * SHOULD NEVER APPEND
.2 lda SRC.ACC-1,x
bne .8
dex
bne .2
inx
.8 rts
*---------------------------------------
SRC.ParseLine.AMCheck
>LDYA ZPAMPtr Check if AM is valid for CPU
>STYA ZPPtr1
>STYA R1
ldx #0
.1 inx
lda (ZPPtr1)
lda (R1)
beq .9
cmp SRC.AM.StrBuf
@ -300,7 +339,7 @@ SRC.ParseLine.AMCheck
tay
.2 lda (ZPPtr1),y
.2 lda (R1),y
cmp SRC.AM.StrBuf,y
bne .6
@ -313,13 +352,15 @@ SRC.ParseLine.AMCheck
clc
rts
.6 lda (ZPPtr1)
.6 lda (R1)
.7 sec
adc ZPPtr1
sta ZPPtr1
adc R1
sta R1
bcc .1
inc ZPPtr1+1
inc R1+1
bra .1
.9 sec
rts
*---------------------------------------
@ -330,6 +371,7 @@ SRC.ParseLine.AMCheck4OP
clc
adc #2 Skip nextLoHi
bcc .11
inx
.11 sec skip LEN Byte
@ -338,36 +380,37 @@ SRC.ParseLine.AMCheck4OP
bcc .10
inx
.10 sta ZPPtr1
.10 sta R1
stx ZPPtr1+1
lda (ZPPtr1) AMID...
stx R1+1
lda (R1) AMID...
.1 >CMP.G SRC.AMID
beq .8
lda ZPPtr1 Skip AMID,L,"39aa"
ldx ZPPtr1+1
lda R1 Skip AMID,L,"39aa"
ldx R1+1
inc AMID....
bne .12
inx
.12 sec LEN byte...
ldy #1 String...
adc (ZPPtr1),y
adc (R1),y
bcc .2
inx
.2 sta ZPPtr1
stx ZPPtr1+1
lda (ZPPtr1)
.2 sta R1
stx R1+1
lda (R1)
bne .1
lda #E.INV.AM.4.OC
sec
rts
.8 >LDYA ZPPtr1
.8 >LDYA R1
>STYA ZPOpDefPtr
clc
rts
@ -406,14 +449,14 @@ SRC.ParseLine.Emit
* clc
rts
*---------------------------------------
.4 bne .5 cmp #'a'....
ldx SRC.ACCTMP
inc SRC.ACCTMP
lda SRC.ACC,x
bra .3
*---------------------------------------
.5 cmp #'r
bne .7
@ -427,7 +470,7 @@ SRC.ParseLine.Emit
beq .3 Emit 00 if pending symbol (pass #1)
bra .91
*---------------------------------------
.7 cmp #'l
bne .90
@ -440,7 +483,7 @@ SRC.ParseLine.Emit
lda SRC.ACC+1
bra .3
*---------------------------------------
.8 >LDA.G ASM.PASS
bne .91
@ -450,7 +493,7 @@ SRC.ParseLine.Emit
lda #0
bra .3 Emit 00 00 if pending symbol (pass #1)
*---------------------------------------
.90 lda #E.INV.CPU.FILE
sec
rts
@ -556,9 +599,14 @@ SRC.ComputeRel16
.9 sec
rts
*---------------------------------------
* ACC=Absolute target address
* A=OpCode correction relative to PC
*---------------------------------------
SRC.ComputeRel phy
ldy #ASM.PC
clc
ldy #ASM.PC ARG=PC+correction
adc (pData),y
sta SRC.ARG
@ -577,7 +625,8 @@ SRC.ComputeRel phy
adc (pData),y
sta SRC.ARG+3
sec
sec ACC=ACC-ARG
lda SRC.ACC
sbc SRC.ARG
sta SRC.ACC
@ -598,21 +647,22 @@ SRC.ComputeRel phy
rts
*---------------------------------------
SRC.GetDecimal8 jsr SRC.GetDecimal
bcs .9
bcs .99
lda SRC.ACC+1
ora SRC.ACC+2
ora SRC.ACC+3
bne .99 Max .255
bne .98 Max .255
lda SRC.ACC
beq .99 .0 is not allowed
beq .98 .0 is not allowed
* clc
rts
.99 sec
.9 rts
.98 lda #E.RANGE
sec
.99 rts
*---------------------------------------
SRC.GetDecimal jsr SRC.GetChar
beq .99
@ -832,14 +882,15 @@ SRC.GetBinary jsr SRC.GetNextChar skip '%'
.8 clc
rts
*---------------------------------------
SRC.GetKeyword >STYA ZPPtr1 KeyWord table
SRC.Lookup >STYA R1 KeyWord table
ldx #0 Keyword.ID
ldx #0 Keyword.ID
.1 phx
lda (ZPPtr1)
beq .9 End Of table
tax KW len
lda (R1)
beq .9 End Of table
tax KW len
ldy #0
.3 lda (ZPLinePtr),y
@ -849,40 +900,40 @@ SRC.GetKeyword >STYA ZPPtr1 KeyWord table
bcs .6
iny
cmp (ZPPtr1),y
cmp (R1),y
bne .7
dex
bne .3
lda (ZPLinePtr),y All chars match...
beq .4 End of Line ?
lda (ZPLinePtr),y All chars match...
beq .4 End of Line ?
jsr SRC.IsKeywordLetterUC
bcc .7 Additional letters...
bcc .7 Additional letters...
.4 lda ZPLinePtr found!
.4 lda ZPLinePtr found!
clc
adc (ZPPtr1) skip KW in source line
adc (R1) skip KW in source line
sta ZPLinePtr
bcc .5
inc ZPLinePtr+1
.5 plx Keyword.ID
.5 plx Keyword.ID
clc
rts
.6
.7 lda (ZPPtr1)
sec Add keyword Len+1
adc ZPPtr1
sta ZPPtr1
.7 lda (R1)
sec Add keyword Len+1
adc R1
sta R1
bcc .8
inc ZPPtr1+1
inc R1+1
.8 plx Keyword.ID
.8 plx Keyword.ID
inx
inx
bra .1
@ -891,6 +942,40 @@ SRC.GetKeyword >STYA ZPPtr1 KeyWord table
sec
rts
*---------------------------------------
SRC.IsKeywordLetterUC
cmp #'_'
beq .8
cpy #0
beq .1
cmp #'.'
bne .1
.8 clc
rts
.1 cmp #'A'
bcc .9
cmp #'Z'+1
bcc .99
cmp #'a'
bcc .9
cmp #'z'+1
bcs .99
eor #$20 to UPPERCASE
* clc
rts
.9 sec
.99 rts
*---------------------------------------
SRC.IsAMReserved
ldx SRC.AM.RESERVED
@ -906,7 +991,69 @@ SRC.IsAMReserved
.8 clc
rts
*---------------------------------------
SRC.MODLookup >LDYA L.T.MODS
>STYA R1 KeyWord table
ldx #2 Keyword.ID
.1 lda (R1)
beq .9 End Of table
phx
tax KW len
ldy #0
.3 lda (ZPLinePtr),y
beq .7
jsr SRC.IsMODReserved
bcs .7
iny
cmp (R1),y
bne .7
dex
bne .3
lda (ZPLinePtr),y All chars match...
beq .4 End of Line ?
jsr SRC.IsMODReserved
bcc .7 Additional letters...
.4 lda ZPLinePtr found!
clc
adc (R1) skip KW in source line
sta ZPLinePtr
bcc .5
inc ZPLinePtr+1
.5 plx Keyword.ID
clc
rts
.7 lda (R1)
sec Add keyword Len+1
adc R1
sta R1
bcc .8
inc R1+1
.8 plx Keyword.ID
inx
inx
bra .1
.9 sec
rts
*---------------------------------------
SRC.IsMODReserved
phx
ldx SRC.MOD.RESERVED
.1 cmp SRC.MOD.RESERVED,x
@ -915,47 +1062,29 @@ SRC.IsMODReserved
dex
bne .1
plx
sec
rts
.8 plx
clc
rts
*---------------------------------------
SRC.IsEXPReserved
ldx SRC.EXP.RESERVED
.1 cmp SRC.EXP.RESERVED,x
beq .8
dex
bne .1
sec
rts
.8 clc
rts
*---------------------------------------
SRC.IsEXPReserved
ldx SRC.EXP.RESERVED
.1 cmp SRC.EXP.RESERVED,x
beq SRC.IsEXPReserved.8
dex
bne .1
sec
rts
SRC.IsEXPReserved.8
clc
rts
*---------------------------------------
SRC.IsKeywordLetterUC
cmp #'A'
bcc .9
cmp #'Z'+1
bcc .99
cmp #'a'
bcc .9
cmp #'z'+1
bcs .99
eor #$20
rts CC if lowercase
.9 sec
.99 rts
*---------------------------------------
SRC.IsLetterOrDigit
jsr SRC.IsDigit10
bcc SRC.IsLetterRTS
@ -974,7 +1103,7 @@ SRC.IsLetter cmp #'_'
cmp #'z'+1
rts CC if lowercase
rts CC if lowercase
.8 clc
rts
@ -1001,7 +1130,7 @@ SRC.IsDigit16 jsr SRC.IsDigit10
eor #$20
.1
* clc
sbc #'A'-11 cc so A->10 (11-CC)
sbc #'A'-11 cc so A->10 (11-CC)
clc
@ -1017,7 +1146,7 @@ SRC.IsDigit10 cmp #'0'
cmp #'9'+1
rts cc if ok, cs if not
rts cc if ok, cs if not
.9 sec
rts
@ -1027,23 +1156,11 @@ SRC.IsDigit8 cmp #'0'
cmp #'7'+1
rts cc if ok, cs if not
rts cc if ok, cs if not
.9 sec
rts
*---------------------------------------
SRC.SkipX clc
.HS B0 BCS
SRC.SkipXp1 sec
txa
adc ZPLinePtr
sta ZPLinePtr
bcc .8
inc ZPLinePtr+1
.8 rts
*---------------------------------------
SRC.GetNextCharNB
jsr SRC.GetNextChar
bcs .9
@ -1056,10 +1173,10 @@ SRC.GetNextCharNB
.9 rts
*---------------------------------------
SRC.GetNextChar lda (ZPLinePtr)
beq SRC.GetChar.ERR
beq SRC.GetChar.9
cmp #C.CR
beq SRC.GetChar.ERR
beq SRC.GetChar.9
inc ZPLinePtr
bne SRC.GetChar
@ -1067,16 +1184,31 @@ SRC.GetNextChar lda (ZPLinePtr)
inc ZPLinePtr+1
SRC.GetChar lda (ZPLinePtr)
beq SRC.GetChar.ERR
beq SRC.GetChar.9
cmp #C.CR
beq SRC.GetChar.ERR
beq SRC.GetChar.9
cmp #C.TAB
bne .8
lda #C.SPACE
clc
.8 clc
rts
SRC.GetChar.ERR sec
SRC.GetChar.9 sec
rts
*--------------------------------------
SRC.ToUpperCase cmp #'a'
bcc .8
cmp #'z'+1
bcs .8
eor #$20
.8 rts
*---------------------------------------
SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
asl
@ -1121,34 +1253,6 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
sta SRC.ACC+3 CS if overflow
.9 rts
*---------------------------------------
SRC.GetACCSize lda SRC.ACC.F
and #SYMG.F.FWREF
beq .1
lda SRC.ACC+1
bne .10
jsr OUT.PrintWarn1
.10 ldx #2
rts
.1 ldx SRC.ACC.SIZE
beq * SHOULD NEVER APPEND
.2 lda SRC.ACC-1,x
bne .8
dex
bne .2
inx
.8 rts
*---------------------------------------
SRC.DoCheck sec
>LDA.G ASM.DO.StackPtr
beq .8

File diff suppressed because it is too large Load Diff

View File

@ -7,6 +7,7 @@ NEW
*---------------------------------------
ASMDBG .EQ 0
SYMDBG .EQ 0
EXPDBG .EQ 0
*---------------------------------------
PAGE.LEN .EQ 23
DO.MAXDEPTH .EQ 8
@ -27,21 +28,24 @@ ZPLinePtr .BS 2
ZPSymbolBuf .BS 2
ZPAMPtr .BS 2
ZPRPtr .BS 2
ZPRegPtr .BS 2
ZPOpsPtr .BS 2
ZPOpDefPtr .BS 2
ZPMacroStk .BS 2
ZPMacroBuf .BS 2
ZPMacroBufPtr .BS 2
ZPMacroArgBuf .BS 2
ZPMacroArgCnt .BS 1
ZPMacroCtxID .BS 1
ZPMacroNextID .BS 1
DIR.Byte .BS 1
DIR.Word .BS 2
SYM.LocalOfs .BS 2
ZPPtr1 .BS 2
ZPPtr2 .BS 2
* .BS 2
* .BS 2
ZS.END .ED
*---------------------------------------
@ -102,28 +106,30 @@ E.SRC.UNEXP.EOF .EQ $BF
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT
.DA #$61 6502,Level 1 (65c02)
.DA #2 BIN Layout Version 2
.DA #0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #64 SS
.DA #ZS.END-ZS.START ZP
.DA 0
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #0 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
L.MSG.START .DA MSG.START
L.MSG.HELP .DA MSG.HELP
L.MSG.CRLF .DA MSG.CRLF
L.MSG.OUT0 .DA MSG.OUT0
.DA MSG.OUT1
.DA MSG.OUT2
.DA MSG.OUT3
.DA MSG.OUT4
L.MSG.EQU0 .DA MSG.EQU0
.DA MSG.EQU1
.DA MSG.EQU2
@ -136,18 +142,28 @@ L.MSG.SYMBOLS .DA MSG.SYMBOLS
L.MSG.LSYMBOL .DA MSG.LSYMBOL
L.MSG.PSYMBOL .DA MSG.PSYMBOL
L.MSG.SUMMARY .DA MSG.SUMMARY
L.MSG.STATS .DA MSG.STATS
L.MSG.END .DA MSG.END
L.MSG.WARN1 .DA MSG.WARN1
.DO ASMDBG=1
L.MSG.DBG .DA MSG.DBG
L.MSG.ASMDBG .DA MSG.ASMDBG
.FIN
.DO SYMDBG=1
L.MSG.SYMDBG .DA MSG.SYMDBG
L.MSG.SYMDBGN .DA MSG.SYMDBGN
L.MSG.SYMDBGG .DA MSG.SYMDBGG
L.MSG.SYMDBGS .DA MSG.SYMDBGS
L.MSG.SYMDBGU .DA MSG.SYMDBGU
L.MSG.SYMDBGL .DA MSG.SYMDBGL
L.MSG.SYMDBGP .DA MSG.SYMDBGP
L.MSG.SYMDBGAL .DA MSG.SYMDBGAL
L.MSG.SYMDBGGL .DA MSG.SYMDBGGL
.FIN
.DO EXPDBG=1
L.MSG.EXPDBG .DA MSG.EXPDBG
.FIN
L.MSG.SRC.FILE .DA MSG.SRC.FILE
L.MSG.OBJ.FILE .DA MSG.OBJ.FILE
L.MSG.CPU.FILE .DA MSG.CPU.FILE
L.SRC.AM.StrBuf .DA SRC.AM.StrBuf
L.ASM.6502 .DA ASM.6502
L.ASM.CPU.FILE .DA ASM.CPU.FILE
L.SRC.ACC.F .DA SRC.ACC.F
@ -208,10 +224,15 @@ J.LI .DA DIR.LI.ON
.DA DIR.LI.MOFF
.DA DIR.LI.XON
.DA DIR.LI.XOFF
J.EXP.MOD .DA EXP.MOD.8.1 #/^<>
L.T.MODS .DA T.MODS
J.MODS .DA EXP.MOD.8.1 #/^<>
.DA EXP.MOD.8.2
.DA EXP.MOD.8.3
.DA EXP.MOD.24
.DA EXP.MOD.16.1
.DA EXP.MOD.16.2
.DA EXP.MOD.16.3
.DA EXP.MOD.24.1
.DA EXP.MOD.24.2
.DA EXP.MOD.32
J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/
.DA EXP.OP.ORA
@ -229,251 +250,138 @@ J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/
CS.INIT clc
rts
*--------------------------------------
CS.RUN jsr CS.RUN.ARGS
bcs .9
CS.RUN >SS
>PUSHW L.MSG.START
>PUSHW A2osX.KVER
>PUSHBI 2
>LIBC PrintF
>SR
jsr CS.RUN.ARGS
bcs .99
jsr FIO.Init
bcs .9
bcs .99
jsr SYM.Init
bcs .9
bcs .99
jsr MAC.Init
bcs .9
bcs .99
jsr OUT.Init
bcs .9
.1 >SLEEP
jsr CS.RUN.LOOP
bcc .1
.9 rts
bcs .99
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
jsr CORE.Pass1Init
bcs .99
tay
bne .13
>SYSCALL GetChar
bcs .99
cmp #$03 Ctrl-C
beq .99 Abort....beq=CS
cmp #$13 Ctrl-S
bne .11
>LDA.G bPause
eor #$ff
sta (pData),y
bpl .12
clc
rts
.13 >LDA.G bPause
bpl .11
clc
.99 rts
.11 >STZ.G bPause
.12 >LDA.G SRC.Depth root file is already opened?
bne .10
>PUSHW L.MSG.PASS
>LDA.G ASM.PASS
inc
>PUSHA
>PUSHBI 1
jsr OUT.Print
>LDA.G SRC.hFILENAME
>SYSCALL GetMemPtr
jsr FIO.OpenFile
bcs .99
jsr DIR.Reset
>STZ.G MAC.StkPtr
>STZ.G SYM.BufPtr
.10 >LDYA ZPLineBuf
>STYA ZPLinePtr
>LDA.G MAC.StkPtr
beq .20
.15 jsr MAC.ReadLine
bcc .2
cmp #E.EMPTYKEY
bne .9
jsr MAC.Pop
bne .15
.20 jsr FIO.ReadLine
bcc .2
cmp #MLI.E.EOF End Of File?
bne .9
jsr FIO.FileClose
>LDA.G SRC.Depth end of root file ?
bne .8 no continue back to previous file
jsr SYM.StoreGlobal Make sure last Global flushed
jsr CORE.ASMFile
bcs .9
>LDA.G ASM.PASS End of pass #2 ??
bne .1
jsr OUT.PrintStats
jsr CORE.Pass2Init
bcs .99
inc
sta (pData),y
jsr CORE.ASMFile
bcs .9
jsr SYM.Dump
bcs .99
clc
rts
.1 jsr SYM.Dump
jsr OUT.PrintStats
>LDYA L.MSG.END
>SYSCALL PutS
>LIBC PutS
lda #0 End of assembly, exit with no error
sec
rts
.2 jsr SRC.ParseLine
bcs .9
jmp OUT.PrintLine
.8 clc
rts
.9 pha
jsr OUT.PrintLineErr
pla
sec
rts
.99 rts
*--------------------------------------
CS.RUN.ARGS ldy #S.PS.ARGC
lda (pPS),y
jsr A2osX.GetPSy
beq .90
.1 inc ZPPtr1
.1 inc R1
lda ZPPtr1
>SYSCALL ArgV
lda R1
>LIBC ArgV
bcs .8
>STYA ZPPtr2
>STYA R2
lda (ZPPtr2)
lda (R2)
cmp #'-'
beq .2
>PUSHW ZPPtr2
>SS
>PUSHW R2
>PUSHWZ Allocate
>SYSCALL RealPath
>LIBC RealPath
>SR
bcs .99
txa
>STA.G SRC.hFILENAME
>STYA.G SRC.pFILENAME
bra .1
.2 ldy #2
lda (ZPPtr2),y
lda (R2),y
bne .90
dey
lda (ZPPtr2),y
lda (R2),y
cmp #'a'
bcc .20
jsr SRC.ToUpperCase
cmp #'z'+1
bcs .20
eor #$20
.20 cmp #'L'
cmp #'L'
bne .3
lda #$ff
>STA.G bListAll
bra .1
.3 cmp #'T'
bne .90
inc ZPPtr1
lda ZPPtr1
>SYSCALL ArgV
bcs .90
lda ZPPtr1
>STA.G ArgDstFile
bra .1
.8 >LDA.G SRC.hFILENAME
.8 >LDA.G SRC.pFILENAME+1
beq .90
clc
rts
.90 >PUSHW L.MSG.HELP
>PUSHBI 0
>SYSCALL PrintF
.90 >LDYA L.MSG.HELP
>LIBC PutS
lda #E.INV.ARGS
sec
.99 rts
.3 cmp #'T'
bne .90
inc R1
lda R1
>LIBC ArgV
bcs .90
>STYA.G DST.pFILENAME
jmp .1
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT >LDA.G SRC.Depth
beq .1
jsr FIO.FileClose
bra CS.QUIT
.1 >LDA.G DST.hREFNUM
beq .2
>SYSCALL FClose
.2 jsr MAC.Quit
CS.QUIT jsr MAC.Quit
jsr SYM.Quit
jsr FIO.Quit
ldy #ASM.hCPUFILE
jsr .7
ldy #SRC.hFILENAME
jsr .7
ldy #DST.hFILENAME
jsr .7
ldy #SRC.hLineBuf
jsr .7
ldy #SRC.hTmpBuf
.7 lda (pData),y
beq .8
>SYSCALL FreeMem
.8 clc
clc
rts
*---------------------------------------
.INB usr/src/bin/asm.s.core
.INB usr/src/bin/asm.s.dir
.INB usr/src/bin/asm.s.exp
.INB usr/src/bin/asm.s.fio
@ -481,8 +389,9 @@ CS.QUIT >LDA.G SRC.Depth
.INB usr/src/bin/asm.s.out
.INB usr/src/bin/asm.s.src
.INB usr/src/bin/asm.s.sym
*--------------------------------------
CS.END .EQ *
*---------------------------------------
CS.END
T.DIRECTIVES .PS "AC"
.PS "AS"
.PS "AT"
@ -531,14 +440,27 @@ T.DIRECTIVES .PS "AC"
*---------------------------------------
T.LI .PS "ON"
.PS "OFF"
.PS "CON"
.PS "CON" Conditional (DO) listed even if FALSE
.PS "COFF"
.PS "MON"
.PS "MON" Macro expanded whie Exec
.PS "MOFF"
.PS "XON"
.PS "XON" eXtra bytes listed if output > 3
.PS "XOFF"
.HS 00
*--------------------------------------
T.MODS .PS "#"
.PS "/"
.PS "^"
.PS "##"
.PS "//"
.PS "^^"
.PS "<"
.PS "<<"
.PS ">"
.HS 00
*--------------------------------------
T.MODS.LEN .HS 01010102020200000000
*--------------------------------------
DIR.EscChars .AS "abefnrtv"
.HS 5C27223F25 \'"?%
DIR.EscChars.L .EQ *-DIR.EscChars
@ -552,8 +474,8 @@ SRC.AM.RESERVED .PS "[](),"
DIR.SYS .AZ "SYS"
ASM.6502 .AZ "6502"
*---------------------------------------
MSG.HELP .CS "A2osX-Macro Assembler (S-C MASM 3.1 Dialect)\r\n"
.CS "Usage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\r\n"
MSG.START .CZ "\r\nA2osX-%d.%02d Macro Assembler (S-C MASM 3.1 Dialect)\r\n\r\n"
MSG.HELP .CS "Usage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\r\n"
.CS " -L : Override .LIST (C,M,X)OFF\r\n"
.CS " -T <target file> : Override .TF directive"
MSG.CRLF .CZ "\r\n"
@ -561,28 +483,40 @@ MSG.PASS .CZ "**** Pass:#%d"
MSG.SRC.FILE .CZ "**** Reading SRC File:%s"
MSG.OBJ.FILE .CZ "**** Writing OBJ File:%s, Type=%02x"
MSG.CPU.FILE .CZ "**** Loading CPU File:%s"
MSG.OUT0 .CZ "%H- "
MSG.OUT1 .CZ "%H-%h "
MSG.OUT2 .CZ "%H-%h %h "
MSG.OUT3 .CZ "%H-%h %h %h"
MSG.EQU0 .CZ " [ ?] "
MSG.EQU1 .CZ " [ %h] "
MSG.EQU2 .CZ " [ %h%h] "
MSG.EQU3 .CZ " [ %h%h%h] "
MSG.EQU4 .CZ " [%h%h%h%h] "
MSG.OUT0 .CZ "%H- "
MSG.OUT1 .CZ "%H-%h "
MSG.OUT2 .CZ "%H-%h %h "
MSG.OUT3 .CZ "%H-%h %h %h "
MSG.OUT4 .CZ "%H-%h %h %h %h"
MSG.EQU0 .CZ " [ 00] "
MSG.EQU1 .CZ " [ %h] "
MSG.EQU2 .CZ " [ %h%h] "
MSG.EQU3 .CZ " [ %h%h%h] "
MSG.EQU4 .CZ " [%h%h%h%h] "
MSG.LINENUM .CZ " %05D "
MSG.ERROR .CZ "**** Fatal Error $%h"
MSG.ERROR .CZ "**** Fatal Error [%h] "
MSG.SYMBOLS .CZ "**** Symbol Table:"
MSG.LSYMBOL .CZ " .%d=%h%h%h%h"
MSG.PSYMBOL .CZ " :%d(%d)=%h%h%h%h"
MSG.SUMMARY .CZ "\r\n**** Symbol Table Size : %5D Bytes.\r\n"
MSG.END .CZ "**** End Of Assembly."
MSG.WARN1 .CZ "**** WARN : Unoptimized adressing mode due to forward reference.\r\n"
MSG.SUMMARY .CZ "**** Symbol Table Size : %5D Bytes.\r\n"
MSG.STATS .CZ "**** Total lines : %u, Code lines : %u\r\n"
MSG.END .CZ "**** End Of Assembly.\r\n"
MSG.WARN1 .CZ "WARN:Unoptimized adressing mode due to forward reference."
.DO ASMDBG=1
MSG.DBG .CZ "\r\nCtxID=%d, ARG=%H%H <op> ACC=%H%H -> ACC %b [%h]\r\n"
MSG.ASMDBG .CZ "\r\nCtxID=%d, ARG=%H%H <op> ACC=%H%H -> ACC %b [%h]\r\n"
.FIN
.DO SYMDBG=1
MSG.SYMDBG .CZ "SymID=%H\r\n"
MSG.SYMDBGN .CZ "SymNew:%H(%02d),%b,V=%H%H"
MSG.SYMDBGG .CZ "SymGet:%H(%02d),%b,V=%H%H"
MSG.SYMDBGS .CZ "SymSto:%H(%02d),%b,V=%H%H"
MSG.SYMDBGU .CZ "SymUpd:%H(%02d),%b,V=%H%H"
MSG.SYMDBGAL .CZ "Sym++L:%H(%02d),%b,V=%H%H"
MSG.SYMDBGGL .CZ "Sym??L:%H(%02d),%b,V=%H%H"
MSG.SYMDBGL .CZ " .%d=%I"
MSG.SYMDBGP .CZ " %h:%d=%I"
.FIN
.DO EXPDBG=1
MSG.EXPDBG .CZ "ARG=%L, ACC=%L\r\n"
.FIN
*---------------------------------------
ASM.CPU.FILE .BS 65
@ -596,34 +530,34 @@ SRC.ARG .BS 4
SRC.ACCTMP .BS 4
SRC.AM.StrBuf .BS 32
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
bPause .BS 1
bListAll .BS 1
ArgDstFile .BS 1
SRC.hFILENAME .BS 1
SRC.hLineBuf .BS 1
SRC.hTmpBuf .BS 1
SRC.pFILENAME .BS 2
SRC.Depth .BS 1
SRC.hFILES .BS IN.MAXDEPTH
SRC.hFILETYPES .BS IN.MAXDEPTH
SRC.FILETYPES .BS IN.MAXDEPTH
SRC.pFILES .BS IN.MAXDEPTH*2
SRC.LINENUM .BS 2
SRC.AMID .BS 1
ASM.hCPUFILE .BS 1
DST.hFILENAME .BS 1
DST.hREFNUM .BS 1
DST.pFILENAME .BS 2
DST.pFILE .BS 2
DST.AUXTYPE .BS 2
EXP.Modifier .BS 1
EXP.Prefix .BS 1
EXP.Operator .BS 1
ASM.pCPUDEF .BS 2
ASM.StartTime .BS 4
ASM.EndTime .BS 4
ASM.TotalLines .BS 4
ASM.CodeLines .BS 4
ASM.PASS .BS 1
@ -638,41 +572,40 @@ ASM.LI.CON .BS 1
ASM.LI.MON .BS 1
ASM.LI.XON .BS 1
ASM.MA.ON .BS 1
ASM.PC .BS 4
ASM.PC.PH .BS 4
ASM.PC.DU .BS 4
SYM.hList .BS 1
SYM.hBuf .BS 1
SYM.BufPtr .BS 1
SYM.pList .BS 2
SYM.ID .BS 2
SYM.BufPtr .BS 1
SYM.bDirty .BS 1
FWR.hList .BS 1
FWR.pList .BS 2
FWR.ID .BS 2
MAC.hList .BS 1
MAC.hBuf .BS 1
EXP.Modifier .BS 1
EXP.Operator .BS 1
MAC.pList .BS 2
MAC.pBuf .BS 2
MAC.BufPtr .BS 1
MAC.ID .BS 2
MAC.bLearning .BS 1
MAC.hStk .BS 1
MAC.pStack .BS 2
MAC.StkPtr .BS 1
MAC.hArgBuf .BS 1
MAC.CtxID .BS 1
MAC.CtxNextID .BS 1
MAC.CtxStackPtr .BS 1
MAC.CtxStack .BS MA.MAXDEPTH
OUT.Byte .BS 1
OUT.PC .BS 4
OUT.BufCnt .BS 1
OUT.Buf .BS 4
OUT.bEquate .BS 1
OUT.LineCnt .BS 1
DS.END .ED
*---------------------------------------
.DO DS.END-DS.START>$FF
.DO DS.END>$FF
ERROR:DS too big
.FIN
*---------------------------------------

View File

@ -2,61 +2,61 @@ NEW
AUTO 3,1
*---------------------------------------
T.ADDR.MODES .EQ *
.DA #2,$$"R0"
.DA #2,$$"R1"
.DA #2,$$"R2"
.DA #2,$$"R3"
.DA #2,$$"R4"
.DA #2,$$"R5"
.DA #2,$$"R6"
.DA #2,$$"R7"
.DA #2,$$"R8"
.DA #2,$$"R9"
.DA #3,$$"R10"
.DA #3,$$"R11"
.DA #3,$$"R12"
.DA #3,$$"R13"
.DA #3,$$"R14"
.DA #3,$$"R15"
.DA #2,$$"aa"
.DA #3,$$"@R0"
.DA #3,$$"@R1"
.DA #3,$$"@R2"
.DA #3,$$"@R3"
.DA #3,$$"@R4"
.DA #3,$$"@R5"
.DA #3,$$"@R6"
.DA #3,$$"@R7"
.DA #3,$$"@R8"
.DA #3,$$"@R9"
.DA #4,$$"@R10"
.DA #4,$$"@R11"
.DA #4,$$"@R12"
.DA #4,$$"@R13"
.DA #4,$$"@R14"
.DA #4,$$"@R15"
.HS 00
.PS "R0"
.PS "R1"
.PS "R2"
.PS "R3"
.PS "R4"
.PS "R5"
.PS "R6"
.PS "R7"
.PS "R8"
.PS "R9"
.PS "R10"
.PS "R11"
.PS "R12"
.PS "R13"
.PS "R14"
.PS "R15"
.PS "aa"
.PS "@R0"
.PS "@R1"
.PS "@R2"
.PS "@R3"
.PS "@R4"
.PS "@R5"
.PS "@R6"
.PS "@R7"
.PS "@R8"
.PS "@R9"
.PS "@R10"
.PS "@R11"
.PS "@R12"
.PS "@R13"
.PS "@R14"
.PS "@R15"
.DA #0
*---------------------------------------
T.REGISTERS .EQ *
.DA #2,$$"R0"
.DA #2,$$"R1"
.DA #2,$$"R2"
.DA #2,$$"R3"
.DA #2,$$"R4"
.DA #2,$$"R5"
.DA #2,$$"R6"
.DA #2,$$"R7"
.DA #2,$$"R8"
.DA #2,$$"R9"
.DA #3,$$"R10"
.DA #3,$$"R11"
.DA #3,$$"R12"
.DA #3,$$"R13"
.DA #3,$$"R14"
.DA #3,$$"R15"
.HS 00
.PS "R0"
.PS "R1"
.PS "R2"
.PS "R3"
.PS "R4"
.PS "R5"
.PS "R6"
.PS "R7"
.PS "R8"
.PS "R9"
.PS "R10"
.PS "R11"
.PS "R12"
.PS "R13"
.PS "R14"
.PS "R15"
.DA #0
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.SW16.A
LOAD USR/SRC/BIN/ASM.SW16.S
SAVE usr/src/bin/asm.SW16.a
LOAD usr/src/bin/asm.SW16.s
ASM

View File

@ -3,339 +3,592 @@ NEW
*---------------------------------------
T.OPCODES .EQ *
ADD .DA ADD.E+1-*
.DA #3,$$"ADD"
.DA #1,#2,$$"A0"
.DA #2,#2,$$"A1"
.DA #3,#2,$$"A2"
.DA #4,#2,$$"A3"
.DA #5,#2,$$"A4"
.DA #6,#2,$$"A5"
.DA #7,#2,$$"A6"
.DA #8,#2,$$"A7"
.DA #9,#2,$$"A8"
.DA #10,#2,$$"A9"
.DA #11,#2,$$"AA"
.DA #12,#2,$$"AB"
.DA #13,#2,$$"AC"
.DA #14,#2,$$"AD"
.DA #15,#2,$$"AE"
.DA #16,#2,$$"AF"
ADD.E .HS 00
.PS "ADD"
.DA #1
.PS "A0"
.DA #2
.PS "A1"
.DA #3
.PS "A2"
.DA #4
.PS "A3"
.DA #5
.PS "A4"
.DA #6
.PS "A5"
.DA #7
.PS "A6"
.DA #8
.PS "A7"
.DA #9
.PS "A8"
.DA #10
.PS "A9"
.DA #11
.PS "AA"
.DA #12
.PS "AB"
.DA #13
.PS "AC"
.DA #14
.PS "AD"
.DA #15
.PS "AE"
.DA #16
.PS "AF"
ADD.E .DA #0
BC .DA BC.E+1-*
.DA #2,$$"BC"
.DA #17,#3,$$"03r"
BC.E .HS 00
.PS "BC"
.DA #17
.PS "03r"
BC.E .DA #0
BK .DA BK.E+1-*
.DA #2,$$"BK"
.DA #255,#2,$$"0A"
BK.E .HS 00
.PS "BK"
.DA #255
.PS "0A"
BK.E .DA #0
BM .DA BM.E+1-*
.DA #2,$$"BM"
.DA #17,#3,$$"05r"
BM.E .HS 00
.PS "BM"
.DA #17
.PS "05r"
BM.E .DA #0
BM1 .DA BM1.E+1-*
.DA #3,$$"BM1"
.DA #17,#3,$$"08r"
BM1.E .HS 00
.PS "BM1"
.DA #17
.PS "08r"
BM1.E .DA #0
BNC .DA BNC.E+1-*
.DA #3,$$"BNC"
.DA #17,#3,$$"02r"
BNC.E .HS 00
.PS "BNC"
.DA #17
.PS "02r"
BNC.E .DA #0
BNM1 .DA BNM1.E+1-*
.DA #4,$$"BNM1"
.DA #17,#3,$$"09r"
BNM1.E .HS 00
.PS "BNM1"
.DA #17
.PS "09r"
BNM1.E .DA #0
BNZ .DA BNZ.E+1-*
.DA #3,$$"BNZ"
.DA #17,#3,$$"07r"
BNZ.E .HS 00
.PS "BNZ"
.DA #17
.PS "07r"
BNZ.E .DA #0
BP .DA BP.E+1-*
.DA #2,$$"BP"
.DA #17,#3,$$"04r"
BP.E .HS 00
.PS "BP"
.DA #17
.PS "04r"
BP.E .DA #0
BR .DA BR.E+1-*
.DA #2,$$"BR"
.DA #17,#3,$$"01r"
BR.E .HS 00
.PS "BR"
.DA #17
.PS "01r"
BR.E .DA #0
BS .DA BS.E+1-*
.DA #2,$$"BS"
.DA #17,#3,$$"0Dr"
BS.E .HS 00
.PS "BS"
.DA #17
.PS "0Dr"
BS.E .DA #0
BZ .DA BZ.E+1-*
.DA #2,$$"BZ"
.DA #17,#3,$$"06r"
BZ.E .HS 00
.PS "BZ"
.DA #17
.PS "06r"
BZ.E .DA #0
CPR .DA CPR.E+1-*
.DA #3,$$"CPR"
.DA #1,#2,$$"D0"
.DA #2,#2,$$"D1"
.DA #3,#2,$$"D2"
.DA #4,#2,$$"D3"
.DA #5,#2,$$"D4"
.DA #6,#2,$$"D5"
.DA #7,#2,$$"D6"
.DA #8,#2,$$"D7"
.DA #9,#2,$$"D8"
.DA #10,#2,$$"D9"
.DA #11,#2,$$"DA"
.DA #12,#2,$$"DB"
.DA #13,#2,$$"DC"
.DA #14,#2,$$"DD"
.DA #15,#2,$$"DE"
.DA #16,#2,$$"DF"
CPR.E .HS 00
.PS "CPR"
.DA #1
.PS "D0"
.DA #2
.PS "D1"
.DA #3
.PS "D2"
.DA #4
.PS "D3"
.DA #5
.PS "D4"
.DA #6
.PS "D5"
.DA #7
.PS "D6"
.DA #8
.PS "D7"
.DA #9
.PS "D8"
.DA #10
.PS "D9"
.DA #11
.PS "DA"
.DA #12
.PS "DB"
.DA #13
.PS "DC"
.DA #14
.PS "DD"
.DA #15
.PS "DE"
.DA #16
.PS "DF"
CPR.E .DA #0
DCR .DA DCR.E+1-*
.DA #3,$$"DCR"
.DA #1,#2,$$"F0"
.DA #2,#2,$$"F1"
.DA #3,#2,$$"F2"
.DA #4,#2,$$"F3"
.DA #5,#2,$$"F4"
.DA #6,#2,$$"F5"
.DA #7,#2,$$"F6"
.DA #8,#2,$$"F7"
.DA #9,#2,$$"F8"
.DA #10,#2,$$"F9"
.DA #11,#2,$$"FA"
.DA #12,#2,$$"FB"
.DA #13,#2,$$"FC"
.DA #14,#2,$$"FD"
.DA #15,#2,$$"FE"
.DA #16,#2,$$"FF"
DCR.E .HS 00
.PS "DCR"
.DA #1
.PS "F0"
.DA #2
.PS "F1"
.DA #3
.PS "F2"
.DA #4
.PS "F3"
.DA #5
.PS "F4"
.DA #6
.PS "F5"
.DA #7
.PS "F6"
.DA #8
.PS "F7"
.DA #9
.PS "F8"
.DA #10
.PS "F9"
.DA #11
.PS "FA"
.DA #12
.PS "FB"
.DA #13
.PS "FC"
.DA #14
.PS "FD"
.DA #15
.PS "FE"
.DA #16
.PS "FF"
DCR.E .DA #0
INR .DA INR.E+1-*
.DA #3,$$"INR"
.DA #1,#2,$$"E0"
.DA #2,#2,$$"E1"
.DA #3,#2,$$"E2"
.DA #4,#2,$$"E3"
.DA #5,#2,$$"E4"
.DA #6,#2,$$"E5"
.DA #7,#2,$$"E6"
.DA #8,#2,$$"E7"
.DA #9,#2,$$"E8"
.DA #10,#2,$$"E9"
.DA #11,#2,$$"EA"
.DA #12,#2,$$"EB"
.DA #13,#2,$$"EC"
.DA #14,#2,$$"ED"
.DA #15,#2,$$"EE"
.DA #16,#2,$$"EF"
INR.E .HS 00
.PS "INR"
.DA #1
.PS "E0"
.DA #2
.PS "E1"
.DA #3
.PS "E2"
.DA #4
.PS "E3"
.DA #5
.PS "E4"
.DA #6
.PS "E5"
.DA #7
.PS "E6"
.DA #8
.PS "E7"
.DA #9
.PS "E8"
.DA #10
.PS "E9"
.DA #11
.PS "EA"
.DA #12
.PS "EB"
.DA #13
.PS "EC"
.DA #14
.PS "ED"
.DA #15
.PS "EE"
.DA #16
.PS "EF"
INR.E .DA #0
LD .DA LD.E+1-*
.DA #2,$$"LD"
.DA #1,#2,$$"20"
.DA #2,#2,$$"21"
.DA #3,#2,$$"22"
.DA #4,#2,$$"23"
.DA #5,#2,$$"24"
.DA #6,#2,$$"25"
.DA #7,#2,$$"26"
.DA #8,#2,$$"27"
.DA #9,#2,$$"28"
.DA #10,#2,$$"29"
.DA #11,#2,$$"2A"
.DA #12,#2,$$"2B"
.DA #13,#2,$$"2C"
.DA #14,#2,$$"2D"
.DA #15,#2,$$"2E"
.DA #16,#2,$$"2F"
.DA #18,#2,$$"40"
.DA #19,#2,$$"41"
.DA #20,#2,$$"42"
.DA #21,#2,$$"43"
.DA #22,#2,$$"44"
.DA #23,#2,$$"45"
.DA #24,#2,$$"46"
.DA #25,#2,$$"47"
.DA #26,#2,$$"48"
.DA #27,#2,$$"49"
.DA #28,#2,$$"4A"
.DA #29,#2,$$"4B"
.DA #30,#2,$$"4C"
.DA #31,#2,$$"4D"
.DA #32,#2,$$"4E"
.DA #33,#2,$$"4F"
LD.E .HS 00
.PS "LD"
.DA #1
.PS "20"
.DA #2
.PS "21"
.DA #3
.PS "22"
.DA #4
.PS "23"
.DA #5
.PS "24"
.DA #6
.PS "25"
.DA #7
.PS "26"
.DA #8
.PS "27"
.DA #9
.PS "28"
.DA #10
.PS "29"
.DA #11
.PS "2A"
.DA #12
.PS "2B"
.DA #13
.PS "2C"
.DA #14
.PS "2D"
.DA #15
.PS "2E"
.DA #16
.PS "2F"
.DA #18
.PS "40"
.DA #19
.PS "41"
.DA #20
.PS "42"
.DA #21
.PS "43"
.DA #22
.PS "44"
.DA #23
.PS "45"
.DA #24
.PS "46"
.DA #25
.PS "47"
.DA #26
.PS "48"
.DA #27
.PS "49"
.DA #28
.PS "4A"
.DA #29
.PS "4B"
.DA #30
.PS "4C"
.DA #31
.PS "4D"
.DA #32
.PS "4E"
.DA #33
.PS "4F"
LD.E .DA #0
LDD .DA LDD.E+1-*
.DA #3,$$"LDD"
.DA #18,#2,$$"60"
.DA #19,#2,$$"61"
.DA #20,#2,$$"62"
.DA #21,#2,$$"63"
.DA #22,#2,$$"64"
.DA #23,#2,$$"65"
.DA #24,#2,$$"66"
.DA #25,#2,$$"67"
.DA #26,#2,$$"68"
.DA #27,#2,$$"69"
.DA #28,#2,$$"6A"
.DA #29,#2,$$"6B"
.DA #30,#2,$$"6C"
.DA #31,#2,$$"6D"
.DA #32,#2,$$"6E"
.DA #33,#2,$$"6F"
LDD.E .HS 00
.PS "LDD"
.DA #18
.PS "60"
.DA #19
.PS "61"
.DA #20
.PS "62"
.DA #21
.PS "63"
.DA #22
.PS "64"
.DA #23
.PS "65"
.DA #24
.PS "66"
.DA #25
.PS "67"
.DA #26
.PS "68"
.DA #27
.PS "69"
.DA #28
.PS "6A"
.DA #29
.PS "6B"
.DA #30
.PS "6C"
.DA #31
.PS "6D"
.DA #32
.PS "6E"
.DA #33
.PS "6F"
LDD.E .DA #0
POP .DA POP.E+1-*
.DA #3,$$"POP"
.DA #18,#2,$$"80"
.DA #19,#2,$$"81"
.DA #20,#2,$$"82"
.DA #21,#2,$$"83"
.DA #22,#2,$$"84"
.DA #23,#2,$$"85"
.DA #24,#2,$$"86"
.DA #25,#2,$$"87"
.DA #26,#2,$$"88"
.DA #27,#2,$$"89"
.DA #28,#2,$$"8A"
.DA #29,#2,$$"8B"
.DA #30,#2,$$"8C"
.DA #31,#2,$$"8D"
.DA #32,#2,$$"8E"
.DA #33,#2,$$"8F"
POP.E .HS 00
.PS "POP"
.DA #18
.PS "80"
.DA #19
.PS "81"
.DA #20
.PS "82"
.DA #21
.PS "83"
.DA #22
.PS "84"
.DA #23
.PS "85"
.DA #24
.PS "86"
.DA #25
.PS "87"
.DA #26
.PS "88"
.DA #27
.PS "89"
.DA #28
.PS "8A"
.DA #29
.PS "8B"
.DA #30
.PS "8C"
.DA #31
.PS "8D"
.DA #32
.PS "8E"
.DA #33
.PS "8F"
POP.E .DA #0
POPD .DA POPD.E+1-*
.DA #4,$$"POPD"
.DA #18,#2,$$"C0"
.DA #19,#2,$$"C1"
.DA #20,#2,$$"C2"
.DA #21,#2,$$"C3"
.DA #22,#2,$$"C4"
.DA #23,#2,$$"C5"
.DA #24,#2,$$"C6"
.DA #25,#2,$$"C7"
.DA #26,#2,$$"C8"
.DA #27,#2,$$"C9"
.DA #28,#2,$$"CA"
.DA #29,#2,$$"CB"
.DA #30,#2,$$"CC"
.DA #31,#2,$$"CD"
.DA #32,#2,$$"CE"
.DA #33,#2,$$"CF"
POPD.E .HS 00
.PS "POPD"
.DA #18
.PS "C0"
.DA #19
.PS "C1"
.DA #20
.PS "C2"
.DA #21
.PS "C3"
.DA #22
.PS "C4"
.DA #23
.PS "C5"
.DA #24
.PS "C6"
.DA #25
.PS "C7"
.DA #26
.PS "C8"
.DA #27
.PS "C9"
.DA #28
.PS "CA"
.DA #29
.PS "CB"
.DA #30
.PS "CC"
.DA #31
.PS "CD"
.DA #32
.PS "CE"
.DA #33
.PS "CF"
POPD.E .DA #0
RS .DA RS.E+1-*
.DA #2,$$"RS"
.DA #255,#2,$$"0B"
RS.E .HS 00
.PS "RS"
.DA #255
.PS "0B"
RS.E .DA #0
RTN .DA RTN.E+1-*
.DA #3,$$"RTN"
.DA #255,#3,$$"00r"
RTN.E .HS 00
.PS "RTN"
.DA #255
.PS "00r"
RTN.E .DA #0
SET .DA SET.E+1-*
.DA #3,$$"SET"
.DA #1,#2,$$"10"
.DA #2,#2,$$"11"
.DA #3,#2,$$"12"
.DA #4,#2,$$"13"
.DA #5,#2,$$"14"
.DA #6,#2,$$"15"
.DA #7,#2,$$"16"
.DA #8,#2,$$"17"
.DA #9,#2,$$"18"
.DA #10,#2,$$"19"
.DA #11,#2,$$"1A"
.DA #12,#2,$$"1B"
.DA #13,#2,$$"1C"
.DA #14,#2,$$"1D"
.DA #15,#2,$$"1E"
.DA #16,#2,$$"1D"
SET.E .HS 00
.PS "SET"
.DA #1
.PS "10"
.DA #2
.PS "11"
.DA #3
.PS "12"
.DA #4
.PS "13"
.DA #5
.PS "14"
.DA #6
.PS "15"
.DA #7
.PS "16"
.DA #8
.PS "17"
.DA #9
.PS "18"
.DA #10
.PS "19"
.DA #11
.PS "1A"
.DA #12
.PS "1B"
.DA #13
.PS "1C"
.DA #14
.PS "1D"
.DA #15
.PS "1E"
.DA #16
.PS "1D"
SET.E .DA #0
ST .DA ST.E+1-*
.DA #2,$$"ST"
.DA #1,#2,$$"30"
.DA #2,#2,$$"31"
.DA #3,#2,$$"32"
.DA #4,#2,$$"33"
.DA #5,#2,$$"34"
.DA #6,#2,$$"35"
.DA #7,#2,$$"36"
.DA #8,#2,$$"37"
.DA #9,#2,$$"38"
.DA #10,#2,$$"39"
.DA #11,#2,$$"3A"
.DA #12,#2,$$"3B"
.DA #13,#2,$$"3C"
.DA #14,#2,$$"3D"
.DA #15,#2,$$"3E"
.DA #16,#2,$$"3F"
.DA #18,#2,$$"50"
.DA #19,#2,$$"51"
.DA #20,#2,$$"52"
.DA #21,#2,$$"53"
.DA #22,#2,$$"54"
.DA #23,#2,$$"55"
.DA #24,#2,$$"56"
.DA #25,#2,$$"57"
.DA #26,#2,$$"58"
.DA #27,#2,$$"59"
.DA #28,#2,$$"5A"
.DA #29,#2,$$"5B"
.DA #30,#2,$$"5C"
.DA #31,#2,$$"5D"
.DA #32,#2,$$"5E"
.DA #33,#2,$$"5F"
ST.E .HS 00
.PS "ST"
.DA #1
.PS "30"
.DA #2
.PS "31"
.DA #3
.PS "32"
.DA #4
.PS "33"
.DA #5
.PS "34"
.DA #6
.PS "35"
.DA #7
.PS "36"
.DA #8
.PS "37"
.DA #9
.PS "38"
.DA #10
.PS "39"
.DA #11
.PS "3A"
.DA #12
.PS "3B"
.DA #13
.PS "3C"
.DA #14
.PS "3D"
.DA #15
.PS "3E"
.DA #16
.PS "3F"
.DA #18
.PS "50"
.DA #19
.PS "51"
.DA #20
.PS "52"
.DA #21
.PS "53"
.DA #22
.PS "54"
.DA #23
.PS "55"
.DA #24
.PS "56"
.DA #25
.PS "57"
.DA #26
.PS "58"
.DA #27
.PS "59"
.DA #28
.PS "5A"
.DA #29
.PS "5B"
.DA #30
.PS "5C"
.DA #31
.PS "5D"
.DA #32
.PS "5E"
.DA #33
.PS "5F"
ST.E .DA #0
STD .DA STD.E+1-*
.DA #3,$$"STD"
.DA #18,#2,$$"70"
.DA #19,#2,$$"71"
.DA #20,#2,$$"72"
.DA #21,#2,$$"73"
.DA #22,#2,$$"74"
.DA #23,#2,$$"75"
.DA #24,#2,$$"76"
.DA #25,#2,$$"77"
.DA #26,#2,$$"78"
.DA #27,#2,$$"79"
.DA #28,#2,$$"7A"
.DA #29,#2,$$"7B"
.DA #30,#2,$$"7C"
.DA #31,#2,$$"7D"
.DA #32,#2,$$"7E"
.DA #33,#2,$$"7F"
STD.E .HS 00
.PS "STD"
.DA #18
.PS "70"
.DA #19
.PS "71"
.DA #20
.PS "72"
.DA #21
.PS "73"
.DA #22
.PS "74"
.DA #23
.PS "75"
.DA #24
.PS "76"
.DA #25
.PS "77"
.DA #26
.PS "78"
.DA #27
.PS "79"
.DA #28
.PS "7A"
.DA #29
.PS "7B"
.DA #30
.PS "7C"
.DA #31
.PS "7D"
.DA #32
.PS "7E"
.DA #33
.PS "7F"
STD.E .DA #0
STP .DA STP.E+1-*
.DA #3,$$"STP"
.DA #18,#2,$$"90"
.DA #19,#2,$$"91"
.DA #20,#2,$$"92"
.DA #21,#2,$$"93"
.DA #22,#2,$$"94"
.DA #23,#2,$$"95"
.DA #24,#2,$$"96"
.DA #25,#2,$$"97"
.DA #26,#2,$$"98"
.DA #27,#2,$$"99"
.DA #28,#2,$$"9A"
.DA #29,#2,$$"9B"
.DA #30,#2,$$"9C"
.DA #31,#2,$$"9D"
.DA #32,#2,$$"9E"
.DA #33,#2,$$"9F"
STP.E .HS 00
.PS "STP"
.DA #18
.PS "90"
.DA #19
.PS "91"
.DA #20
.PS "92"
.DA #21
.PS "93"
.DA #22
.PS "94"
.DA #23
.PS "95"
.DA #24
.PS "96"
.DA #25
.PS "97"
.DA #26
.PS "98"
.DA #27
.PS "99"
.DA #28
.PS "9A"
.DA #29
.PS "9B"
.DA #30
.PS "9C"
.DA #31
.PS "9D"
.DA #32
.PS "9E"
.DA #33
.PS "9F"
STP.E .DA #0
SUB .DA SUB.E+1-*
.DA #3,$$"SUB"
.DA #1,#2,$$"B0"
.DA #2,#2,$$"B1"
.DA #3,#2,$$"B2"
.DA #4,#2,$$"B3"
.DA #5,#2,$$"B4"
.DA #6,#2,$$"B5"
.DA #7,#2,$$"B6"
.DA #8,#2,$$"B7"
.DA #9,#2,$$"B8"
.DA #10,#2,$$"B9"
.DA #11,#2,$$"BA"
.DA #12,#2,$$"BB"
.DA #13,#2,$$"BC"
.DA #14,#2,$$"BD"
.DA #15,#2,$$"BE"
.DA #16,#2,$$"BF"
SUB.E .HS 00
.HS 0000
.PS "SUB"
.DA #1
.PS "B0"
.DA #2
.PS "B1"
.DA #3
.PS "B2"
.DA #4
.PS "B3"
.DA #5
.PS "B4"
.DA #6
.PS "B5"
.DA #7
.PS "B6"
.DA #8
.PS "B7"
.DA #9
.PS "B8"
.DA #10
.PS "B9"
.DA #11
.PS "BA"
.DA #12
.PS "BB"
.DA #13
.PS "BC"
.DA #14
.PS "BD"
.DA #15
.PS "BE"
.DA #16
.PS "BF"
SUB.E .DA #0
.DA 0
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.SW16.O
LOAD USR/SRC/BIN/ASM.SW16.S
SAVE usr/src/bin/asm.SW16.o
LOAD usr/src/bin/asm.SW16.s
ASM

View File

@ -8,9 +8,9 @@ NEW
.DA T.REGISTERS
.DA T.OPCODES
*---------------------------------------
.INB USR/SRC/BIN/ASM.SW16.O
.INB USR/SRC/BIN/ASM.SW16.A
.INB usr/src/bin/asm.SW16.o
.INB usr/src/bin/asm.SW16.a
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.SW16.S
SAVE usr/src/bin/asm.SW16.s
ASM

View File

@ -2,213 +2,213 @@ NEW
AUTO 3,1
*---------------------------------------
T.ADDR.MODES .EQ *
.DA #6,$$"A,(HL)"
.DA #8,$$"A,(IX+a)"
.DA #8,$$"A,(IY+a)"
.DA #3,$$"A,A"
.DA #3,$$"A,a"
.DA #3,$$"A,B"
.DA #3,$$"A,C"
.DA #3,$$"A,D"
.DA #3,$$"A,E"
.DA #3,$$"A,H"
.DA #3,$$"A,L"
.DA #5,$$"HL,BC"
.DA #5,$$"HL,DE"
.DA #5,$$"HL,HL"
.DA #5,$$"HL,SP"
.DA #5,$$"IX,BC"
.DA #5,$$"IX,DE"
.DA #5,$$"IX,IX"
.DA #5,$$"IX,SP"
.DA #5,$$"IY,BC"
.DA #5,$$"IY,DE"
.DA #5,$$"IY,IY"
.DA #5,$$"IY,SP"
.DA #4,$$"(HL)"
.DA #6,$$"(IX+a)"
.DA #6,$$"(IY+a)"
.DA #1,$$"A"
.DA #1,$$"a"
.DA #1,$$"B"
.DA #1,$$"C"
.DA #1,$$"D"
.DA #1,$$"E"
.DA #1,$$"H"
.DA #1,$$"L"
.DA #2,$$"aa"
.DA #2,$$"BC"
.DA #2,$$"DE"
.DA #2,$$"HL"
.DA #2,$$"IX"
.DA #2,$$"IY"
.DA #2,$$"SP"
.DA #7,$$"(SP),HL"
.DA #7,$$"(SP),IX"
.DA #7,$$"(SP),IY"
.DA #5,$$"DE,HL"
.DA #5,$$"A,(a)"
.DA #5,$$"A,(C)"
.DA #5,$$"B,(C)"
.DA #5,$$"C,(C)"
.DA #5,$$"D,(C)"
.DA #5,$$"E,(C)"
.DA #5,$$"H,(C)"
.DA #5,$$"L,(C)"
.DA #4,$$"(IX)"
.DA #4,$$"(IY)"
.DA #6,$$"(aa),A"
.DA #7,$$"(aa),BC"
.DA #7,$$"(aa),DE"
.DA #7,$$"(aa),HL"
.DA #7,$$"(aa),IX"
.DA #7,$$"(aa),IY"
.DA #7,$$"(aa),SP"
.DA #6,$$"(BC),A"
.DA #6,$$"(DE),A"
.DA #6,$$"(HL),A"
.DA #6,$$"(HL),a"
.DA #6,$$"(HL),B"
.DA #6,$$"(HL),C"
.DA #6,$$"(HL),D"
.DA #6,$$"(HL),E"
.DA #6,$$"(HL),H"
.DA #6,$$"(HL),L"
.DA #8,$$"(IX+a),A"
.DA #8,$$"(IX+a),a"
.DA #8,$$"(IX+a),B"
.DA #8,$$"(IX+a),C"
.DA #8,$$"(IX+a),D"
.DA #8,$$"(IX+a),E"
.DA #8,$$"(IX+a),H"
.DA #8,$$"(IX+a),L"
.DA #8,$$"(IY+a),A"
.DA #8,$$"(IY+a),a"
.DA #8,$$"(IY+a),B"
.DA #8,$$"(IY+a),C"
.DA #8,$$"(IY+a),D"
.DA #8,$$"(IY+a),E"
.DA #8,$$"(IY+a),H"
.DA #8,$$"(IY+a),L"
.DA #6,$$"A,(aa)"
.DA #6,$$"A,(BC)"
.DA #6,$$"A,(DE)"
.DA #3,$$"A,I"
.DA #3,$$"A,R"
.DA #6,$$"B,(HL)"
.DA #8,$$"B,(IX+a)"
.DA #8,$$"B,(IY+a)"
.DA #3,$$"B,A"
.DA #3,$$"B,a"
.DA #3,$$"B,B"
.DA #3,$$"B,C"
.DA #3,$$"B,D"
.DA #3,$$"B,E"
.DA #3,$$"B,H"
.DA #3,$$"B,L"
.DA #7,$$"BC,(aa)"
.DA #5,$$"BC,aa"
.DA #6,$$"C,(HL)"
.DA #8,$$"C,(IX+a)"
.DA #8,$$"C,(IY+a)"
.DA #3,$$"C,A"
.DA #3,$$"C,a"
.DA #3,$$"C,B"
.DA #3,$$"C,C"
.DA #3,$$"C,D"
.DA #3,$$"C,E"
.DA #3,$$"C,H"
.DA #3,$$"C,L"
.DA #6,$$"D,(HL)"
.DA #8,$$"D,(IX+a)"
.DA #8,$$"D,(IY+a)"
.DA #3,$$"D,A"
.DA #3,$$"D,a"
.DA #3,$$"D,B"
.DA #3,$$"D,C"
.DA #3,$$"D,D"
.DA #3,$$"D,E"
.DA #3,$$"D,H"
.DA #3,$$"D,L"
.DA #7,$$"DE,(aa)"
.DA #5,$$"DE,aa"
.DA #6,$$"E,(HL)"
.DA #8,$$"E,(IX+a)"
.DA #8,$$"E,(IY+a)"
.DA #3,$$"E,A"
.DA #3,$$"E,a"
.DA #3,$$"E,B"
.DA #3,$$"E,C"
.DA #3,$$"E,D"
.DA #3,$$"E,E"
.DA #3,$$"E,H"
.DA #3,$$"E,L"
.DA #6,$$"H,(HL)"
.DA #8,$$"H,(IX+a)"
.DA #8,$$"H,(IY+a)"
.DA #3,$$"H,A"
.DA #3,$$"H,a"
.DA #3,$$"H,B"
.DA #3,$$"H,C"
.DA #3,$$"H,D"
.DA #3,$$"H,E"
.DA #3,$$"H,H"
.DA #3,$$"H,L"
.DA #7,$$"HL,(aa)"
.DA #5,$$"HL,aa"
.DA #3,$$"I,A"
.DA #7,$$"IX,(aa)"
.DA #5,$$"IX,aa"
.DA #7,$$"IY,(aa)"
.DA #5,$$"IY,aa"
.DA #6,$$"L,(HL)"
.DA #8,$$"L,(IX+a)"
.DA #8,$$"L,(IY+a)"
.DA #3,$$"L,A"
.DA #3,$$"L,a"
.DA #3,$$"L,B"
.DA #3,$$"L,C"
.DA #3,$$"L,D"
.DA #3,$$"L,E"
.DA #3,$$"L,H"
.DA #3,$$"L,L"
.DA #3,$$"R,A"
.DA #7,$$"SP,(aa)"
.DA #5,$$"SP,aa"
.DA #5,$$"SP,HL"
.DA #5,$$"SP,IX"
.DA #5,$$"SP,IY"
.DA #5,$$"(a),A"
.DA #5,$$"(C),A"
.DA #5,$$"(C),B"
.DA #5,$$"(C),C"
.DA #5,$$"(C),D"
.DA #5,$$"(C),E"
.DA #5,$$"(C),H"
.DA #5,$$"(C),L"
.DA #2,$$"AF"
.HS 00
.PS "A,(HL)"
.PS "A,(IX+a)"
.PS "A,(IY+a)"
.PS "A,A"
.PS "A,a"
.PS "A,B"
.PS "A,C"
.PS "A,D"
.PS "A,E"
.PS "A,H"
.PS "A,L"
.PS "HL,BC"
.PS "HL,DE"
.PS "HL,HL"
.PS "HL,SP"
.PS "IX,BC"
.PS "IX,DE"
.PS "IX,IX"
.PS "IX,SP"
.PS "IY,BC"
.PS "IY,DE"
.PS "IY,IY"
.PS "IY,SP"
.PS "(HL)"
.PS "(IX+a)"
.PS "(IY+a)"
.PS "A"
.PS "a"
.PS "B"
.PS "C"
.PS "D"
.PS "E"
.PS "H"
.PS "L"
.PS "aa"
.PS "BC"
.PS "DE"
.PS "HL"
.PS "IX"
.PS "IY"
.PS "SP"
.PS "(SP),HL"
.PS "(SP),IX"
.PS "(SP),IY"
.PS "DE,HL"
.PS "A,(a)"
.PS "A,(C)"
.PS "B,(C)"
.PS "C,(C)"
.PS "D,(C)"
.PS "E,(C)"
.PS "H,(C)"
.PS "L,(C)"
.PS "(IX)"
.PS "(IY)"
.PS "(aa),A"
.PS "(aa),BC"
.PS "(aa),DE"
.PS "(aa),HL"
.PS "(aa),IX"
.PS "(aa),IY"
.PS "(aa),SP"
.PS "(BC),A"
.PS "(DE),A"
.PS "(HL),A"
.PS "(HL),a"
.PS "(HL),B"
.PS "(HL),C"
.PS "(HL),D"
.PS "(HL),E"
.PS "(HL),H"
.PS "(HL),L"
.PS "(IX+a),A"
.PS "(IX+a),a"
.PS "(IX+a),B"
.PS "(IX+a),C"
.PS "(IX+a),D"
.PS "(IX+a),E"
.PS "(IX+a),H"
.PS "(IX+a),L"
.PS "(IY+a),A"
.PS "(IY+a),a"
.PS "(IY+a),B"
.PS "(IY+a),C"
.PS "(IY+a),D"
.PS "(IY+a),E"
.PS "(IY+a),H"
.PS "(IY+a),L"
.PS "A,(aa)"
.PS "A,(BC)"
.PS "A,(DE)"
.PS "A,I"
.PS "A,R"
.PS "B,(HL)"
.PS "B,(IX+a)"
.PS "B,(IY+a)"
.PS "B,A"
.PS "B,a"
.PS "B,B"
.PS "B,C"
.PS "B,D"
.PS "B,E"
.PS "B,H"
.PS "B,L"
.PS "BC,(aa)"
.PS "BC,aa"
.PS "C,(HL)"
.PS "C,(IX+a)"
.PS "C,(IY+a)"
.PS "C,A"
.PS "C,a"
.PS "C,B"
.PS "C,C"
.PS "C,D"
.PS "C,E"
.PS "C,H"
.PS "C,L"
.PS "D,(HL)"
.PS "D,(IX+a)"
.PS "D,(IY+a)"
.PS "D,A"
.PS "D,a"
.PS "D,B"
.PS "D,C"
.PS "D,D"
.PS "D,E"
.PS "D,H"
.PS "D,L"
.PS "DE,(aa)"
.PS "DE,aa"
.PS "E,(HL)"
.PS "E,(IX+a)"
.PS "E,(IY+a)"
.PS "E,A"
.PS "E,a"
.PS "E,B"
.PS "E,C"
.PS "E,D"
.PS "E,E"
.PS "E,H"
.PS "E,L"
.PS "H,(HL)"
.PS "H,(IX+a)"
.PS "H,(IY+a)"
.PS "H,A"
.PS "H,a"
.PS "H,B"
.PS "H,C"
.PS "H,D"
.PS "H,E"
.PS "H,H"
.PS "H,L"
.PS "HL,(aa)"
.PS "HL,aa"
.PS "I,A"
.PS "IX,(aa)"
.PS "IX,aa"
.PS "IY,(aa)"
.PS "IY,aa"
.PS "L,(HL)"
.PS "L,(IX+a)"
.PS "L,(IY+a)"
.PS "L,A"
.PS "L,a"
.PS "L,B"
.PS "L,C"
.PS "L,D"
.PS "L,E"
.PS "L,H"
.PS "L,L"
.PS "R,A"
.PS "SP,(aa)"
.PS "SP,aa"
.PS "SP,HL"
.PS "SP,IX"
.PS "SP,IY"
.PS "(a),A"
.PS "(C),A"
.PS "(C),B"
.PS "(C),C"
.PS "(C),D"
.PS "(C),E"
.PS "(C),H"
.PS "(C),L"
.PS "AF"
.DA #0
*---------------------------------------
T.REGISTERS .EQ *
.DA #1,$$"A"
.DA #2,$$"HL"
.DA #2,$$"IX"
.DA #2,$$"IY"
.DA #1,$$"B"
.DA #1,$$"C"
.DA #1,$$"D"
.DA #1,$$"E"
.DA #1,$$"H"
.DA #1,$$"L"
.DA #2,$$"BC"
.DA #2,$$"DE"
.DA #2,$$"SP"
.DA #1,$$"I"
.DA #1,$$"R"
.DA #2,$$"AF"
.HS 00
.PS "A"
.PS "HL"
.PS "IX"
.PS "IY"
.PS "B"
.PS "C"
.PS "D"
.PS "E"
.PS "H"
.PS "L"
.PS "BC"
.PS "DE"
.PS "SP"
.PS "I"
.PS "R"
.PS "AF"
.DA #0
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.Z80.A
LOAD USR/SRC/BIN/ASM.Z80.S
SAVE usr/src/bin/asm.Z80.a
LOAD usr/src/bin/asm.Z80.s
ASM

File diff suppressed because it is too large Load Diff

View File

@ -8,9 +8,9 @@ NEW
.DA T.REGISTERS
.DA T.OPCODES
*---------------------------------------
.INB USR/SRC/BIN/ASM.Z80.O
.INB USR/SRC/BIN/ASM.Z80.A
.INB usr/src/bin/asm.Z80.o
.INB usr/src/bin/asm.Z80.a
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.Z80.S
SAVE usr/src/bin/asm.Z80.s
ASM

View File

@ -59,7 +59,7 @@ CS.RUN jsr CS.RUN.GetInfo
jsr CS.RUN.GetMyZone
>LDYAI 1024
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA BufPtr
@ -91,12 +91,12 @@ CS.RUN.GetInfo >LEA.G P.GetInfo
>PUSHB.G P.GetInfo+$0B ROM VERSION
>PUSHBI 7
>SYSCALL PrintF
>LIBC PrintF
rts
.9 pha
>LDYA L.MSG.NOATK
>SYSCALL PutS
>LIBC PutS
pla
sec
rts
@ -117,7 +117,7 @@ CS.RUN.GetMyZone
>PUSHW L.MSG.MYZONE
>PUSHEA.G ZoneBuf
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
.9 rts
*--------------------------------------
CS.RUN.GetZoneList
@ -142,7 +142,7 @@ CS.RUN.GetZoneList
bcs .9
>LDYA L.MSG.ZONES
>SYSCALL PutS
>LIBC PutS
>LDA.G P.GetZoneList+$13 Zone #
beq .8
@ -178,7 +178,7 @@ CS.RUN.LookupName
.99 bcs .9
>LDYA L.MSG.DUMP0
>SYSCALL PutS
>LIBC PutS
bcs .9
>LDA.G P.LookupName+$17
@ -215,7 +215,7 @@ CS.RUN.LookupName
bne .3
>PUSHBI 11
>SYSCALL PrintF
>LIBC PrintF
bcs .9
>DEC.G P.LookupName+$17
@ -250,7 +250,7 @@ CS.RUN.GOATLK >STYA ZPAtlkParams
>PUSHA
>PUSHBI 3
>SYSCALL PrintF
>LIBC PrintF
pla
sec
@ -263,7 +263,7 @@ CS.RUN.PrintListYAX
>PUSHW L.MSG.PSTR
>PUSHW ZPPTR1
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
plx
bcs .9
@ -287,7 +287,7 @@ CS.DOEVENT sec
CS.QUIT lda hBuf
beq .8
>SYSCALL FreeMem
>LIBC FreeMem
.8 clc
rts

View File

@ -83,7 +83,7 @@ CS.RUN ldy #S.PS.ARGC
*--------------------------------------
CS.RUN.USAGE >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
>LIBC PrintF
lda #E.SYN
sec
@ -106,19 +106,19 @@ CS.RUN.GetInfo >LEA.G P.GetInfo
>PUSHB.G P.GetInfo+$0B ROM VERSION
>PUSHBI 7
>SYSCALL PrintF
>LIBC PrintF
rts
.9 pha
>LDYA L.MSG.NOATK
>SYSCALL PutS
>LIBC PutS
pla
sec
rts
*--------------------------------------
CS.RUN.LookupName
lda #1
>SYSCALL ArgV
>LIBC ArgV
>STYA ZPPTR1
>LEA.G NameBuf
@ -185,12 +185,12 @@ CS.RUN.LookupName
bne .5
>PUSHBI 4
>SYSCALL PrintF
>LIBC PrintF
.9 rts
.99 >LDYA L.MSG.NOTFOUND
>SYSCALL PutS
>LIBC PutS
lda #MLI.E.IO
sec
rts
@ -201,14 +201,14 @@ CS.RUN.GetParms >LEA.G P.GetParms
bcs .9
>LDYA.G P.GetParms+$4
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPCmdBuf
stx hCmdBuf
>LDYA.G P.GetParms+$6
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPReplyBuf
@ -262,7 +262,7 @@ CS.RUN.GetStatus
>PUSHYA
>PUSHBI 4
>SYSCALL PrintF
>LIBC PrintF
ldy #3 Offset to Version list
lda (ZPReplyBuf),y
@ -278,7 +278,7 @@ CS.RUN.GetStatus
jsr CS.RUN.PrintListYA
>LDYA L.MSG.SRVINFO2
>SYSCALL PutS
>LIBC PutS
ldy #5 Offset to UAM list
lda (ZPReplyBuf),y
@ -311,7 +311,7 @@ CS.RUN.PrintListYA
>PUSHW L.MSG.PSTR
>PUSHW ZPPTR1
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
plx
bcs .9
@ -347,7 +347,7 @@ CS.RUN.FILogin >LEA.G LookupBuf
>STYA.G P.FILogin+$10
lda #2 USERNAME
>SYSCALL ArgV
>LIBC ArgV
bcc .2
>LDYAI FPLogin.Guest.Len
@ -400,7 +400,7 @@ CS.RUN.FILogin >LEA.G LookupBuf
.6 phy
lda #3 PASSWORD
>SYSCALL ArgV
>LIBC ArgV
bcs .99
>STYA ZPPTR1
@ -472,7 +472,7 @@ CS.RUN.GOATLK >STYA ZPAtlkParams
>PUSHA
>PUSHBI 3
>SYSCALL PrintF
>LIBC PrintF
pla
sec
@ -500,12 +500,12 @@ CS.DOEVENT sec
CS.QUIT lda hReplyBuf
beq .1
>SYSCALL FreeMem
>LIBC FreeMem
.1 lda hCmdBuf
beq .2
>SYSCALL FreeMem
>LIBC FreeMem
.2 clc
rts

View File

@ -63,7 +63,7 @@ CS.RUN jsr CS.RUN.GetInfo
bne .1
>LDYA L.MSG.NOSESSION
>SYSCALL PutS
>LIBC PutS
lda #0
sec
rts
@ -72,7 +72,7 @@ CS.RUN jsr CS.RUN.GetInfo
bcs .9
lda #1
>SYSCALL ArgV
>LIBC ArgV
bcc .2
jsr CS.RUN.ListVols
@ -90,7 +90,7 @@ CS.RUN jsr CS.RUN.GetInfo
.9 rts
*--------------------------------------
CS.RUN.USAGE >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
@ -113,12 +113,12 @@ CS.RUN.GetInfo >LEA.G P.GetInfo
>PUSHB.G P.GetInfo+$0B ROM VERSION
>PUSHBI 7
>SYSCALL PrintF
>LIBC PrintF
rts
.9 pha
>LDYA L.MSG.NOATK
>SYSCALL PutS
>LIBC PutS
pla
sec
rts
@ -129,14 +129,14 @@ CS.RUN.GetParms >LEA.G P.GetParms
bcs .9
>LDYA.G P.GetParms+$4
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPCmdBuf
stx hCmdBuf
>LDYA.G P.GetParms+$6
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPReplyBuf
@ -165,7 +165,7 @@ CS.RUN.ListVols lda A2osX.ATLKSID
bcs .9
>LDYA L.MSG.VOLLIST
>SYSCALL PutS
>LIBC PutS
lda ZPReplyBuf
clc
@ -201,7 +201,7 @@ CS.RUN.PrintListYA
.10 >PUSHW ZPPTR1
>PUSHBI 3
>SYSCALL PrintF
>LIBC PrintF
plx
bcs .9
@ -272,7 +272,7 @@ CS.RUN.MountVol >STYA ZPPTR1
inc
>PUSHA
>PUSHBI 4
>SYSCALL PrintF
>LIBC PrintF
.9 rts
*--------------------------------------
@ -302,7 +302,7 @@ CS.RUN.GOATLK >STYA ZPAtlkParams
>PUSHA
>PUSHBI 3
>SYSCALL PrintF
>LIBC PrintF
pla
sec
@ -314,12 +314,12 @@ CS.DOEVENT sec
CS.QUIT lda hReplyBuf
beq .1
>SYSCALL FreeMem
>LIBC FreeMem
.1 lda hCmdBuf
beq .2
>SYSCALL FreeMem
>LIBC FreeMem
.2 clc
rts

View File

@ -40,19 +40,20 @@ ZS.END .ED
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 Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #2 BIN Layout Version 2
.DA #0
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.DIRDUMP .DA MSG.DIRDUMP
@ -70,7 +71,7 @@ CS.RUN dec AttrAND set mask = $ff
inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .8
>STYA ZPPtr1
@ -85,12 +86,12 @@ CS.RUN dec AttrAND set mask = $ff
bcc CS.RUN
.9 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
.99 rts
*--------------------------------------
.4 >LDA.G hSrcBasePath
.4 >LDA.G pSrcBasePath+1
bne .9
>LDYA ZPPtr1
@ -98,26 +99,28 @@ CS.RUN dec AttrAND set mask = $ff
bcc CS.RUN
rts
.8 >LDA.G hSrcBasePath
.8 >LDA.G pSrcBasePath+1
beq .9
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .99
>STYA ZPFullPath
txa
>STA.G hSrcFullPath
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
CS.RUN.LOOP ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .99
tay
bne .1
>SYSCALL GetChar
>LIBC GetChar
bcs .99
cmp #$03 Ctrl-C
@ -198,10 +201,12 @@ CS.RUN.DIR lda (ZPFileName)
bit bWrite
bpl .2
>SS
>PUSHW L.MSG.DIR
>PUSHW ZPFullPath
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
bcs .9
jsr CS.RUN.SetAttr
@ -209,13 +214,18 @@ CS.RUN.DIR lda (ZPFileName)
rts
.2 >PUSHW L.MSG.DIRDUMP
.8 clc
.9 rts
.2 >SS
>PUSHW L.MSG.DIRDUMP
jsr Access2CSTR
>PUSHW ZPFullPath
>PUSHBI 4
>SYSCALL PrintF
>LIBC PrintF
>SR
bcs .9
.7 bit bRecurse
@ -223,9 +233,6 @@ CS.RUN.DIR lda (ZPFileName)
>LDYA ZPFileName
jmp X.EnterSubDirYA
.8 clc
.9 rts
*--------------------------------------
CS.RUN.FILE jsr X.IncludeMatch
bcs .8
@ -236,26 +243,33 @@ CS.RUN.FILE jsr X.IncludeMatch
bit bWrite
bpl .2
>SS
>PUSHW L.MSG.FILE
>PUSHW ZPFullPath
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
bcs .9
jmp CS.RUN.SetAttr
.2 >PUSHW L.MSG.FILEDUMP
.2 >SS
>PUSHW L.MSG.FILEDUMP
jsr Access2CSTR
>PUSHW ZPFullPath
>PUSHBI 4
>SYSCALL PrintF
>LIBC PrintF
>SR
.9 rts
.8 clc
rts
*--------------------------------------
CS.RUN.SetAttr >PUSHW ZPFullPath
CS.RUN.SetAttr >SS
>PUSHW ZPFullPath
ldy #S.STAT.P.ACCESS
lda (ZPFileStat),y
@ -263,20 +277,22 @@ CS.RUN.SetAttr >PUSHW ZPFullPath
and AttrAND
ora AttrORA
>PUSHA
>SYSCALL SetAttr
>LIBC SetAttr
>SR
bcs .1
>LDYA L.MSG.OK
>SYSCALL PutS
>LIBC PutS
rts
.1 pha
.1 tay
>SS
>PUSHW L.MSG.ERR
pla
pha
tya
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
>SR
lda bContinue
eor #$80
@ -286,14 +302,12 @@ CS.RUN.SetAttr >PUSHW ZPFullPath
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCpy
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>SYSCALL StrCat
>LIBC StrCat
rts
*--------------------------------------
CS.RUN.CheckSwitch
@ -330,7 +344,7 @@ CS.RUN.CheckSwitch
bne .9
>LDYA ZPPtr1
>SYSCALL StrUpr
>LIBC StrUpr
ldx #AttrMask-AttrList2-1
@ -399,28 +413,29 @@ Access2CSTR ldy #S.STAT.P.ACCESS
>PUSHEA.G ATTR
rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
bcc CS.QUIT
>LDA.G hInclude
>LDYA.G pInclude
cmp #0
beq .1
>SYSCALL FreeMem
>LIBC Free
.1 >LDA.G hSrcFullPath
.1 >LDYA ZPFullPath
beq .8
>SYSCALL FreeMem
>LIBC Free
.8 clc
rts
*--------------------------------------
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "CRcr"
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
@ -446,11 +461,11 @@ MSG.DIRDUMP .CZ "%s %s/\r\n"
MSG.FILEDUMP .CZ "%s %s\r\n"
MSG.DIR .CZ "Dir :%s..."
MSG.FILE .CZ "File:%s..."
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
hSrcFullPath .BS 1
ATTR .BS 17

View File

@ -80,7 +80,7 @@ CS.INIT.RTS rts
CS.RUN >PUSHW L.MSG.GREETINGS
>PUSHW A2osX.KVER
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
bcs CS.INIT.RTS
jsr CS.RUN.ARGS
@ -119,7 +119,7 @@ CS.RUN >PUSHW L.MSG.GREETINGS
CS.RUN.ARGS inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .7
>STYA ZPPtr1
@ -164,24 +164,24 @@ CS.RUN.ARGS inc ArgIndex
.9 rts
.90 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec QUIT Process
rts
*--------------------------------------
CS.RUN.LoadFile >SYSCALL LoadTxtFile
CS.RUN.LoadFile >LIBC LoadTxtFile
bcs .9
phx
txa
>SYSCALL GetMemPtr
>LIBC GetMemPtr
plx
.9 rts
*--------------------------------------
BF.Init >LDYAI BF.DATASIZE
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPDataPtr
@ -259,14 +259,14 @@ BF.KW.DECDATA lda (ZPDataPtr)
jmp BF.NextCodeByte
*--------------------------------------
BF.KW.PUTCHAR lda (ZPDataPtr)
>SYSCALL PutChar
>LIBC PutChar
bcs .9
jmp BF.NextCodeByte
.9 rts
*--------------------------------------
BF.KW.GETCHAR >SYSCALL GetChar
BF.KW.GETCHAR >LIBC GetChar
bcs .9
sta (ZPDataPtr)
@ -364,12 +364,12 @@ CS.DOEVENT sec
CS.QUIT lda hFileBuf
beq .1
>SYSCALL FreeMem
>LIBC FreeMem
.1 lda hDataBuf
beq .8
>SYSCALL FreeMem
>LIBC FreeMem
.8 rts
*--------------------------------------
@ -383,7 +383,7 @@ PrintDebugMsg >LDYA pStack
>PUSHW ZPPtr2
>PUSHBI 7
>SYSCALL PrintF
>LIBC PrintF
rts
*--------------------------------------
@ -404,7 +404,7 @@ PrintErrMsg >LDA.G bTrace
lda (pPS),y
>PUSHA
>PUSHBI '-'
>SYSCALL FPutC
>LIBC FPutC
inc ZPPtr3
bne .5
@ -417,13 +417,13 @@ PrintErrMsg >LDA.G bTrace
>PUSHW L.MSG.ERR
>PUSHW ZPPtr2 Line counter
>PUSHBI 2
>SYSCALL FPrintF
>LIBC FPrintF
rts
*--------------------------------------
PrintTraceMsg lda hFileBuf
.12 >SYSCALL GetMemPtr
.12 >LIBC GetMemPtr
>STYA ZPPtr1
stz ZPPtr2
@ -457,7 +457,7 @@ PrintTraceMsg lda hFileBuf
lda (pPS),y
>PUSHA
>PUSHBI '>'
>SYSCALL FPutC
>LIBC FPutC
ldy #$ff
@ -475,7 +475,7 @@ PrintTraceMsg lda hFileBuf
>PUSHA
pla
>PUSHA
>SYSCALL FPutC
>LIBC FPutC
ply
bra .7
@ -485,7 +485,7 @@ PrintTraceMsg lda hFileBuf
>PUSHW L.MSG.ECHOCRLF
>PUSHBI 0
>SYSCALL FPrintF
>LIBC FPrintF
rts
*--------------------------------------

View File

@ -79,7 +79,7 @@ CS.INIT clc
*--------------------------------------
CS.RUN
.1 >INC.G ArgCount
>SYSCALL ArgV
>LIBC ArgV
bcs .7
>STYA ZPPtr1
lda (ZPPtr1)
@ -97,7 +97,7 @@ CS.RUN
.99 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
>LIBC PrintF
lda #E.SYN
sec
rts
@ -209,11 +209,11 @@ CS.RUN.1 lda #S.BM.F.BBP1
* >PUSHW ZPPIXRowBytes
* >PUSHW ZPOutputBufPtr
* >LDA.G hOutputFile
* >SYSCALL FWrite
* >LIBC FWrite
* bcs CS.RUN.RTS
* bra CS.RUN.1.LOOP
*.8 >LDYA L.MSG.DONE
* >SYSCALL PutS
* >LIBC PutS
* lda #0
* sec
CS.RUN.RTS rts
@ -248,7 +248,7 @@ CS.RUN.24 lda #S.BM.F.BBP4
stx ZPInputRowBytes+1
>LDYA ZPInputRowBytes
>SYSCALL GetMem
>LIBC GetMem
bcs CS.RUN.RTS
>STYA ZPInputBuf
@ -451,7 +451,7 @@ CS.RUN.OpenInput
>PUSHBI O.RDONLY
>PUSHBI 0 Type
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
bcs CS.RUN.GetIndexInPalette.RTS
>STA.G hInputFile
@ -459,7 +459,7 @@ CS.RUN.OpenInput
>PUSHWI S.BMP
>PUSHEA.G BMP.Header
>LDA.G hInputFile
>SYSCALL FRead
>LIBC FRead
bcs CS.RUN.GetIndexInPalette.RTS
>LDA.G BMP.Header+S.BMP.SIG
@ -506,11 +506,11 @@ CS.RUN.OpenInput
>PUSHB.G BMP.Header+S.BMP.BPP
>PUSHBI 5
>SYSCALL PrintF
>LIBC PrintF
.9 rts
.99 >LDYA L.MSG.HEADER.KO
>SYSCALL PutS
>LIBC PutS
lda #E.IBIN
sec
rts
@ -519,7 +519,7 @@ CS.RUN.ReadInput
>PUSHB.G hInputFile
>PUSHW ZPInputBuf
>PUSHW ZPInputRowBytes
>SYSCALL FRead
>LIBC FRead
bcs .9
>LDYA ZPInputBuf
@ -537,7 +537,7 @@ CS.RUN.CreateOutput
>PUSHBI O.WRONLY+O.CREATE
>PUSHBI $CB PIX Type
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
bcs .9
>STA.G hOutputFile
.9 rts
@ -560,7 +560,7 @@ CS.RUN.GetOutputBuf
sta ZPPtr1+1
bra .1
.8 >LDYA ZPPtr1
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPOutputBuf
@ -587,13 +587,13 @@ CS.RUN.WriteOutput
>PUSHB.G hOutputFile
>PUSHEA.G PIX.Header
>PUSHWI S.BM
>SYSCALL FWrite
>LIBC FWrite
bcs .9
.1 >PUSHB.G hOutputFile
>PUSHW ZPOutputBuf
>PUSHW.G OutputDataLen
>SYSCALL FWrite
>LIBC FWrite
.9 rts
*--------------------------------------
CS.DOEVENT sec
@ -601,19 +601,19 @@ CS.DOEVENT sec
*--------------------------------------
CS.QUIT >LDA.G hOutputBuf
beq .1
>SYSCALL FreeMem
>LIBC FreeMem
.1 >LDA.G hInputBuf
beq .2
>SYSCALL FreeMem
>LIBC FreeMem
.2 >LDA.G hOutputFile
beq .3
>SYSCALL FClose
>LIBC FClose
.3 >LDA.G hInputFile
beq .8
>SYSCALL FClose
>LIBC FClose
.8 clc
rts
*--------------------------------------

View File

@ -7,7 +7,6 @@ NEW
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------
@ -25,7 +24,7 @@ bLineNum .BS 1
bSuppressBlankLine .BS 1
ArgIndex .BS 1
hBuf .BS 1
hFile .BS 1
pFile .BS 2
LineNum .BS 2
bPrintedBlankLine .BS 1
ZS.END .ED
@ -35,14 +34,14 @@ ZS.END .ED
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #S.PS.F.EVENT S.PS.F
.DA #2 BIN Layout Version 2
.DA #0 S.PS.F.EVENT
.DA #0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #64 SS
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
@ -63,7 +62,7 @@ CS.INIT clc
*--------------------------------------
CS.RUN inc ArgCount
lda ArgCount
>SYSCALL ArgV
>LIBC ArgV
bcs .7
>STYA ZPPtr1
@ -85,7 +84,7 @@ CS.RUN inc ArgCount
bpl .2
.99 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
.9 rts
@ -107,40 +106,55 @@ CS.RUN inc ArgCount
beq .99
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .9
>STYA ZPBufPtr
stx hBuf
ldy #S.PS.hStdOut
lda (pPS),y
tay
ldx FILEs.hFD-1,y
ldy FDs.pLO-1,x
lda FDs.pHI-1,x
>STYA ZPPtr1
ldy #S.PS.pStdOut
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
lda (ZPPtr1)
>LIBC FileNo
bcs .9
>SS
>PUSHYA
>PUSHEA.G STATBUF
>LIBC FStat
>SR
bcs .9
>LDA.G STATBUF+S.STAT.MODE+1
and #$F0
beq CS.RUN.LOOP
cmp #S.FD.T.PIPE
cmp /S.STAT.MODE.FIFO
beq CS.RUN.LOOP
>SS
>PUSHW L.MSG.INIT
>PUSHBI 0
>SYSCALL PrintF
>LIBC PrintF
>SR
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
CS.RUN.LOOP ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .90 IO error
tay
bne .10 no char
>SYSCALL GetChar
>LIBC GetChar
bcs .9 IO error
cmp #$03 Ctrl-C
@ -157,12 +171,12 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
.10 lda bPause
bne CS.RUN.LOOP Pause...
.11 lda hFile
.11 lda pFile+1
bne .2
.1 inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .99 No more arg...the end!
>STYA ZPPtr1
@ -174,17 +188,20 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
jsr CS.RUN.OPEN
.90 bcs .9
sta hFile
>STYA pFile
.2 >PUSHA
.2 >SS
>PUSHW ZPBufPtr
>PUSHWI 254 Leave room for CRLF
>SYSCALL FGetS
>PUSHW pFile
>LIBC FGetS
>SR
bcs .7
jsr CS.RUN.PRINT
bcc CS.RUN.LOOP
rts
bcs .9
jmp CS.RUN.LOOP
.7 cmp #MLI.E.EOF
bne .9
@ -197,11 +214,14 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
rts
*--------------------------------------
CS.RUN.OPEN stz bPrintedBlankLine Reset this flag for the new file
>SS
>PUSHYA
>PUSHBI O.RDONLY+O.TEXT
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
>SR
rts
*--------------------------------------
CS.RUN.PRINT inc LineNum
@ -244,7 +264,7 @@ CS.RUN.PRINT inc LineNum
bra .20
.21 >LDYA ZPBufPtr
>SYSCALL PutS
>LIBC PutS
rts
*--------------------------------------
.3 stz ByteIndex
@ -256,7 +276,7 @@ CS.RUN.PRINT inc LineNum
cmp #C.SPACE
bcc .5
>SYSCALL PutChar
>LIBC PutChar
.99 bcs .9
bra .62
@ -280,48 +300,54 @@ CS.RUN.PRINT inc LineNum
inc ZPPtr1+1
bra .6
.61 >PUSHW L.MSG.CTRLCHAR
.61 >SS
>PUSHW L.MSG.CTRLCHAR
>PUSHW ZPPtr1
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
bcs .9
.62 inc ByteIndex
bne .4
.7 >PUSHW L.MSG.CRLF
.7 >SS
>PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
>LIBC PrintF
>SR
.9 rts
*--------------------------------------
CS.RUN.PRINTNUM clc
lda bLineNum
bpl .8
>SS
>PUSHW L.MSG.LINENUM
>PUSHW LineNum
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
.8 rts
*--------------------------------------
CS.QUIT lda hBuf
CS.QUIT >LDYA ZPBufPtr
beq CS.RUN.CLOSE
>SYSCALL FreeMem
>LIBC Free
CS.RUN.CLOSE lda hFile
CS.RUN.CLOSE >LDYA pFile
beq .8
stz hFile
stz pFile+1
>SYSCALL FClose
>LIBC FClose
.8 clc
rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "ANSans"
OptionVars .DA #bPrintAll,#bLineNum,#bSuppressBlankLine,#bPrintAll,#bLineNum,#bSuppressBlankLine
@ -367,10 +393,13 @@ ASCII .PS "NUL"
.PS "GS"
.PS "RS"
.PS "US"
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
StatBuf .BS S.STAT
DS.END .ED
*--------------------------------------
MAN

View File

@ -7,9 +7,6 @@ CODE.Init >STZ.G CC.bInitCode
iny
sta (pData),y
>LDYAI PCC.FH.CS
>STYA ZPCCCode
ldy #SCOPE-1
lda #0
@ -17,10 +14,13 @@ CODE.Init >STZ.G CC.bInitCode
dey
bpl .1
>LDYAI PCC.FH.CS
>STYA ZPCCCode
stz ZPCCConst
stz ZPCCConst+1
jsr CODE.DSSelect
jsr CODE.IDSelect
bcs .99
stz ArgIndex
@ -33,7 +33,7 @@ CODE.Init >STZ.G CC.bInitCode
adc #hLibNs
tay
lda (pData),y
>SYSCALL ArgV
>LIBC ArgV
>STYA ZPPtr1
ldy #0
@ -66,23 +66,40 @@ CODE.Init >STZ.G CC.bInitCode
clc
.99 rts
*--------------------------------------
CODE.Quit >LDA.G CC.hOutFile
CODE.Quit >LDYA.G CC.pOutFile
cmp #0
beq .8
>SYSCALL FClose
>LIBC FClose
.8 clc
rts
*--------------------------------------
CODE.AddLocal eor #$FF
CODE.AddLocal cmp #0
* beq .8
eor #$FF
inc
CODE.RemLocal jsr CODE.LDAI
jsr CODE.LDAI
bcs .9
>LDYA L.PCC.ADDLOCAL
jmp CODE.EmitPCC
.8 clc
.9 rts
*--------------------------------------
CODE.RemLocal cmp #0
* beq .8
jsr CODE.LDAI
bcs .9
>LDYA L.PCC.REMLOCAL
jmp CODE.EmitPCC
.8 clc
.9 rts
*--------------------------------------
CODE.SetRetValue
@ -189,12 +206,12 @@ CODE.INCPSTACK lda #$E6 INC zp
lda #pStack
bra CODE.EmitByte
*--------------------------------------
CODE.SYSCALL jsr CODE.LDXI
CODE.LIBC jsr CODE.LDXI
bcs .9
lda #$20 JSR
ldx #A2osX.SYSCALL
ldy /A2osX.SYSCALL
ldx #A2osX.LIBC
ldy /A2osX.LIBC
bra CODE.TOABSYX
.9 rts
@ -203,8 +220,8 @@ CODE.FPUCALL jsr CODE.LDXI
bcs .9
lda #$20 JSR
ldx #A2osX.FPUCALL
ldy /A2osX.FPUCALL
ldx #A2osX.FPU
ldy /A2osX.FPU
bra CODE.TOABSYX
.9 rts
@ -243,22 +260,21 @@ CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR .....
*--------------------------------------
CODE.DEBUG >LDYA L.PCC.DEBUG
*--------------------------------------
CODE.EmitPCC >STYA ZPLookupPtr
CODE.EmitPCC >STYA ZP.pLookup
lda (ZPLookupPtr)
tax
dex
ldy #0
ldy #1
.1 lda (ZPLookupPtr),y
.1 iny
lda (ZP.pLookup),y
jsr CODE.EmitByte
bcs .9
iny
dex
tya
eor (ZP.pLookup)
bne .1
* clc
.9 rts
*--------------------------------------
CODE.EmitByte clc if Pass 1...
@ -267,34 +283,44 @@ CODE.EmitByte clc if Pass 1...
phx
phy
pha
.DO _DBG_OUT=1
tay
lda ZPCCCode
and #$1F
and #$F
bne .11
phy
>SS
>PUSHW L.MSG.DEBUG.CSOUT
>PUSHW ZPCCCode
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
ply
.11 >PUSHW L.MSG.DEBUG.OUT
.11 >SS
phy
>PUSHW L.MSG.DEBUG.OUT
pla
pha
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
pla
>SR
.FIN
>PUSHB.G CC.hOutFile
pla
>SS
>PUSHA
>SYSCALL fputc
>PUSHW.G CC.pOutFile
>LIBC fputc
>SR
ply
plx
@ -311,12 +337,12 @@ CODE.EmitDATA clc
phx
phy
tax
>PUSHB.G CC.hOutFile
txa
>SS
>PUSHA
>SYSCALL fputc
>PUSHW.G CC.pOutFile
>LIBC fputc
>SR
ply
plx
@ -331,27 +357,28 @@ CODE.CSSelect clc
bit bPass2
bpl .8
>PUSHB.G CC.hOutFile
>SS
>PUSHW.G CC.pOutFile
>PUSHWZ
* >DEBUG
lda ZPCCCode+1
sec
sbc #$20
>PUSHA
lda ZPCCCode
>PUSHA
>PUSHBI SEEK.SET
>SYSCALL fseek
>PUSHWI SEEK.SET
>LIBC fseek
>SR
.8 rts
*--------------------------------------
CODE.DSSelect clc
CODE.IDSelect clc
bit bPass2
bpl .8
>PUSHB.G CC.hOutFile
>SS
>PUSHW.G CC.pOutFile
>PUSHWZ
* >DEBUG
lda PCC.FH+PCC.FH.CONST
clc
adc ZPCCConst
@ -359,13 +386,14 @@ CODE.DSSelect clc
lda PCC.FH+PCC.FH.CONST+1
adc ZPCCConst+1
sec
sbc #$20
>PUSHYA
>PUSHBI SEEK.SET
>SYSCALL fseek
>PUSHWI SEEK.SET
>LIBC fseek
>SR
.8 rts
*--------------------------------------

View File

@ -2,107 +2,172 @@ NEW
AUTO 3,1
*--------------------------------------
CORE.Init lda #SL._
>SYSCALL SListNew
bcs .9
>KAPI SListNew
bcs .99
>STA.G CC.hDefines
>STYA.G CC.pDefines
lda #SL._
>SYSCALL SListNew
bcs .9
>KAPI SListNew
bcs .99
>STA.G CC.hTags
>STYA.G CC.pTags
lda #SL._
>SYSCALL SListNew
bcs .9
>KAPI SListNew
bcs .99
>STA.G CC.hSyms
>STYA.G CC.pTypes
lda #SL._+SL.Scoped
>KAPI SListNew
.99 bcs .9
>STYA.G CC.pSyms
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .9
>STYA ZPSymBufPtr
txa
>STA.G CC.hSymBuf
>STYA ZP.pTypeBuf
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .9
>STYA ZP.pLSymBuf
>STYA.G CC.pLSymBuf
>LDYAI 256
>LIBC Malloc
bcs .9
>STYA ZP.pRSymBuf
>STYA.G DS.pRSymBuf
>LDYAI 256
>LIBC Malloc
bcs .9
>STYA ScopeStk
txa
>STA.G CC.hScopeStk
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .9
>STYA StmtStk
txa
>STA.G CC.hStmtStk
lda #'_'
>STA.G CC.Label
lda #CC.LookupIdx
tay
sta (pData),y
* clc
.9 rts
*--------------------------------------
CORE.Reset >LDYA.G CC.pDefines
>KAPI SListFree
>STZ.G CC.pDefines+1
lda #SL._
>KAPI SListNew
bcs .99
>STYA.G CC.pDefines
>LDYA.G CC.pTags
>KAPI SListFree
>STZ.G CC.pTags+1
lda #SL._
>KAPI SListNew
bcs .99
>STYA.G CC.pTags
>LDYA.G CC.pTypes
>KAPI SListFree
>STZ.G CC.pTypes+1
lda #SL._
>KAPI SListNew
bcs .99
>STYA.G CC.pTypes
.99 rts
*--------------------------------------
CORE.Quit jsr FIO.FClose
bne CORE.Quit
>LDA.G CC.hSyms
>LDYA.G CC.pSyms
cmp #0
beq .1
>SYSCALL SListFree
>KAPI SListFree
.1 >LDA.G CC.hTags
.1 >LDYA.G CC.pTags
cmp #0
beq .2
>SYSCALL SListFree
>KAPI SListFree
.2 >LDA.G CC.hDefines
.2 >LDYA.G CC.pTypes
cmp #0
beq .3
>KAPI SListFree
.3 >LDYA.G CC.pDefines
cmp #0
beq .4
>SYSCALL SListFree
>KAPI SListFree
.4 >LDA.G CC.hDefineBuf
.4 >LDYA.G CC.pDefineBuf
jsr .7
>LDA.G CC.hSymBuf
>LDYA.G CC.pLSymBuf
jsr .7
.5 jsr SYM.LookupFree
bcc .5
>LDA.G CC.hScopeStk
>LDYA.G DS.pRSymBuf
jsr .7
>LDA.G CC.hStmtStk
>LDYA ZP.pTypeBuf
jsr .7
.7 beq .8
>LDYA ScopeStk
jsr .7
>SYSCALL FreeMem
>LDYA StmtStk
.7 cmp #0
beq .8
>LIBC Free
.8 rts
*--------------------------------------
CORE.CompileFile
>SLEEP
ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .9
tay
bne .1
>SYSCALL GetChar
>LIBC GetChar
bcs .9 I/O err
cmp #3 Ctrl-C
@ -129,9 +194,9 @@ CORE.CompileLine
jmp DIR
.1 tax
>LDA.G CC.DirState FALSE state
bmi .8
>LDA.G CC.DirState
bmi .8 FALSE
txa
@ -172,7 +237,7 @@ CORE.CompileLine
jsr STMT.CPStmt.END
bcs .99
jsr CC.GetCharNB
bcc .3
@ -194,7 +259,7 @@ CORE.CompileStmt
>STA.G CC.CmdSave
jmp (J.CC.KW,x)
*--------------------------------------
* Declaration : typedef, type var or type func()
* Declaration : typedef type ..., type var,..., type func()
*--------------------------------------
.1 >LDYA L.CC.SCSPEC
jsr CC.LookupID
@ -202,15 +267,14 @@ CORE.CompileStmt
jmp (J.CC.SCSPEC,x)
.2 >LDYA L.CC.TYPEQUAL
jsr CC.LookupID
bcs .3
.2 jsr DECL.GetType type ....
bcs .7
jmp DECL.X
jmp DECL.AddSym
*--------------------------------------
* Statement : ++var, var=, func();
*--------------------------------------
.3 jmp STMT.Get
.7 jmp STMT.Get
*--------------------------------------
.99 lda #E.CSYN
sec
@ -220,13 +284,13 @@ CORE.Comments jsr CC.GetNextChar
cmp #'/'
beq .8 // skip line.....
cmp #'*'
bne .9 /* ....
bne .9 /* ....
.1 jsr CORE.GetNCharNBNL
bcs .9
cmp #'*' ....*/
bne .1
@ -235,9 +299,9 @@ CORE.Comments jsr CC.GetNextChar
cmp #'/'
bne .1
jmp CC.GetNextChar
.8 clc
rts
@ -255,17 +319,17 @@ CORE.SkipLine jsr CC.GetNextChar
.9 rts
*--------------------------------------
CC.LookupID >STYA ZPLookupPtr
CC.LookupID >STYA ZP.pLookup
jsr CC.GetIDLen
bra CC.Lookup
CC.LookupAOP >LDYA L.CC.AOPS
>STYA ZPLookupPtr
>STYA ZP.pLookup
ldy #$ff
.1 iny
lda (ZPLineBufPtr),y
lda (ZP.pLineBuf),y
sec
beq .9
@ -282,25 +346,25 @@ CC.LookupAOP >LDYA L.CC.AOPS
.9 rts
CC.LookupOP >STYA ZPLookupPtr
CC.LookupOP >STYA ZP.pLookup
jsr CC.GetOPLen
CC.Lookup phy Y = len
ldx #0
.1 lda (ZPLookupPtr)
.1 lda (ZP.pLookup)
beq .9 Ending 0, not found....
pla
pha Get Back Len
cmp (ZPLookupPtr) Same Len ?
cmp (ZP.pLookup) Same Len ?
bne .4
tay
.2 lda (ZPLookupPtr),y
.2 lda (ZP.pLookup),y
.3 dey
cmp (ZPLineBufPtr),y
cmp (ZP.pLineBuf),y
bne .4
tya
@ -309,18 +373,18 @@ CC.Lookup phy Y = len
pla Found keyword...
jsr CC.SkipA ..advance Ptr to char after it..
lda ZPLookupPtr
lda ZP.pLookup
sec
adc (ZPLookupPtr)
adc (ZP.pLookup)
tay
lda ZPLookupPtr+1
lda ZP.pLookup+1
adc #0
clc Y,A = F() def, X = F() index
rts
.4 inx
inx
lda (ZPLookupPtr)
lda (ZP.pLookup)
jsr CC.ZPLookupPtrAddAp1
bra .1
@ -331,50 +395,41 @@ CC.Lookup phy Y = len
*--------------------------------------
CC.ZPLookupPtrAddAp1
sec
adc ZPLookupPtr
sta ZPLookupPtr
adc ZP.pLookup
sta ZP.pLookup
bcc .1
inc ZPLookupPtr+1
inc ZP.pLookup+1
.1 rts
*--------------------------------------
CC.GetDefine >LDA.G CC.hDefines
jsr CC.SListLookup
CC.GetDefine >SS
>PUSHW.G CC.pDefines
>PUSHW ZP.pLineBuf
>PUSHWI 0 ScopeID
>PUSHWI ZP.pLineBuf NextPtr
>KAPI SListLookup
>SR
bcs .9
>LDYA ZPLineBufPtr
>STYA ZPPtr1 KeyID
>LDYA ZP.pLineBuf
>STYA.G CC.SaveDefine
txa
>STA.G CC.hDefineBuf
>SYSCALL GetMemPtr
>STYA ZPLineBufPtr
.9 rts
*--------------------------------------
CC.SListLookup >PUSHA hSList
>PUSHA ...for SListGetData
>PUSHW ZPLineBufPtr
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
bcs .99
>PUSHA KeyID.HI
tya
>PUSHA KeyID.LO
jsr CC.SkipX
>SS
>PUSHW.G CC.pDefines
>PUSHW ZPPtr1
>PUSHWZ allocate
>PUSHWI 65535 all
>PUSHWZ From Start
>SYSCALL SListGetData
>KAPI SListGetData
>SR
bcs .9
.9 rts Y,A = SymSize, X = hSymBuf
>STYA ZP.pLineBuf
>STYA.G CC.pDefineBuf
.99 inc pStack discard extra hSList
rts
.9 rts
*--------------------------------------
* CT Stack
*--------------------------------------
@ -392,22 +447,24 @@ CC.Push ldy StmtPtr
sec
rts
*--------------------------------------
* ZPLineBufPtr related Subs.....
* ZP.pLineBuf related Subs.....
*--------------------------------------
CC.SkipSym
*--------------------------------------
CC.SkipX txa
CC.SkipA clc
adc ZPLineBufPtr
sta ZPLineBufPtr
adc ZP.pLineBuf
sta ZP.pLineBuf
bcc .8
inc ZPLineBufPtr+1
inc ZP.pLineBuf+1
.8 rts
*--------------------------------------
CC.GetOPLen ldy #0
.1 iny
lda (ZPLineBufPtr),y
lda (ZP.pLineBuf),y
beq .8
jsr CC.IsOPChar
@ -419,7 +476,7 @@ CC.GetOPLen ldy #0
CC.GetIDLen ldy #0
.1 iny
lda (ZPLineBufPtr),y
lda (ZP.pLineBuf),y
beq .8
jsr CC.IsLetterOrDigit
@ -535,27 +592,28 @@ CC.GetNextCharEsc
clv
.9 rts
*--------------------------------------
CC.GetNextChar inc ZPLineBufPtr
CC.GetNextChar inc ZP.pLineBuf
bne CC.GetChar
inc ZPLineBufPtr+1
inc ZP.pLineBuf+1
*--------------------------------------
CC.GetChar lda (ZPLineBufPtr)
CC.GetChar lda (ZP.pLineBuf)
bne .8
phy
>LDA.G CC.hDefineBuf
>LDYA.G CC.pDefineBuf
cmp #0
beq .1
phx
>SYSCALL FreeMem
>LIBC Free
>STZ.G CC.hDefineBuf
>STZ.G CC.pDefineBuf+1
>LDYA.G CC.SaveDefine
>STYA ZPLineBufPtr
>STYA ZP.pLineBuf
plx
ply

View File

@ -11,38 +11,107 @@ DECL.EXTERN
*--------------------------------------
DECL.TYPEDEF jsr CORE.GetNCharNB
bcs .98
>LDYA L.CC.TYPEQUAL
jsr CC.LookupID
bcs .98
cpx #4 no const nor volatile
bcc .98
jsr TYPE.GetTQInYA
bcs .99
ldx #SYM.SC.TYPEDEF
sec Reset Buffer
jsr SYM.New Y,A=T/Q,storage class TYPEDEF
jsr DECL.GetType
bcs .99
jsr CC.GetCharNB
bcs .98
cmp #';'
beq .80 Anonymous typedef...useless
jsr CC.IsLetter
bcs .98
jsr TYPE.New
bcs .99
jsr CC.GetCharNB
bcs .98
.1 cmp #'['
bne .8
ldy #SYM.Q
lda (ZP.pTypeBuf),y
and #SYM.Q.AAARRAY
cmp #SYM.Q.AAARRAY
beq .98 already [][][] ?
lda (ZP.pTypeBuf),y
clc
adc #SYM.Q.ARRAY
sta (ZP.pTypeBuf),y
jsr CORE.GetNCharNB Skip [
bcs .98
cmp #']'
bne .2
ldy #SYM.Q
lda (ZP.pTypeBuf),y
and #SYM.Q.PPPOINTER
beq .98 [] only allowed for *
bra .4
.2 jsr EXP.IntConst
bcs .98
jsr SYM.IncCnt
jsr CC.GetCharNB
bcs .98
cmp #']'
bne .98
jmp SYM.Store
.3 jsr CORE.GetNCharNB Skip ]
bra .1
.4 jsr CORE.GetNCharNB Skip ]
.5 cmp #';'
bne .98
.8 jsr TYPE.Store
rts
.80 clc
rts
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
* X = type qual
*--------------------------------------
DECL.X jsr TYPE.GetTQInYA
bcs .99
DECL.GetType jsr TYPE.Lookup Search in typedefs
bcs .1
jmp TYPE.SetQ
.1 >LDYA L.CC.TYPEQUAL Search in default types
jsr CC.LookupID
bcs .9
jsr TYPE.Reset
jmp (J.CC.TYPEQUAL,x)
.9 rts
*--------------------------------------
DECL.AddSym lda (ZP.pTypeBuf)
pha
ldy #1 Q
lda (ZP.pTypeBuf),y
ply
sec
cpy #SYM.T.SU
bne .7
@ -60,7 +129,7 @@ DECL.X jsr TYPE.GetTQInYA
.1 clc reuse buffer
ldy #SYM.T.SU
txa restore Q
jsr DECL.YAC
jsr DECL.NewSym
bcs .99
jsr CC.GetCharNB
@ -71,6 +140,7 @@ DECL.X jsr TYPE.GetTQInYA
jsr CORE.GetNCharNBNL
bcc .1
bcs .98
.2 cmp #';' TODO: struct initalizers
@ -83,22 +153,24 @@ DECL.X jsr TYPE.GetTQInYA
sec
.99 rts
.7 sec Reset Buffer
.7 sec Reset SYM Buffer
*--------------------------------------
DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
bit bLocalScope
bpl .22
DECL.NewSym ldx ScopePtr #SYM.SC.STATIC
beq .22
ldx #SYM.SC.AUTO
.22 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse
.22 jsr SYM.NewX
bcs .99 OOM or DUP
jsr SYM.GetTQInYA Y,A = T/Q
bit #SYM.Q.FUNC
ldy #SYM.Q
lda (ZP.pLSymBuf),y
bit #SYM.Q.FUNCTION
bne .8
jsr SYM.Store
bcs .99
jsr CC.GetCharNB
bcs .98
@ -111,21 +183,17 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
jsr CORE.GetNCharNB skip '='
bcs .98
jsr SYM.GetTQInYA expected T/Q
>LDYA ZP.pLSymBuf target
jsr EXP.Eval
bcs .99
jsr SYM.GetAddr1
bcs .99
jsr SYM.GetTQInYA Y,A = T/Q
jsr SYM.PopValue Set value to this var
.29 bcs .99
.28 jsr SYM.Store
bcs .99
jsr CC.GetCharNB
.28 jsr CC.GetCharNB
cmp #';'
bne .98

View File

@ -2,44 +2,51 @@ NEW
AUTO 3,1
*--------------------------------------
DIR jsr CORE.GetNCharNB
bcs .91
bcs DIR.CSYN
>LDYA L.CC.DIRS
jsr CC.LookupID
bcs .91
bcs DIR.CSYN
cpx #DIR.ELSE.ID
bcs .8
>LDA.G CC.DirState
bpl .8 TRUE
clc Skip line
rts
jmp (J.CC.DIRS,x)
.8 jmp (J.CC.DIRS,x)
.91 lda #E.CSYN
DIR.CSYN lda #E.CSYN
sec
.99 rts
DIR.RTS rts
*--------------------------------------
DIR.DEFINE clc
bit bPass2
bmi .8
jsr CC.CheckSpace
bcs .90
DIR.DEFINE jsr CC.CheckSpace
bcs DIR.CSYN
jsr CC.IsLetter
bcs .90
bcs DIR.CSYN
ldx #SYM.SC.DEFINE
>LDA.G CC.hDefines
jsr SYM.NewKey
>SS
>PUSHW.G CC.pDefines
>PUSHW ZP.pLineBuf
>PUSHWI 0 ScopeID
>PUSHWI ZP.pLineBuf NextPtr
>KAPI SListNewKey
>SR
bcs .99
>STYA ZPPtr1 SymID
jsr CC.SkipX
jsr CC.CheckSpace
bcs .99
ldy #$ff
.1 iny
lda (ZPLineBufPtr),y
lda (ZP.pLineBuf),y
beq .2
cmp #C.CR
@ -49,23 +56,20 @@ DIR.DEFINE clc
.2 iny
>SS
phy
>PUSHB.G CC.hDefines
>PUSHW.G CC.pDefines
>PUSHW ZPPtr1 SymID
>PUSHW ZPLineBufPtr
>PUSHW ZP.pLineBuf
ply
lda #0
>PUSHYA DataLen
>SYSCALL SListAddData
>KAPI SListAddData
>SR
bcs .99
.8 jmp CORE.SkipLine
.90 lda #E.CSYN
sec
jmp CORE.SkipLine
.99 rts
*--------------------------------------
DIR.INCLUDE lda #0 >STZ.G PathBuf
@ -80,10 +84,18 @@ DIR.INCLUDE lda #0 >STZ.G PathBuf
cmp #'<'
bne .90
>PUSHW L.ENV.INCLUDE
>PUSHW pData >PUSHEA.G PathBuf
>SYSCALL GetEnv
>LDYA L.ENV.INCLUDE
>LIBC GetEnv
bcs .90
>STYA ZPPtr1
ldy #$ff
.10 iny
lda (ZPPtr1),y
sta (pData),y
bne .10
lda #'>'
@ -124,20 +136,24 @@ DIR.IFDEF clc
.HS B0 BCS
DIR.IFNDEF sec
lda #0
ror ZPPtr1
jsr CC.CheckSpace
bcs DIR.ESYN
bcs DIR.ESYN2
jsr CC.IsLetter
bcs DIR.ESYN
bcs DIR.ESYN2
>PUSHB.G CC.hDefines
>PUSHW ZPLineBufPtr
>SS
>PUSHW.G CC.pDefines
>PUSHW ZP.pLineBuf
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
>PUSHWI ZP.pLineBuf NextPtr
>KAPI SListLookup
>SR
ror
ror CS if not found
eor ZPPtr1
asl
@ -156,8 +172,12 @@ DIR.IFNDEF sec
.8 clc
rts
*--------------------------------------
DIR.ESYN2 lda #E.ESYN
sec
rts
*--------------------------------------
DIR.ELSE >LDA.G CC.DirDepth
beq DIR.ESYN
beq DIR.ESYN2
>LDA.G CC.DirState
eor #$80
@ -166,7 +186,7 @@ DIR.ELSE >LDA.G CC.DirDepth
rts
*--------------------------------------
DIR.ENDIF >LDA.G CC.DirDepth
beq DIR.ESYN
beq DIR.ESYN2
inc
sta (pData),y
@ -177,10 +197,6 @@ DIR.ENDIF >LDA.G CC.DirDepth
clc
rts
DIR.ESYN lda #E.ESYN
sec
rts
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s.dir

View File

@ -2,20 +2,21 @@ NEW
AUTO 3,1
*--------------------------------------
* Input:
* ZPLineBufPtr, Y,A = Expected type/qual
* ZP.pLineBuf
* Y,A = target pLSym
* Output:
* CS, A = EC
* CC, Y,A = type/qual
*--------------------------------------
EXP.Eval00 lda #0
tay
EXP.Eval ldx ZPPtr1 local : returned T/Q
phx
ldx ZPPtr1+1
phx
EXP.Eval
* ldx ZPPtr1 local :
* phx
* ldx ZPPtr1+1
* phx
ldx ZPPtr2 local : expected T/Q
ldx ZPPtr2 local : pLSym
phx
ldx ZPPtr2+1
phx
@ -25,10 +26,10 @@ EXP.Eval ldx ZPPtr1 local : returned T/Q
ldx ZPPtr3+1 local : PREOP
phx
>STYA ZPPtr2
>STYA ZPPtr2 target pLSym
stz ZPPtr1
stz ZPPtr1+1
* stz ZPPtr1
* stz ZPPtr1+1
lda #$ff no previous OP
sta ZPPtr3+1 no PREOPS
@ -43,21 +44,38 @@ EXP.Eval ldx ZPPtr1 local : returned T/Q
jsr CORE.GetNCharNB skip (
bcs .19
>LDYA L.CC.TYPEQUAL
jsr TYPE.Lookup Search in typedefs
bcs .11
jsr TYPE.SetQ
bcc .12
.9 jmp EXP.Eval.ExitErr
*--------------------------------------
.11 >LDYA L.CC.TYPEQUAL Search in default types
jsr CC.LookupID
bcs .12
bcs .13
jsr TYPE.Reset
jsr EXP.Cast
jsr EXP.TYPEQUALJMP
bcs .9
.12 jsr CC.GetCharNB
bcs .19
cmp #')'
bne .19
jsr CORE.GetNCharNB skip )
bcs .19
bra .20
*--------------------------------------
.12 >LDYA ZPPtr2 expected T/Q
jsr EXP.Eval
.13 >LDYA ZPPtr2 target pLSym
jsr EXP.Eval recurse (exp)
bcs .19
>STYA ZPPtr2 update T/Q
jsr CC.GetCharNB
bcs .19
@ -82,42 +100,29 @@ EXP.Eval ldx ZPPtr1 local : returned T/Q
jsr CC.GetDefine
bcc .10
jsr SYM.Lookup
jsr SYM.RLookup
bcs .22
ldy #SYM.Q
lda (ZPLookupSymPtr),y
and #SYM.Q.FUNC
lda (ZP.pRSymBuf),y
and #SYM.Q.FUNCTION
bne .21
jsr EXP.GetVar Check T/Q & Get value on stack
jsr EXP.GetVar Check type, Get value & set ExpState
bcs .29
jsr SYM.LookupFree
bra .30
*--------------------------------------
.21 >LDYA ZPPtr2 get expected T/Q
.21 >LDYA ZPPtr2 target pLSym
jsr F.CallRetV
bcs .29
>STYA ZPPtr2 store real T/Q
jsr SYM.LookupFree
bra .30
*--------------------------------------
.22 jsr CC.IsDigit10 number ?
bcs .24
ldy ZPPtr2 T
bne .23
ldy #SYM.T.SINT
sty ZPPtr2
stz ZPPtr2+1 Q
.23 jsr EXP.GetNum
bcs .29
@ -155,10 +160,10 @@ EXP.Eval ldx ZPPtr1 local : returned T/Q
.33 plx get OP(n-1)
bmi .38 $ff....
cpx ZPPtr3
bcc .38 OP(n) has precedence, on stack : V1,V2
cpx ZPPtr3 *=0, +=6
bcs .38 OP(n) has precedence, on stack : V1,V2
>LDYA ZPPtr2 OP(n-1) has precedence...
* OP(n-1) has precedence...
jsr EXP.BOPS compute V(n-1) <OP(n-1)> V(n)
bcc .33
@ -174,8 +179,6 @@ EXP.Eval ldx ZPPtr1 local : returned T/Q
EXP.Eval.End plx any OP on stack ?
bmi EXP.Eval.Exit
>LDYA ZPPtr2 Var Type
jsr EXP.BOPS
bcc EXP.Eval.End
@ -189,14 +192,7 @@ EXP.Eval.Err plx
sec
bra EXP.Eval.ExitErr
*--------------------------------------
EXP.Eval.Exit lda ZPPtr1+1
ldy ZPPtr1
bne .1
>LDYA ZPPtr2 Type/Qual
.1 and #$FC ignore SYM.Q.FUNC+SYM.Q.FASTCALL
clc
EXP.Eval.Exit clc
EXP.Eval.ExitErr
plx
@ -209,42 +205,28 @@ EXP.Eval.ExitErr
plx
stx ZPPtr2
plx
stx ZPPtr1+1
plx
stx ZPPtr1
* plx
* stx ZPPtr1+1
* plx
* stx ZPPtr1
rts
*--------------------------------------
EXP.Cast jsr TYPE.GetTQInYA
bcs .99
>STYA ZPPtr1
jsr CC.GetCharNB
bcs .9
cmp #')'
bne .9
jsr CORE.GetNCharNB skip )
clc
rts
.9 lda #E.ESYN
sec
.99 rts
EXP.TYPEQUALJMP jmp (J.CC.TYPEQUAL,x)
*--------------------------------------
* Y,A = Type/Qual, X = OP
* ZPPtr2 = target pLSym, X = OP
*--------------------------------------
EXP.BOPS bit #SYM.Q.PPPOINTER
EXP.BOPS ldy #SYM.Q
lda (ZPPtr2),y
bit #SYM.Q.PPPOINTER
beq .10
ldy #SYM.T.UINT
bra .3
.10 cpy #SYM.T.UINT
.10 lda (ZPPtr2) #SYM.T
tay
cpy #SYM.T.UINT
bcs .3
cpy #SYM.T.UCHAR
@ -301,22 +283,30 @@ EXP.GetIntegral jsr CC.GetCharNB
* sec
rts
*--------------------------------------
EXP.IntConst >PUSHW ZPLineBufPtr
>PUSHWI ZPLineBufPtr
>PUSHBI 10
>SYSCALL StrToUL
EXP.IntConst >SL
>SS
>PUSHW ZP.pLineBuf
>PUSHWI ZP.pLineBuf
>PUSHWI 10
>LIBC StrToUL
>SR
bcs .9
>PULLA
lda (pStack)
inc pStack
tay
>PULLA
lda (pStack)
inc pStack
inc pStack
inc pStack Y,A = integral
rts
.9 rts
*--------------------------------------
EXP.GetNum cpy #SYM.T.FLOAT
EXP.GetNum lda (ZPPtr2) #SYM.T
cmp #SYM.T.FLOAT
bcc .1
beq .11
@ -325,10 +315,13 @@ EXP.GetNum cpy #SYM.T.FLOAT
* sec
rts
.11 >PUSHW ZPLineBufPtr
>PUSHWI ZPLineBufPtr
>SYSCALL StrToF
* bcs .99
.11 >SF
>SS
>PUSHW ZP.pLineBuf
>PUSHWI ZP.pLineBuf
>LIBC StrToF
>SR
bcs .99
ldy #4
@ -337,30 +330,43 @@ EXP.GetNum cpy #SYM.T.FLOAT
dey
bpl .10
>POP 5
lda #5
clc
rts
adc pStack
sta pStack
lda #ExpState.VonStack
tsb ExpState
* clc
.99 rts
*--------------------------------------
.1 >PUSHW ZPLineBufPtr
>PUSHWI ZPLineBufPtr
>PUSHBI 10
.1 >SL
>SS
>PUSHW ZP.pLineBuf
>PUSHWI ZP.pLineBuf
>PUSHWI 10
lda (ZPPtr2) #SYM.T
tay
lda CC.TYPESIGN-1,y
bmi .2
>SYSCALL StrToUL
>LIBC StrToUL
bra .3
.2 >SYSCALL StrToL
.2 >LIBC StrToL
.3 bcs .99
.3 >SR
bcs .99
ldy #1 anticipate 2 bytes if *
lda ZPPtr2+1
ldy #SYM.Q anticipate 2 bytes if *
lda (ZPPtr2),y
and #SYM.Q.PPPOINTER
bne .5
ldx ZPPtr2
lda (ZPPtr2) #SYM.T
tax
lda CC.TYPESIZE-1,x
dec
@ -371,14 +377,22 @@ EXP.GetNum cpy #SYM.T.FLOAT
dey
bpl .5
>POP 4
lda #4
clc
adc pStack
sta pStack
lda #ExpState.VonStack
tsb ExpState
* clc
.99 rts
rts
*--------------------------------------
EXP.GetChar ldy ZPPtr2+1
EXP.GetChar ldy #SYM.Q
lda (ZPPtr2),y
bne .9
lda ZPPtr2
lda (ZPPtr2) #SYM.T
cmp #SYM.T.UCHAR
beq .1
@ -408,18 +422,27 @@ EXP.GetChar ldy ZPPtr2+1
*--------------------------------------
EXP.AddConstCharP
lda ZPCCConst
ldx ZPCCConst+1
jsr CODE.LDAXI
jsr CODE.LDAI
bcs .99
>LDYA L.PCC.PushIAddr
>LDYA L.PCC.GetIAddrY
jsr CODE.EmitPCC
bcs .99
lda ZPCCConst+1
jsr CODE.LDAI
bcs .99
>LDYA L.PCC.GetIAddrA
jsr CODE.EmitPCC
bcs .99
jsr CODE.DSSelect
bcs .99
lda #ExpState.VinReg
sta ExpState
jsr CODE.IDSelect
bcs .99
.1 jsr CC.GetNextCharEsc
bcs .9
@ -455,41 +478,57 @@ EXP.AddConstCharP
sec
.99 rts
*--------------------------------------
* ZPPtr2 = expected T/Q
* ZPPtr2 = Target pLSym
* ZPPtr3+1 = PREOPS
*--------------------------------------
EXP.GetVar stz ExpState
jsr EXP.POSTOPS var++, var[0]... ?
jsr EXP.POSTOPS var++, var[0]... ?
bcs .99
ldx ZPPtr3+1 preop &, * ...
ldx ZPPtr3+1 preop &var, *var, --var ...
jsr EXP.PREOPS
bcs .99
jsr EXP.CheckType
bcs .99
lda ExpState
bmi .8 VonStack
bne .8
asl
bmi .7 AinPTR
asl
bmi .6 AonStack
jsr EXP.GetAddr2
jsr EXP.GetAddr2 Load ZS.RT.Ptr2 with var address
bcs .99
bra .7
jsr EXP.GetRSymSizeOf
tay
dey
bne .1
.6 >LDYA L.PCC.PopAddr2
jsr CODE.EmitPCC
lda #ExpState.VinReg
tsb ExpState
>LDYA L.PCC.GetValueA
jmp CODE.EmitPCC
.1 cpy #1
bne .2
lda #ExpState.VinReg
tsb ExpState
>LDYA L.PCC.GetValueYA
jmp CODE.EmitPCC
.2 lda #ExpState.VonStack
tsb ExpState
jsr CODE.LDYI
bcs .99
.7 jsr EXP.PushValue
bcs .99
>LDYA L.PCC.PushValueY
jmp CODE.EmitPCC
.8 jmp SYM.LookupCheckTQ
.8
.99 rts
*--------------------------------------
@ -504,7 +543,7 @@ EXP.POSTOPS >LDYA L.CC.POSTOPS
.8 clc
rts
*--------------------------------------
EXP.postinc lda ExpState
EXP.PostInc lda ExpState
bit #ExpState.AinPTR
bne .1
@ -515,11 +554,11 @@ EXP.postinc lda ExpState
tsb ExpState
.1 ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
and #SYM.Q.AAARRAY+SYM.Q.PPPOINTER
bne .8
lda (ZPLookupSymPtr) #SYM.T
lda (ZP.pRSymBuf) #SYM.T
cmp #SYM.T.FLOAT
bcs .98
@ -548,7 +587,7 @@ EXP.postinc lda ExpState
sec
.99 rts
*--------------------------------------
EXP.postdec lda ExpState
EXP.PostDec lda ExpState
bit #ExpState.AinPTR
bne .1
@ -559,11 +598,11 @@ EXP.postdec lda ExpState
tsb ExpState
.1 ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
and #SYM.Q.AAARRAY+SYM.Q.PPPOINTER
bne .8
lda (ZPLookupSymPtr) #SYM.T
lda (ZP.pRSymBuf) #SYM.T
cmp #SYM.T.FLOAT
bcs .98
@ -593,7 +632,7 @@ EXP.postdec lda ExpState
.99 rts
*--------------------------------------
EXP.Idx ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
bit #SYM.Q.AAARRAY
bne EXP.array
@ -602,9 +641,9 @@ EXP.Idx ldy #SYM.Q
cmp #SYM.Q.POINTER
bne .98
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
eor #SYM.Q.POINTER+SYM.Q.ARRAY
sta (ZPLookupSymPtr),y convert from *type to type[]
sta (ZP.pRSymBuf),y convert from *type to type[]
jsr EXP.GetAddr2
bcs .99
@ -616,7 +655,7 @@ EXP.Idx ldy #SYM.Q
jsr EXP.array.getIdx ...int16 on stack...
bcs .99
jsr EXP.GetSymSizeOfInAX
jsr EXP.GetRSymSizeOf
cmp #1
bne .1
@ -656,10 +695,10 @@ EXP.Idx ldy #SYM.Q
sec
.99 rts
*--------------------------------------
EXP.array ldy #SYM.Def
lda (ZPLookupSymPtr),y
EXP.array ldy #SYM.A1
lda (ZP.pRSymBuf),y
iny
ora (ZPLookupSymPtr),y
ora (ZP.pRSymBuf),y
beq .1
* jsr CODE.DEBUG
jsr EXP.PushAddr array[int]...
@ -677,7 +716,7 @@ EXP.array ldy #SYM.Def
.2 jsr EXP.array.getIdx ...int16 on stack...
bcs .9
jsr EXP.GetSymSizeOfInAX
jsr EXP.GetRSymSizeOf
jsr CODE.PUSHAXI ...sizeof on stack...
bcs .9
@ -699,24 +738,24 @@ EXP.array ldy #SYM.Def
bcs .98
ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
and #SYM.Q.AAARRAY
.39 beq .99
beq .99
jsr EXP.array.getIdx ...int16 on stack...
bcs .9
ldy #SYM.Def+3
lda (ZPLookupSymPtr),y
ldy #SYM.A2+1
lda (ZP.pRSymBuf),y
tax
dey
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
jsr CODE.PUSHAXI [][SIZE] on stack
ldx #FPU.wMUL
jsr CODE.FPUCALL [][SIZE] * int16 on stack
jsr EXP.GetSymSizeOfInAX
jsr EXP.GetRSymSizeOf
jsr CODE.PUSHAXI ...sizeof on stack...
bcs .9
@ -761,10 +800,10 @@ EXP.array.getIdx
bne .98
ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
sec
sbc #SYM.Q.ARRAY
sta (ZPLookupSymPtr),y
sta (ZP.pRSymBuf),y
clc
rts
@ -773,12 +812,12 @@ EXP.array.getIdx
sec
.9 rts
*--------------------------------------
EXP.SU lda (ZPLookupSymPtr)
EXP.SU lda (ZP.pRSymBuf)
cmp #SYM.T.SU
bne .97
ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
and #SYM.Q.PPPOINTER
bne .97
@ -788,36 +827,23 @@ EXP.SU lda (ZPLookupSymPtr)
jsr CC.IsLetter
bcs .98
jsr EXP.SU.GetF
bcs .98
jsr CC.SkipX
lda (ZPLookupSymPtr),y SU.F.T
sta (ZPLookupSymPtr) SYM.T
ldy #SYM.ScopeID
lda (ZP.pRSymBuf),y
pha
iny
lda (ZPLookupSymPtr),y SU.F.Q
phy
ldy #SYM.Q
sta (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
ply
iny
lda (ZPLookupSymPtr),y SU.F.O
phy
jsr SYM.RLookupYA
bcs .99
ldy #SYM.Addr
clc
adc (ZPLookupSymPtr),y
sta (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
ply
pha
iny
lda (ZPLookupSymPtr),y SU.F.O+1
ldy #SYM.Addr+1
adc (ZPLookupSymPtr),y
sta (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
ply
clc
rts
@ -833,70 +859,6 @@ EXP.pSU lda #E.ESYN
sec
rts
*--------------------------------------
EXP.SU.GetF jsr CC.GetIDLen
tya
tax
ldy #SYM.Def
.1 lda (ZPLookupSymPtr),y
beq .98
phy SU.F.T
tya
clc
adc #SU.F.Name
tay
txa
cmp (ZPLookupSymPtr),y
bne .7
phy SU.F.Name
phx SU.F.NameLen
tya
clc
adc ZPLookupSymPtr
sta ZPLookupPtr
lda #0
adc ZPLookupSymPtr+1
sta ZPLookupPtr+1
ldy #0
.2 lda (ZPLineBufPtr),y
iny
cmp (ZPLookupPtr),y
bne .6
dex
bne .2
plx NameLen
pla SU.F.Name
ply SU.F.T
clc
rts
.6 plx
ply
.7 pla
sec
adc (ZPLookupSymPtr),y
adc #SU.F.Name
tay
bra .1
.98 lda #E.NOKEY
sec
.99 rts
*--------------------------------------
* PREOPS
*--------------------------------------
EXP.PREOPS bmi .8
@ -907,14 +869,14 @@ EXP.PREOPS bmi .8
rts
*--------------------------------------
EXP.Ref ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
clc
adc #SYM.Q.POINTER
bcs .9 more than ***
* and #%11001111
sta (ZPLookupSymPtr),y
sta (ZP.pRSymBuf),y
bit ExpState
bvs .8
@ -933,13 +895,13 @@ EXP.Ref ldy #SYM.Q
.99 rts
*--------------------------------------
EXP.Deref ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
bit #SYM.Q.PPPOINTER
beq .9
sec
sbc #SYM.Q.POINTER
sta (ZPLookupSymPtr),y
sta (ZP.pRSymBuf),y
jsr EXP.GetAddr2
bcs .99
@ -995,7 +957,7 @@ EXP.predec
.99 rts
*--------------------------------------
EXP.PushAddr ldy #SYM.SC
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
beq .1 SYM.SC.STATIC
* LOCAL
@ -1004,7 +966,7 @@ EXP.PushAddr ldy #SYM.SC
bcs .9
ldy #SYM.Addr
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
eor #$FF
inc
jsr CODE.LDAI
@ -1016,17 +978,17 @@ EXP.PushAddr ldy #SYM.SC
* GLOBAL
.1 ldy #SYM.Addr+1
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
tax
dey
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
jsr CODE.LDAXI
bcs .9
ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
and #SYM.Q.CONST
beq .2
@ -1036,52 +998,15 @@ EXP.PushAddr ldy #SYM.SC
.2 >LDYA L.PCC.PushUAddr
jmp CODE.EmitPCC
.9 rts
*--------------------------------------
EXP.GetAddr1 ldy #SYM.SC
lda (ZPLookupSymPtr),y
beq .1 SYM.SC.STATIC
* LOCAL
ldy #SYM.Addr
lda (ZPLookupSymPtr),y
eor #$FF
inc
jsr CODE.LDAI
bcs .9
>LDYA L.PCC.GetLAddr1
jmp CODE.EmitPCC
* GLOBAL
.1 ldy #SYM.Addr+1
lda (ZPLookupSymPtr),y
tax
dey
lda (ZPLookupSymPtr),y
jsr CODE.LDAXI
bcs .9
ldy #SYM.Q
lda (ZPLookupSymPtr),y
and #SYM.Q.CONST
beq .2
>LDYA L.PCC.GetIAddr1
jmp CODE.EmitPCC
.2 >LDYA L.PCC.GetUAddr1
jmp CODE.EmitPCC
.9 rts
*--------------------------------------
EXP.GetAddr2 ldy #SYM.SC
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
beq .1 SYM.SC.STATIC
* LOCAL
ldy #SYM.Addr
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
eor #$FF
inc
jsr CODE.LDAI
@ -1092,17 +1017,17 @@ EXP.GetAddr2 ldy #SYM.SC
* GLOBAL
.1 ldy #SYM.Addr+1
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
tax
dey
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
jsr CODE.LDAXI
bcs .9
ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
and #SYM.Q.CONST
beq .2
@ -1114,35 +1039,13 @@ EXP.GetAddr2 ldy #SYM.SC
.9 rts
*--------------------------------------
EXP.PushValue jsr EXP.GetSymSizeOfInAX
tay
dey
bne .1
>LDYA L.PCC.PushValue1
jmp CODE.EmitPCC
.1 cpy #1
bne .2
>LDYA L.PCC.PushValue2
jmp CODE.EmitPCC
.2 jsr CODE.LDYI
bcs .99
>LDYA L.PCC.PushValueY
jmp CODE.EmitPCC
.99 rts
*--------------------------------------
* out : A,X = size
*--------------------------------------
EXP.GetSymSizeOfInAX
EXP.GetRSymSizeOf
ldy #SYM.Q
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
pha
lda (ZPLookupSymPtr) SYM.T
lda (ZP.pRSymBuf) SYM.T
tay
pla
@ -1163,6 +1066,52 @@ EXP.GetYASizeOfInAX
sec +1 for hMem Storage
rts
*--------------------------------------
* ZPPtr2 = target pLSymBuf
* ZP.pRSymBuf = Expression
*--------------------------------------
EXP.CheckType lda ZPPtr2+1 any target type ?
beq .8
lda (ZPPtr2)
cmp #SYM.T.VARIADIC
beq .8 Variadic accepts anything
lda (ZP.pRSymBuf) SYM.T
cmp #SYM.T.VOID
beq .2
cmp (ZPPtr2)
bne .9
ldy #SYM.Q
lda (ZP.pRSymBuf),y
and #$F8 ignore VOLATILE|RESTRICT|FUNCTION
cmp (ZPPtr2),y
bne .9
clc
rts
.2 ldy #SYM.Q
lda (ZP.pRSymBuf),y
eor (ZP.pRSymBuf),y
and #$F8 ignore VOLATILE|RESTRICT|FUNCTION
beq .8
and #SYM.Q.AAARRAY is mismatch about array ?
beq .9 no...
lda ZPPtr2+1 Q
and #SYM.Q.AAARRAY
bne .9
.8 clc
rts
.9 lda #E.TMISMATCH
sec
.99 rts
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s.exp
LOAD usr/src/bin/cc.s

View File

@ -1,64 +1,101 @@
NEW
AUTO 3,1
*--------------------------------------
F.Decl jsr SCOPE.New function (
F.Decl ldy #SYM.Cnt
lda #$ff
sta (ZP.pLSymBuf),y func() : unknown arg count
jsr CORE.GetNCharNBNL Skip (
bcs .9
cmp #')' func()
bne F.DeclArgs
jsr CORE.GetNCharNBNL Skip ')'
bcs .9
cmp #';'
bne .9
jmp SYM.Update Store this declaration & exit
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
F.DeclArgs jsr SCOPE.New function (type.....
bcs .99
lda ScopePtr
clc
adc #SCOPE.State
tay
lda #$FF add args
sta (ScopeStk),y
lda (ZPSymBufPtr) #SYM.T
pha
lda #'P'
jsr SYM.LookupLabelA
bcs .99
lda ScopePtr
clc
adc #SCOPE.ParamSize
tay
txa
sta (ScopeStk),y
jsr SYM.AddScope
jsr SYM.IncCnt $FF -> 0
ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.PPPOINTER+SYM.Q.AAARRAY
jsr TYPE.IsVoid
beq .1 void function(....
ply
cpy #SYM.T.VOID
ldy #SYM.SizeOf+1
lda (ZP.pLSymBuf),y
bne .10
tax
beq .11 function is void
dey
lda (ZP.pLSymBuf),y
cmp #2+1
bcc .1 R in Y,A
.10 lda #'R'
jsr SYM.NewLabelA
bcs .99
.11 jsr CORE.GetNCharNBNL Skip (
bcs .9
cmp #')' func()
beq .6
*--------------------------------------
.1 jsr F.DeclGetTQ
.1 jsr F.DeclGetType function (type.... ?
bcs .99
jsr TYPE.IsVoid
beq .5 function (void)
.2 jsr F.NewArg
bcs .99
>STYA ZPPtr2 Save T/Q
jsr SYM.IncCnt
jsr SYM.AddWord
bcs .99
cpy #SYM.T.VARIADIC
beq .5
lda (ZP.pTypeBuf)
cmp #SYM.T.VARIADIC
beq .5 function ( , ...)
jsr CC.GetCharNB
bcs .9
jsr CC.IsLetter
bcs .2
jsr F.NewArg will update LocalPtr,FrameSize
bcs .99
.2 jsr CC.GetCharNB
bcs .9
cmp #')'
beq .6
cmp #','
bne .9
jsr CORE.GetNCharNB Skip ,
bcc .1
jsr CORE.GetNCharNBNL Skip ,
bcs .9
jsr F.DeclGetType
bcs .99
jsr TYPE.IsVoid
bne .2
.9 lda #E.CSYN
sec
@ -70,7 +107,15 @@ F.Decl jsr SCOPE.New function (
cmp #')'
bne .9
.6 jsr SYM.Add0000 definition End
.6 lda ScopePtr
clc
adc #SCOPE.ParamSize
tay
lda (ScopeStk),y
tax
lda #'P' define PARAM SIZE
jsr SYM.NewLabelA
bcs .99
jsr CORE.GetNCharNBNL Skip ')'
@ -83,22 +128,11 @@ F.Decl jsr SCOPE.New function (
bcs .99
jmp SYM.Update Store this declaration & exit
rts
*--------------------------------------
.7 cmp #'{'
bne .9
jmp F.Body
*--------------------------------------
F.Def >DEBUG
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
F.Body >LDA.G CC.bInitCode
F.Def >LDA.G CC.bInitCode
bmi .1
lda #$60 RTS
@ -107,34 +141,22 @@ F.Body >LDA.G CC.bInitCode
lda #$FF
>STA.G CC.bInitCode
*--------------------------------------
.1 jsr SYM.SetAddrCCode f() Code starts HERE
jsr SYM.Update Store f() Declaration
bcs .99
ldy #SYM.SizeOf
lda (ZPSymBufPtr),y
beq .2 void f()
.2 ldy ScopePtr
iny
iny
iny
lda (ScopeStk),y #SCOPE.FrameSize
jsr CODE.LDAI A = f() ARGS size
>LDYA L.PCC.BS
jsr CODE.EmitPCC
bcs .99
>LDYA L.PCC.ENTER
jsr CODE.EmitPCC Start Definition
bcs .99
lda ScopePtr
clc
adc #SCOPE.State
tay
lda #0
sta (ScopeStk),y
lda #$ff
>STA.G CC.CmdSave
@ -145,30 +167,113 @@ F.Body >LDA.G CC.bInitCode
jsr STMT.SetTypeCP type = {}
bcs .99
jmp SCOPE.AddLocal function () {
lda #'F'
jsr SYM.LookupLabelA
bcs .99
txa
jmp CODE.AddLocal
.99 rts
*--------------------------------------
F.Def.END lda #'X' define EXIT Label
jsr SYM.NewLabelA
bcs .9
bcs .99
jsr SCOPE.RemLocal function () {}
bcs .9
lda #'F' define FRAME SIZE
jsr SYM.NewLabelA
bcs .99
lda ScopePtr
* clc
adc #SCOPE.FrameSize
tay
lda (ScopeStk),y
jsr CODE.RemLocal
bcs .99
jsr STMT.Close
bcs .9
>LDYA L.PCC.LEAVE
jsr CODE.EmitPCC
bcs .9
bcs .99
jsr SCOPE.Close function () {};
bcs .99
* jsr CODE.DEBUG
>LDYA L.PCC.BR
jsr CODE.EmitPCC
bcs .99
lda #$60 RTS
jsr CODE.EmitByte
.99 rts
*--------------------------------------
* ZP.pLSymBuf = f() declaration
* ZP.pTypeBuf = arg type
* update SCOPE.LocalPtr, SCOPE.FrameSize
*--------------------------------------
F.NewArg ldy #SYM.Cnt
lda (ZP.pLSymBuf),y
ora #$30
>STA.G CC.Label+1 add "_1,_2...."
>LDYA.G CC.LSymID
>STYA.G CC.LSymIDSave
>LEA.G CC.ArgBuf
>STYA ZP.pLSymBuf
jsr CC.GetCharNB
bcs .9
.9 rts
jsr CC.IsLetter function (type name... ?
bcc .2
ldx ZP.pLineBuf
phx
ldx ZP.pLineBuf+1
phx
>LEA.G CC.Label
>STYA ZP.pLineBuf
jsr SYM.NewAuto
plx
stx ZP.pLineBuf+1
plx
stx ZP.pLineBuf
bcs .99
bra .8
.2 jsr SYM.NewAuto
bcs .99
.8 jsr SYM.Store
bcs .99
>LDYA.G CC.pLSymBuf
>STYA ZP.pLSymBuf
>LDYA.G CC.LSymIDSave
>STYA.G CC.LSymID
* clc
rts
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
F.DeclGetTQ lda (ZPLineBufPtr)
F.DeclGetType lda (ZP.pLineBuf)
cmp #'.'
bne .5
@ -189,157 +294,108 @@ F.DeclGetTQ lda (ZPLineBufPtr)
eor #')'
bne .9
ldy #SYM.T.VARIADIC Type
* lda #0 Qual
lda #SYM.T.VARIADIC
sta (ZP.pTypeBuf)
* clc
rts
*--------------------------------------
.5 jsr SYM.Lookup var or func() ?
bcs .6
ldy #SYM.SC
lda (ZPLookupSymPtr),y
cmp #SYM.SC.TYPEDEF
bne .9
jmp TYPE.GetTQInYA2
.6 >LDYA L.CC.TYPEQUAL
jsr CC.LookupID
.5 jsr DECL.GetType
bcs .9
jmp TYPE.GetTQInYA
rts
.9 lda #E.CSYN
sec
rts
*--------------------------------------
F.NewArg >LDYA.G CC.SymID
>STYA.G CC.SymIDSave
>LEA.G CC.ArgBuf
>STYA ZPSymBufPtr
>LDYA ZPPtr2
ldx #SYM.SC.AUTO
sec Reset Buffer
jsr SYM.New
bcs .9
jsr SYM.Store
bcs .9
>LDA.G CC.hSymBuf
>SYSCALL GetMemPtr
>STYA ZPSymBufPtr
>LDYA.G CC.SymIDSave
>STYA.G CC.SymID
.9
F.NewArg.RTS rts
* in :
* f() in ZP.pRSymBuf
* Y,A = pLSymBuf
*--------------------------------------
* in : ZPSymPtr
* Y,A = Expected T/Q
*--------------------------------------
F.CallNoRetV ldy #0 no expected T/Q
F.CallNoRetV ldy #SYM-1
.1 lda (ZP.pLSymBuf),y
sta (ZP.pRSymBuf),y
dey
bpl .1
ldy #0 no target pLSym
tya
clc
.HS B0 BCS
F.CallRetV sec
ldx ZPPtr1 local : variadic size
F.CallRetV ldx ZPPtr1 local : variadic size
phx
ldx ZPPtr1+1 local : bRetV
ldx ZPPtr1+1 local : bFastCall
phx
ldx ZPPtr2 local : expected T
ldx ZPPtr2 local : target pLSym
phx
ldx ZPPtr2+1 local : expected Q
ldx ZPPtr2+1
phx
>STYA ZPPtr2 T/Q
>STYA ZPPtr2
stz ZPPtr1 Reset VARIADIC byte count
stz ZPPtr1+1 Reset StackInit Status
ror ZPPtr1+1 bRetV
bpl .1 no Return value expected....
ldy #SYM.Addr+1
lda (ZPLookupSymPtr),y
cmp #3+LIBS.MAX
bcc .1 SYS/FPU/LIB call, no room on stack required
>LDYA ZPPtr2
jsr EXP.GetYASizeOfInAX
jsr CODE.AddLocal add room for return value
bcs F.NewArg.RTS
.1 jsr CORE.GetNCharNB skip '('
jsr CORE.GetNCharNB skip '('
bcs .90
jsr SYM.LookupCheckTQ
bcs .93
*--------------------------------------
stz ZPPtr1 Reset VARIADIC byte count
ldy #SYM.Cnt
lda (ZP.pRSymBuf),y
bpl .1
lda #E.FUNDEF should be at least f(void)
bra .98
lda #SYM.Def
>STA.G CC.LookupSymPtr
.1 jsr F.StackReturn Add room for RET value if required
bcs .99
jsr F.GetArg0 get First Arg in pLSymBuf
bcs .7
jsr F.StackSave
bcs .99
jsr F.GetTQ get First Arg T/Q
beq .7 end of list, go check ending ')'
.3 cpy #SYM.T.VARIADIC
bne .4
lda #0 Expected T/Q = 0 if VARIADIC
tay
.4 and #$F0 CONST+VOLATILE+FUNC+FASTCALL
.3 jsr SYM.NextRBuf
>LDYA ZP.pLSymBuf
jsr EXP.Eval
bcs .93
bcs .99
jsr EXP.GetYASizeOfInAX
tax save Sizeof in X
jsr F.GetTQ
cpy #SYM.T.VARIADIC
bne .50 if VARIADIC, don't advance to next arg
txa
clc make sure pointer only 2 bytes
adc ZPPtr1
sta ZPPtr1 Add to byte count
bra .5
.50 >LDA.G CC.LookupSymPtr
clc
adc #2
sta (pData),y
.5 jsr CC.GetCharNB
jsr F.StackPushV
bcs .99
jsr F.NextArg
jsr SYM.PrevRBuf
jsr SYM.PrevLBuf
jsr CC.GetCharNB
bcs .90
cmp #','
bne .6
jsr CORE.GetNCharNBNL Skip ','
bcs .90
jsr F.GetTQ
bne .3 Another ARG....
jsr F.GetArg
bcc .3 Another ARG....
bra .90 extra args....error
bra .99 extra args....error
.6 cmp #')'
bne .90
jsr F.GetTQ
beq .8 no more arg after ')', exit
jsr F.GetArg
bcs .8 no more arg after ')', exit
cpy #SYM.T.VARIADIC
lda (ZP.pLSymBuf) #SYM.T
cmp #SYM.T.VARIADIC
bne .90 missing arg
jsr SYM.PrevLBuf
lda ZPPtr1 push VARIADIC byte count
jsr CODE.PUSHI
@ -350,16 +406,19 @@ F.CallRetV sec
cmp #')'
bne .90
.8 jsr CORE.GetNCharNB Skip )
.8 jsr CORE.GetNCharNB Skip )
jsr F.Call2
bra .93
bcs .99
jsr F.StackRestore
bra .99
.90 lda #E.CSYN
.92 sec
.98 sec
.93 plx
.99 plx
stx ZPPtr2+1
plx
stx ZPPtr2
@ -369,85 +428,17 @@ F.CallRetV sec
plx
stx ZPPtr1
.99 rts
*--------------------------------------
* X = last var size
*--------------------------------------
F.Call2 ldy #SYM.Q
lda (ZPLookupSymPtr),y
and #SYM.Q.FASTCALL
beq .1
ldy #SYM.Def Get first (only) argument
jsr F.GetTQAtY
jsr TYPE.SizeOf
dex
bne .19
jsr CODE.PULLA
bra .1
.19 jsr CODE.PULLYA
.1 jsr F.Call3
bcs .9
bit ZPPtr1+1 bRetV
bmi .5
* NO Return Value : call & discard stack if not in Y,A
>LDYA ZPPtr2 function T/Q
jsr TYPE.SizeOf
txa
beq .11 void
cpx #3 A or Y,A
bcc .11
.10 jsr CODE.INCPSTACK
dex
bne .10
.11 clc
.9 rts
* Return Value : call & put result on stack if in Y,A
.5
ldy #SYM.Addr+1
lda (ZPLookupSymPtr),y
cmp #3+LIBS.MAX
bcs .8 not a SYS/FPU/LIB call...Ret value on stack
>LDYA ZPPtr2 function T/Q
jsr TYPE.SizeOf
cpx #3
bcs .8 leave on stack
dex
bne .60
jsr CODE.PUSHA push ONE byte on stack
bra .8
.60 jsr CODE.PUSHYA push TWO bytes on stack
.8 >LDYA ZPPtr2 T/Q
clc
rts
*--------------------------------------
F.Call3 ldy #SYM.Addr+1
F.Call2 ldy #SYM.Addr+1
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
beq .9
pha
dey
lda (ZPLookupSymPtr),y
lda (ZP.pRSymBuf),y
tax
ply Y=HI,X=LO
@ -455,17 +446,18 @@ F.Call3 ldy #SYM.Addr+1
cpy #1
bne .1
jmp CODE.SYSCALL
jsr CODE.LIBC
bcs .99
bra .8
.1 cpy #2
bne .2
jmp CODE.FPUCALL
.2 cpy #3+LIBS.MAX
.1 cpy #3+LIBS.MAX
bcs .3
jmp CODE.LIBCALL
jsr CODE.LIBCALL
bcs .99
bra .8
.3 lda #$EA NOP
jsr CODE.EmitByte
@ -476,7 +468,8 @@ F.Call3 ldy #SYM.Addr+1
bcs .99
lda #$20 JSR abs
jmp CODE.TOABSYX
jsr CODE.TOABSYX
bcs .99
.9 bit bPass2
bmi .91
@ -485,26 +478,138 @@ F.Call3 ldy #SYM.Addr+1
clc
adc ZPCCCode
sta ZPCCCode
bcc .90
bcc .8
inc ZPCCCode+1
.90 clc
.8 lda ZPPtr2
ora ZPPtr2+1
bne .80
ldy #SYM.SizeOf
lda (ZP.pRSymBuf),y
tax
beq .80 void
cmp #3
bcc .80
.81 jsr CODE.INCPSTACK
dex
bne .81
.80 clc
rts
.91 lda #E.FUNDEF
sec
.99 rts
*--------------------------------------
F.GetTQ >LDA.G CC.LookupSymPtr
tay
F.GetArg0 lda #$30 arg "_0, _1, ...."
>STA.G CC.Label+1
F.GetTQAtY lda (ZPLookupSymPtr),y
pha
iny
lda (ZPLookupSymPtr),y
ply
F.GetArg >SS
>PUSHW.G CC.pSyms
>PUSHEA.G CC.Label
ldy #SYM.ScopeID+1
lda (ZP.pRSymBuf),y
>PUSHA
dey
lda (ZP.pRSymBuf),y
>PUSHA
>PUSHWI 0 NextPtr
>KAPI SListLookup
>SR
bcs .9
>STYA ZP.pLookup
jsr SYM.NextLBuf
>SS
>PUSHW.G CC.pSyms
>PUSHW ZP.pLookup
>PUSHW ZP.pLSymBuf
>PUSHWI 65535 all
>PUSHWZ From Start
>KAPI SListGetData
>SR
.9 rts
*--------------------------------------
F.NextArg lda (ZP.pLSymBuf) #SYM.T
cmp #SYM.T.VARIADIC
bne .1 if VARIADIC, don't advance to next arg
jsr EXP.GetRSymSizeOf
clc make sure pointer only 2 bytes
adc ZPPtr1
sta ZPPtr1 Add to byte count
rts
.1 >INC.G CC.Label+1
rts
*--------------------------------------
F.StackReturn ldy #SYM.SizeOf
lda (ZP.pRSymBuf),y
cmp #3
bcc .8 RetV in Y,A
cmp #4
bne .1
>LDYA L.PCC.SL
jmp CODE.EmitPCC
.1 cmp #5
bne *
>LDYA L.PCC.SF
jmp CODE.EmitPCC
.8 rts
*--------------------------------------
F.StackSave ldy #SYM.Cnt
lda (ZP.pRSymBuf),y
cmp #2
bcs .3 more than 1 arg
ldy #SYM.SizeOf
lda (ZP.pLSymBuf),y First Arg
cmp #3
bcc .9 only 1 or 2 bytes in Y,A
.3 dec ZPPtr1+1 for F.StackRestore
>LDYA L.PCC.SS
jmp CODE.EmitPCC
.9 rts
*--------------------------------------
F.StackPushV bit ZPPtr1+1
bpl .8
lda ExpState
beq *
bit #ExpState.VinReg
beq .8
jmp CODE.PUSHYA
.8 clc
rts
*--------------------------------------
F.StackRestore bit ZPPtr1+1
bpl .8
>LDYA L.PCC.SR
jmp CODE.EmitPCC
.8 clc
rts
*--------------------------------------
MAN

View File

@ -16,78 +16,112 @@ FIO.LoadLIB.o >LDA.G LibCount
lda ArgIndex
sta (pData),y
>PUSHW L.ENV.LIB
>PUSHW pData >PUSHEA.G PathBuf
>SYSCALL GetEnv
bcs .9
>PUSHW pData
lda ArgIndex
>SYSCALL ArgV
>PUSHYA
>SYSCALL strcat
>PUSHW pData
>PUSHW L.LIB.O
>SYSCALL strcat
jsr FIO.MakeLibPath
bcs .99
>SS
>PUSHW L.MSG.READING
>PUSHW pData
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
bcs .99
>SS
>PUSHW pData
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.BIN
>PUSHWZ Aux type
>SYSCALL loadfile
>LIBC loadfile
>SR
bcs .99
pha
phy
>LDA.G LibCount
asl
clc
adc #hLibOs
adc #pLibOs
tay
txa
pla
sta (pData),y
iny
pla
sta (pData),y
>INC.G LibCount
clc
.99 rts
*--------------------------------------
FIO.FOpen1st >LDA.G CC.InFileArg
>SYSCALL ArgV
FIO.MakeLibPath >SS
>LDYA L.ENV.LIB
>LIBC GetEnv
>SR
bcs .9
FIO.FOpen phy
>SS
pha
>PUSHW pData >PUSHEA.G PathBuf
pla
>PUSHA
tya
>PUSHA
>LIBC strcpy
>SR
>SS
>PUSHW pData
lda ArgIndex
>LIBC ArgV
>PUSHYA
>LIBC strcat
>SR
>SS
>PUSHW pData
>PUSHW L.LIB.O
>LIBC strcat
>SR
.9 rts
*--------------------------------------
FIO.FOpen1st >LDYA.G CC.pInFileName
FIO.FOpen >STYA ZPPtr1
>SS
>PUSHW L.MSG.READING
pla
pha
>PUSHYA
>PUSHW ZPPtr1
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
pla
ply
>PUSHYA
>SS
>PUSHW ZPPtr1
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
>SR
bcs .9
tax
pha
phy
>LDA.G hFilePtr
>LDA.G CC.pInFiles
inc
inc
sta (pData),y
tay
txa
pla
sta (pData),y
iny
pla
sta (pData),y
>LDA.G LineCntPtr
>LDA.G CC.LineCnts
inc
inc
sta (pData),y
@ -99,13 +133,13 @@ FIO.FOpen phy
.9 rts
*--------------------------------------
FIO.FGetS >LDYA.G LineBufPtr
>STYA ZPLineBufPtr
FIO.FGetS >LDYA.G CC.pLineBuf
>STYA ZP.pLineBuf
lda #0
sta (ZPLineBufPtr) set to Empty line
sta (ZP.pLineBuf) set to Empty line
>LDA.G LineCntPtr
>LDA.G CC.LineCnts
tay
lda (pData),y
inc
@ -117,14 +151,21 @@ FIO.FGetS >LDYA.G LineBufPtr
inc
sta (pData),y
.1 >LDA.G hFilePtr
.1 >SS
>PUSHW ZP.pLineBuf
>PUSHWI 255
>LDA.G CC.pInFiles
tay
iny
lda (pData),y
>PUSHA
>PUSHW ZPLineBufPtr
>PUSHWI 255
>SYSCALL FGetS
dey
lda (pData),y
>PUSHA
>LIBC FGetS
>SR
bcs .9
>LDA.G bVerbose
@ -136,22 +177,27 @@ FIO.FGetS >LDYA.G LineBufPtr
.9 rts
*--------------------------------------
FIO.FClose >LDA.G hFilePtr
cmp #hFilePtr
beq .8
FIO.FClose >LDA.G CC.pInFiles
cmp #CC.pInFiles
beq .8 Z
tay
lda (pData),y
pha
iny
lda (pData),y
ply
>SYSCALL FClose
>LIBC FClose
>LDA.G hFilePtr
>LDA.G CC.pInFiles
dec
dec
sta (pData),y
cmp #hFilePtr
beq .8
cmp #CC.pInFiles
beq .8 Z
>LDA.G LineCntPtr
>LDA.G CC.LineCnts
dec
dec
sta (pData),y NZ
@ -159,43 +205,51 @@ FIO.FClose >LDA.G hFilePtr
.8 rts
*--------------------------------------
FIO.FCreate lda ZPCCCode
sta PCC.FH+PCC.FH.CS.END
sta PCC.FH+PCC.FH.CONST
sta PCC.FH+PCC.FH.CSSIZE
clc
adc ZPCCConst
sta PCC.FH+PCC.FH.ID.END
lda ZPCCCode+1
sta PCC.FH+PCC.FH.CS.END+1
sta PCC.FH+PCC.FH.CONST+1
sec
sbc #$20
sta PCC.FH+PCC.FH.CSSIZE+1
adc ZPCCConst+1
sta PCC.FH+PCC.FH.ID.END+1
lda ZPCCData
sta PCC.FH+PCC.FH.DSSIZE
sta PCC.FH+PCC.FH.DS.SIZE
lda ZPCCData+1
sta PCC.FH+PCC.FH.DSSIZE+1
>LDA.G CC.OutFileArg
>SYSCALL ArgV
>STYA ZPPtr1
sta PCC.FH+PCC.FH.DS.SIZE+1
>SS
>PUSHW L.MSG.GENERATING
>PUSHW ZPPtr1
>PUSHW.G CC.pOutFileName
>PUSHBI 2
>SYSCALL PrintF
>PUSHW ZPPtr1
>LIBC PrintF
>SR
bcs .9
>SS
>PUSHW.G CC.pOutFileName
>PUSHBI O.WRONLY+O.CREATE
>PUSHBI S.FI.T.BIN
>PUSHWI $2000 Aux type
>SYSCALL FOpen
>LIBC FOpen
>SR
bcs .9
>STA.G CC.hOutFile
>STYA.G CC.pOutFile
>PUSHA A = CC.hOutFile
>SS
>PUSHW.G CC.pOutFile
>PUSHW L.PCC.FH
>PUSHWI PCC.FH.L
>SYSCALL FWrite
>LIBC FWrite
>SR
.9 rts
*--------------------------------------

View File

@ -258,13 +258,9 @@ KW.FOR jsr SCOPE.New FOR (
jsr CORE.GetNCharNB skip '('
bcs .29
>LDYA L.CC.TYPEQUAL
jsr CC.LookupID
jsr DECL.GetType
bcs .1
jsr DECL.X
bcc .2
.19 rts
.29 lda #E.CSYN
@ -401,11 +397,13 @@ KW.SWITCH jsr CC.GetCharNB
bcs .99
.1 >LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .99
txa
jsr CC.Push push STMT.hMEM
phy
jsr CC.Push push STMT.pMEM
pla
jsr CC.Push
lda #0
jsr CC.Push push STMT.MemPtr
@ -445,12 +443,14 @@ KW.SWITCH.END lda #'J' define JMP Label
lda StmtPtr
clc
adc #STMT.hMEM
adc #STMT.pMEM
tay
lda (StmtStk),y
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (StmtStk),y
sta ZPPtr1
iny
lda (StmtStk),y
sta ZPPtr1+1
lda StmtPtr
clc
@ -526,12 +526,14 @@ KW.CASE ldy StmtPtr
lda StmtPtr
clc
adc #STMT.hMEM
adc #STMT.pMEM
tay
lda (StmtStk),y
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (StmtStk),y
sta ZPPtr1
iny
lda (StmtStk),y
sta ZPPtr1+1
jsr EXP.GetIntegral
bcs .99
@ -715,17 +717,6 @@ KW.TestnZero jsr EXP.GetYASizeOfInAX
>LDYA L.PCC.TestnZeroX
jmp CODE.EmitPCC
.9 rts
*--------------------------------------
* Input : Value on Stack, Y,A = Type/Qual
*--------------------------------------
KW.StackDiscard jsr TYPE.SizeOf
txa
beq .8 void
jsr CODE.RemLocal
.8 clc
.9 rts
*--------------------------------------
MAN

View File

@ -2,28 +2,30 @@ NEW
AUTO 3,1
*--------------------------------------
CC.Link >LDYA L.MSG.LINKING
>SYSCALL PutS
>LIBC PutS
ldy #0
lda #1
lda #2
.1 >STYA ZPPtr1 SymID
* >DEBUG
>PUSHB.G CC.hSyms
.1 >SS
>STYA ZPPtr1 SymID
>PUSHW.G CC.pSyms
>PUSHW ZPPtr1 SymID
>PUSHW pData
>SYSCALL SListGetByID
>KAPI SListGetByID
>SR
bcs .8
>STYA ZPPtr2 NextID
>PUSHB.G CC.hSyms
>SS
>PUSHW.G CC.pSyms
>PUSHW ZPPtr1 SymID
>PUSHW ZPSymBufPtr
>PUSHW ZP.pLSymBuf
>PUSHWI 65535 All
>PUSHWZ from Start
>SYSCALL SListGetData
>KAPI SListGetData
>SR
bcs .99
>LDA.G bVerbose
@ -32,13 +34,13 @@ CC.Link >LDYA L.MSG.LINKING
jsr CC.Link.Dump
.2 ldy #SYM.SC
lda (ZPSymBufPtr),y
lda (ZP.pLSymBuf),y
bne .7 SYM.SC.STATIC
ldy #SYM.Addr+1
lda (ZPSymBufPtr),y
lda (ZP.pLSymBuf),y
dey
ora (ZPSymBufPtr),y
ora (ZP.pLSymBuf),y
bne .7
jsr CC.Link.Lookup
@ -51,6 +53,8 @@ CC.Link >LDYA L.MSG.LINKING
jmp .1
.8 clc
* >DEBUG
rts
.9 >LDA.G bVerbose
@ -64,16 +68,11 @@ CC.Link >LDYA L.MSG.LINKING
*--------------------------------------
* Input : pData = Symbol
*--------------------------------------
CC.Link.Lookup >LDYA L.CC.SYSCALL
CC.Link.Lookup >LDYA L.CC.LIBC
jsr CC.Link.LookupYA
ldx #1
bcc .99
>LDYA L.CC.FPUCALL
jsr CC.Link.LookupYA
ldx #2
bcc .99
>LDA.G LibCount
* sec
beq .99
@ -82,11 +81,15 @@ CC.Link.Lookup >LDYA L.CC.SYSCALL
sta ArgIndex
clc
.1 adc #hLibOs
.1 asl
adc #pLibOs
tay
lda (pData),y
pha
iny
lda (pData),y
ply
>SYSCALL GetMemPtr
jsr CC.Link.LookupYA
bcs .2
@ -104,7 +107,7 @@ CC.Link.Lookup >LDYA L.CC.SYSCALL
.99 rts
*--------------------------------------
CC.Link.LookupYA
>STYA ZPLookupPtr
>STYA ZP.pLookup
ldy #$ff
@ -115,16 +118,16 @@ CC.Link.LookupYA
tya
tax Symbol Len
.2 lda (ZPLookupPtr)
.2 lda (ZP.pLookup)
beq .9 Ending 0, not found....
txa Get Back Len
cmp (ZPLookupPtr) Same Len ?
cmp (ZP.pLookup) Same Len ?
bne .4
tay
.3 lda (ZPLookupPtr),y
.3 lda (ZP.pLookup),y
dey
cmp (pData),y
@ -133,15 +136,15 @@ CC.Link.LookupYA
tya
bne .3
lda (ZPLookupPtr)
lda (ZP.pLookup)
tay
iny
lda (ZPLookupPtr),y get fID
lda (ZP.pLookup),y get fID
clc
rts
.4 lda (ZPLookupPtr)
.4 lda (ZP.pLookup)
inc
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol\ID
bra .2
@ -149,33 +152,22 @@ CC.Link.LookupYA
.9 sec
rts
*--------------------------------------
* A=ID X=SYS|FPU|LIB
* A=ID X=SYS|LIB
*--------------------------------------
CC.Link.Update ldy #SYM.Addr
sta (ZPSymBufPtr),y
sta (ZP.pLSymBuf),y
iny
txa
sta (ZPSymBufPtr),y
sta (ZP.pLSymBuf),y
>PUSHB.G CC.hSyms
>SS
>PUSHW.G CC.pSyms
>PUSHW ZPPtr1 SymID
>PUSHW ZPSymBufPtr
>PUSHBI 0
ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.FUNC
bne .1
ldy #SYM.DefSize
lda (ZPSymBufPtr),y
bra .2
.1 lda #SYM.F.MAX
.2 >PUSHA
>SYSCALL SListSetData
>PUSHW ZP.pLSymBuf
>PUSHWI SYM
>KAPI SListSetData
>SR
rts
*--------------------------------------
CC.Link.Dump ldy #$ff
@ -191,6 +183,7 @@ CC.Link.Dump ldy #$ff
lda (pData),y
sta ZPPtr3+1
>SS
>PUSHW L.MSG.LINKING2
>PUSHW ZPPtr1 ID
@ -198,58 +191,64 @@ CC.Link.Dump ldy #$ff
>PUSHW pData Name
>PUSHB (ZPSymBufPtr) SYM.T
>PUSHB (ZP.pLSymBuf) SYM.T
ldy #1
>PUSHB (ZPSymBufPtr),y SYM.Q
>PUSHB (ZP.pLSymBuf),y SYM.Q
iny
>PUSHB (ZPSymBufPtr),y SYM.SC
>PUSHB (ZP.pLSymBuf),y SYM.SC
ldy #SYM.DefSize
>PUSHB (ZPSymBufPtr),y
ldy #SYM.Cnt
>PUSHB (ZP.pLSymBuf),y
ldy #SYM.SizeOf+1
>PUSHB (ZPSymBufPtr),y
>PUSHB (ZP.pLSymBuf),y
dey
>PUSHB (ZPSymBufPtr),y
>PUSHB (ZP.pLSymBuf),y
ldy #SYM.Addr+1
>PUSHB (ZPSymBufPtr),y
>PUSHB (ZP.pLSymBuf),y
dey
>PUSHB (ZPSymBufPtr),y
>PUSHB (ZP.pLSymBuf),y
>PUSHBI 14
>SYSCALL PrintF
>LIBC PrintF
>SR
rts
*--------------------------------------
CC.Link.CheckMain
>PUSHB.G CC.hSyms
>SS
>PUSHW.G CC.pSyms
>PUSHW L.CC.MAIN
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
>PUSHWI 0 NextPtr
>KAPI SListLookup
>SR
bcs .9
>STYA ZPPtr1 SymID
>PUSHB.G CC.hSyms
>SS
>PUSHW.G CC.pSyms
>PUSHW ZPPtr1 SymID
>PUSHW ZPSymBufPtr
>PUSHW ZP.pLSymBuf
>PUSHWI 65535 all
>PUSHWZ From Start
>SYSCALL SListGetData
>KAPI SListGetData
>SR
bcs .99
ldy #SYM.Addr
lda (ZPSymBufPtr),y
lda (ZP.pLSymBuf),y
iny
ora (ZPSymBufPtr),y
ora (ZP.pLSymBuf),y
beq .9
lda (ZPSymBufPtr),y
lda (ZP.pLSymBuf),y
sta PCC.FH+PCC.FH.MAIN+1
dey
lda (ZPSymBufPtr),y
lda (ZP.pLSymBuf),y
sta PCC.FH+PCC.FH.MAIN
* clc
@ -257,7 +256,7 @@ CC.Link.CheckMain
rts
.9 >LDYA L.MSG.NOMAIN
>SYSCALL putS
>LIBC putS
lda #E.CSYN
sec
.99 rts

View File

@ -10,20 +10,21 @@ PCC.FH .PH $2000
PCC.FH.ORG cld
jmp (PCC.FH.JMP,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #2 BIN Layout Version 2
.DA #0 S.PS.F.EVENT
.DA #0
PCC.FH.CSSIZE .EQ *-PCC.FH.ORG
.DA $FFFF Code Size (without Constants)
PCC.FH.DSSIZE .EQ *-PCC.FH.ORG
PCC.FH.CS.END .EQ *-PCC.FH.ORG
.DA $FFFF
PCC.FH.ID.END .EQ *-PCC.FH.ORG
.DA $FFFF
PCC.FH.DS.SIZE .EQ *-PCC.FH.ORG
.DA $FFFF Data Size
.DA #256 Stack Size
.DA #4 ZP Size
.DA 0
PCC.FH.JMP .DA PCC.FH.INIT
.DA PCC.FH.RUN
.DA PCC.FH.DOEVENT
.DA PCC.FH.SIG
.DA PCC.FH.QUIT
PCC.FH.CONST .EQ *-PCC.FH.ORG
.DA $FFFF
@ -31,7 +32,7 @@ PCC.FH.CONST .EQ *-PCC.FH.ORG
PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.CONST
>STYA ZS.RT.Ptr1
* >DEBUG
ldx #0
.1 lda (ZS.RT.Ptr1)
@ -40,19 +41,14 @@ PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.CONST
phx
>LDYA ZS.RT.Ptr1
>SYSCALL LoadLib
>LIBC LoadLib
plx
bcs .9
sta PCC.PH.hLIBs,x
phx
>SYSCALL GetMemPtr
plx
>STYA PCC.PH.JMPLIBs+1,x
inx
inx
inx
inx
ldy #0
@ -72,17 +68,16 @@ PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.CONST
.8 clc
.9 rts
PCC.FH.QUIT ldx #12
PCC.FH.QUIT ldx #9
.1 lda PCC.PH.hLIBs,x
.1 >LDYA PCC.PH.JMPLIBs+1,x
beq .2
phx
>SYSCALL UnloadLib
>LIBC UnloadLib
plx
.2 dex
dex
dex
dex
bpl .1
@ -90,16 +85,12 @@ PCC.FH.QUIT ldx #12
clc
rts
PCC.PH.hLIBs .DA #0
PCC.PH.JMPLIBs jmp $FFFF
.DA #0
jmp $FFFF
.DA #0
jmp $FFFF
.DA #0
jmp $FFFF
PCC.PH.JMPLIBs jmp $0000
jmp $0000
jmp $0000
jmp $0000
PCC.FH.DOEVENT sec do not discard TIMER event
PCC.FH.SIG sec
rts
* int main(int argc, char *argv[]) ;
@ -107,7 +98,7 @@ PCC.FH.DOEVENT sec do not discard TIMER event
PCC.FH.RUN lda #0
.1 pha
>SYSCALL ArgV
>LIBC ArgV
bcs .2
>STYA ZS.RT.Ptr1
@ -131,85 +122,102 @@ PCC.FH.RUN lda #0
.2 pla
jsr PCC.FH.CS Execute INIT code
lda #0
>PUSHA returned int=0
>PUSHA
>PUSHA int ARGC (hi byte=0)
ldy #S.PS.ARGC
lda (pPS),y
jsr A2osX.GetPSy
>PUSHA int ARGC (lo byte)
>PUSHW pData *char[] ARGV
* >DEBUG
* >DEBUG
PCC.FH.MAIN .EQ *-PCC.FH.ORG+1
jsr $FFFF jsr main
>PULLA
inc pStack pull returned int
tya returned int in Y,A
sec
rts
*PCC.FH.SYSCALL jsr A2osX.SYSCALL
* bcc .8
* inc pStack
* eor #$ff
* inc
* >PUSHA int -ERROR code...
* ldy #1
* lda #$FF
* sta (pStack),y FFxx on stack
*.8
PCC.FH.CS .EP
PCC.FH.L .EQ *-PCC.FH
*--------------------------------------
PCC.DEBUG .DA #PCC.DEBUG.L
>DEBUG
PCC.DEBUG.L .EQ *-PCC.DEBUG
PCC.DEBUG.L .EQ *-PCC.DEBUG-1
*--------------------------------------
PCC.SLEEP .DA #PCC.SLEEP.L
>SLEEP
PCC.SLEEP.L .EQ *-PCC.SLEEP
PCC.SLEEP.L .EQ *-PCC.SLEEP-1
*--------------------------------------
PCC.ENTER .DA #PCC.ENTER.L
PCC.SF .DA #PCC.SF.L
ldx pStack
dex
dex
dex
dex
dex
stx pStack
* stx pBase
PCC.SF.L .EQ *-PCC.SF-1
*--------------------------------------
PCC.SL .DA #PCC.SL.L
ldx pStack
dex
dex
dex
dex
stx pStack
* stx pBase
PCC.SL.L .EQ *-PCC.SL-1
*--------------------------------------
PCC.SS .DA #PCC.SS.L
ldx pStack
phx
PCC.SS.L .EQ *-PCC.SS-1
*--------------------------------------
PCC.SR .DA #PCC.SR.L
plx
stx pStack
PCC.SR.L .EQ *-PCC.SR-1
*--------------------------------------
PCC.BS .DA #PCC.BS.L
ldx pBase
phx
clc
adc pStack A = Local Size
sta pBase
PCC.ENTER.L .EQ *-PCC.ENTER
ldx pStack
stx pBase
PCC.BS.L .EQ *-PCC.BS-1
*--------------------------------------
PCC.LEAVE .DA #PCC.LEAVE.L
ldx pBase
stx pStack
PCC.BR .DA #PCC.BR.L
plx
stx pBase
rts
PCC.LEAVE.L .EQ *-PCC.LEAVE
PCC.BR.L .EQ *-PCC.BR-1
*--------------------------------------
PCC.ADDLOCAL .DA #PCC.ADDLOCAL.L
clc
adc pStack
sta pStack
PCC.ADDLOCAL.L .EQ *-PCC.ADDLOCAL
PCC.ADDLOCAL.L .EQ *-PCC.ADDLOCAL-1
*--------------------------------------
PCC.REMLOCAL .DA #PCC.REMLOCAL.L
clc
adc pStack
sta pStack
PCC.REMLOCAL.L .EQ *-PCC.REMLOCAL-1
*--------------------------------------
PCC.SetRetValue .DA #PCC.SetRetValue.L
ldy #0
.1 >PULLA
.1 lda (pStack)
inc pStack
sta (pBase),y
iny
dex
bne .1
PCC.SetRetValue.L .EQ *-PCC.SetRetValue
PCC.SetRetValue.L .EQ *-PCC.SetRetValue-1
*--------------------------------------
PCC.8to16 .DA #PCC.8to16.L
lda (pStack)
@ -219,7 +227,7 @@ PCC.8to16 .DA #PCC.8to16.L
pla
>PUSHA
PCC.8to16.L .EQ *-PCC.8to16
PCC.8to16.L .EQ *-PCC.8to16-1
*--------------------------------------
PCC.JmpOnYA .DA #PCC.JmpOnYA.L
cmp (pStack)
@ -229,28 +237,30 @@ PCC.JmpOnYA .DA #PCC.JmpOnYA.L
cmp (pStack),y
.2 bne .2+5 skip JMP abs
PCC.JmpOnYA.L .EQ *-PCC.JmpOnYA
PCC.JmpOnYA.L .EQ *-PCC.JmpOnYA-1
*--------------------------------------
PCC.Pop16 .DA #PCC.Pop16.L
inc pStack
inc pStack
PCC.Pop16.L .EQ *-PCC.Pop16
PCC.Pop16.L .EQ *-PCC.Pop16-1
*--------------------------------------
PCC.TestZero1 .DA #PCC.TestZero1.L
>PULLA
lda (pStack)
inc pStack
tay
.2 bne .2+5 skip JMP abs
PCC.TestZero1.L .EQ *-PCC.TestZero1
PCC.TestZero1.L .EQ *-PCC.TestZero1-1
*--------------------------------------
PCC.TestZero2 .DA #PCC.TestZero2.L
>PULLA
lda (pStack)
inc pStack
ora (pStack)
inc pStack
tay
.2 bne .2+5 skip JMP abs
PCC.TestZero2.L .EQ *-PCC.TestZero2
PCC.TestZero2.L .EQ *-PCC.TestZero2-1
*--------------------------------------
PCC.TestZeroX .DA #PCC.TestZeroX.L
lda #0
@ -263,23 +273,25 @@ PCC.TestZeroX .DA #PCC.TestZeroX.L
tay
.2 bne .2+5 skip JMP abs
PCC.TestZeroX.L .EQ *-PCC.TestZeroX
PCC.TestZeroX.L .EQ *-PCC.TestZeroX-1
*--------------------------------------
PCC.TestnZero1 .DA #PCC.TestnZero1.L
>PULLA
lda (pStack)
inc pStack
tay
.2 beq .2+5 skip JMP abs
PCC.TestnZero1.L .EQ *-PCC.TestnZero1
PCC.TestnZero1.L .EQ *-PCC.TestnZero1-1
*--------------------------------------
PCC.TestnZero2 .DA #PCC.TestnZero2.L
>PULLA
lda (pStack)
inc pStack
ora (pStack)
inc pStack
tay
.2 beq .2+5 skip JMP abs
PCC.TestnZero2.L .EQ *-PCC.TestnZero2
PCC.TestnZero2.L .EQ *-PCC.TestnZero2-1
*--------------------------------------
PCC.TestnZeroX .DA #PCC.TestnZeroX.L
lda #0
@ -292,17 +304,27 @@ PCC.TestnZeroX .DA #PCC.TestnZeroX.L
tay
.2 beq .2+5 skip JMP abs
PCC.TestnZeroX.L .EQ *-PCC.TestnZeroX
PCC.TestnZeroX.L .EQ *-PCC.TestnZeroX-1
*--------------------------------------
PCC.PushLAddrH .DA #PCC.PushLAddrH.L
>PUSHB pBase+1
PCC.PushLAddrH.L .EQ *-PCC.PushLAddrH
PCC.PushLAddrH.L .EQ *-PCC.PushLAddrH-1
*--------------------------------------
PCC.PushLAddrL .DA #PCC.PushLAddrL.L
clc
adc pBase
>PUSHA
PCC.PushLAddrL.L .EQ *-PCC.PushLAddrL
PCC.PushLAddrL.L .EQ *-PCC.PushLAddrL-1
*--------------------------------------
PCC.GetIAddrY .DA #PCC.GetIAddrY.L
clc
adc PCC.FH.ORG+PCC.FH.CONST
tay
PCC.GetIAddrY.L .EQ *-PCC.GetIAddrY-1
*--------------------------------------
PCC.GetIAddrA .DA #PCC.GetIAddrA.L
adc PCC.FH.ORG+PCC.FH.CONST+1
PCC.GetIAddrA.L .EQ *-PCC.GetIAddrA-1
*--------------------------------------
PCC.PushIAddr .DA #PCC.PushIAddr.L
clc
@ -315,7 +337,7 @@ PCC.PushIAddr .DA #PCC.PushIAddr.L
ldy #1
sta (pStack),y
PCC.PushIAddr.L .EQ *-PCC.PushIAddr
PCC.PushIAddr.L .EQ *-PCC.PushIAddr-1
*--------------------------------------
PCC.PushUAddr .DA #PCC.PushUAddr.L
clc
@ -328,7 +350,7 @@ PCC.PushUAddr .DA #PCC.PushUAddr.L
ldy #1
sta (pStack),y
PCC.PushUAddr.L .EQ *-PCC.PushUAddr
PCC.PushUAddr.L .EQ *-PCC.PushUAddr-1
*--------------------------------------
PCC.GetLAddr1 .DA #PCC.GetLAddr1.L
clc
@ -337,7 +359,7 @@ PCC.GetLAddr1 .DA #PCC.GetLAddr1.L
lda pBase+1
sta ZS.RT.Ptr1+1
PCC.GetLAddr1.L .EQ *-PCC.GetLAddr1
PCC.GetLAddr1.L .EQ *-PCC.GetLAddr1-1
*--------------------------------------
PCC.GetIAddr1 .DA #PCC.GetIAddr1.L
clc
@ -347,7 +369,7 @@ PCC.GetIAddr1 .DA #PCC.GetIAddr1.L
adc PCC.FH.ORG+PCC.FH.CONST+1
sta ZS.RT.Ptr1+1
PCC.GetIAddr1.L .EQ *-PCC.GetIAddr1
PCC.GetIAddr1.L .EQ *-PCC.GetIAddr1-1
*--------------------------------------
PCC.GetUAddr1 .DA #PCC.GetUAddr1.L
clc
@ -357,42 +379,48 @@ PCC.GetUAddr1 .DA #PCC.GetUAddr1.L
adc pData+1
sta ZS.RT.Ptr1+1
PCC.GetUAddr1.L .EQ *-PCC.GetUAddr1
PCC.GetUAddr1.L .EQ *-PCC.GetUAddr1-1
*--------------------------------------
PCC.PopAddr1 .DA #PCC.PopAddr1.L
>PULLA
lda (pStack)
inc pStack
sta ZS.RT.Ptr1
>PULLA
lda (pStack)
inc pStack
sta ZS.RT.Ptr1+1
PCC.PopAddr1.L .EQ *-PCC.PopAddr1
PCC.PopAddr1.L .EQ *-PCC.PopAddr1-1
*--------------------------------------
PCC.PopValue1 .DA #PCC.PopValue1.L
>PULLA
lda (pStack)
inc pStack
sta (ZS.RT.Ptr1)
PCC.PopValue1.L .EQ *-PCC.PopValue1
PCC.PopValue1.L .EQ *-PCC.PopValue1-1
*--------------------------------------
PCC.PopValue2 .DA #PCC.PopValue2.L
>PULLA
lda (pStack)
inc pStack
sta (ZS.RT.Ptr1)
>PULLA
lda (pStack)
inc pStack
ldy #1
sta (ZS.RT.Ptr1),y
PCC.PopValue2.L .EQ *-PCC.PopValue2
PCC.PopValue2.L .EQ *-PCC.PopValue2-1
*--------------------------------------
PCC.PopValueX .DA #PCC.PopValueX.L
ldy #0
.1 >PULLA
.1 lda (pStack)
inc pStack
sta (ZS.RT.Ptr1),y
iny
dex
bpl .1
PCC.PopValueX.L .EQ *-PCC.PopValueX
PCC.PopValueX.L .EQ *-PCC.PopValueX-1
*--------------------------------------
PCC.GetLAddr2 .DA #PCC.GetLAddr2.L
clc
@ -401,7 +429,7 @@ PCC.GetLAddr2 .DA #PCC.GetLAddr2.L
lda pBase+1
sta ZS.RT.Ptr2+1
PCC.GetLAddr2.L .EQ *-PCC.GetLAddr2
PCC.GetLAddr2.L .EQ *-PCC.GetLAddr2-1
*--------------------------------------
PCC.GetIAddr2 .DA #PCC.GetIAddr2.L
clc
@ -411,7 +439,7 @@ PCC.GetIAddr2 .DA #PCC.GetIAddr2.L
adc PCC.FH.ORG+PCC.FH.CONST+1
sta ZS.RT.Ptr2+1
PCC.GetIAddr2.L .EQ *-PCC.GetIAddr2
PCC.GetIAddr2.L .EQ *-PCC.GetIAddr2-1
*--------------------------------------
PCC.GetUAddr2 .DA #PCC.GetUAddr2.L
clc
@ -421,15 +449,17 @@ PCC.GetUAddr2 .DA #PCC.GetUAddr2.L
adc pData+1
sta ZS.RT.Ptr2+1
PCC.GetUAddr2.L .EQ *-PCC.GetUAddr2
PCC.GetUAddr2.L .EQ *-PCC.GetUAddr2-1
*--------------------------------------
PCC.PopAddr2 .DA #PCC.PopAddr2.L
>PULLA
lda (pStack)
inc pStack
sta ZS.RT.Ptr2
>PULLA
lda (pStack)
inc pStack
sta ZS.RT.Ptr2+1
PCC.PopAddr2.L .EQ *-PCC.PopAddr2
PCC.PopAddr2.L .EQ *-PCC.PopAddr2-1
*--------------------------------------
PCC.Deref2 .DA #PCC.Deref2.L
ldy #1
@ -440,23 +470,23 @@ PCC.Deref2 .DA #PCC.Deref2.L
sta ZS.RT.Ptr2
sty ZS.RT.Ptr2+1
PCC.Deref2.L .EQ *-PCC.Deref2
PCC.Deref2.L .EQ *-PCC.Deref2-1
*--------------------------------------
PCC.PushDeref2 .DA #PCC.PushDeref2.L
ldy #1
>PUSHB (ZS.RT.Ptr2),y
>PUSHB (ZS.RT.Ptr2)
PCC.PushDeref2.L .EQ *-PCC.PushDeref2
PCC.PushDeref2.L .EQ *-PCC.PushDeref2-1
*--------------------------------------
PCC.PushValue1 .DA #PCC.PushValue1.L
PCC.GetValueA .DA #PCC.GetValueA.L
lda (ZS.RT.Ptr2)
>PUSHA
PCC.PushValue1.L .EQ *-PCC.PushValue1
PCC.GetValueA.L .EQ *-PCC.GetValueA-1
*--------------------------------------
PCC.PushValue2 .DA #PCC.PushValue2.L
PCC.GetValueYA .DA #PCC.GetValueYA.L
ldy #1
lda (ZS.RT.Ptr2),y
@ -464,7 +494,7 @@ PCC.PushValue2 .DA #PCC.PushValue2.L
lda (ZS.RT.Ptr2)
>PUSHA
PCC.PushValue2.L .EQ *-PCC.PushValue2
PCC.GetValueYA.L .EQ *-PCC.GetValueYA-1
*--------------------------------------
PCC.PushValueY .DA #PCC.PushValueY.L
@ -473,13 +503,13 @@ PCC.PushValueY .DA #PCC.PushValueY.L
dey
bpl .1
PCC.PushValueY.L .EQ *-PCC.PushValueY
PCC.PushValueY.L .EQ *-PCC.PushValueY-1
*--------------------------------------
PCC.Inc1 .DA #PCC.Inc1.L
lda (ZS.RT.Ptr2)
inc
sta (ZS.RT.Ptr2)
PCC.Inc1.L .EQ *-PCC.Inc1
PCC.Inc1.L .EQ *-PCC.Inc1-1
*--------------------------------------
PCC.Inc2 .DA #PCC.Inc2.L
lda (ZS.RT.Ptr2)
@ -494,7 +524,7 @@ PCC.Inc2 .DA #PCC.Inc2.L
.1
PCC.Inc2.L .EQ *-PCC.Inc2
PCC.Inc2.L .EQ *-PCC.Inc2-1
*--------------------------------------
PCC.Inc4 .DA #PCC.Inc4.L
lda (ZS.RT.Ptr2)
@ -515,13 +545,13 @@ PCC.Inc4 .DA #PCC.Inc4.L
.2
PCC.Inc4.L .EQ *-PCC.Inc4
PCC.Inc4.L .EQ *-PCC.Inc4-1
*--------------------------------------
PCC.Dec1 .DA #PCC.Dec1.L
lda (ZS.RT.Ptr2)
dec
sta (ZS.RT.Ptr2)
PCC.Dec1.L .EQ *-PCC.Dec1
PCC.Dec1.L .EQ *-PCC.Dec1-1
*--------------------------------------
PCC.Dec2 .DA #PCC.Dec2.L
lda (ZS.RT.Ptr2)
@ -538,7 +568,7 @@ PCC.Dec2 .DA #PCC.Dec2.L
.1
PCC.Dec2.L .EQ *-PCC.Dec2
PCC.Dec2.L .EQ *-PCC.Dec2-1
*--------------------------------------
PCC.Dec4 .DA #PCC.Dec4.L
lda (ZS.RT.Ptr2)
@ -560,12 +590,13 @@ PCC.Dec4 .DA #PCC.Dec4.L
.2
PCC.Dec4.L .EQ *-PCC.Dec4
PCC.Dec4.L .EQ *-PCC.Dec4-1
*--------------------------------------
PCC.BOPS.bMUL .DA #PCC.BOPS.bMUL.L
ldx #0 result
>PULLA
lda (pStack)
inc pStack
tay b2
.1 tya
@ -588,7 +619,7 @@ PCC.BOPS.bMUL .DA #PCC.BOPS.bMUL.L
.8 txa
sta (pStack)
PCC.BOPS.bMUL.L .EQ *-PCC.BOPS.bMUL
PCC.BOPS.bMUL.L .EQ *-PCC.BOPS.bMUL-1
*--------------------------------------
PCC.BOPS.cMUL
*--------------------------------------
@ -602,10 +633,11 @@ PCC.BOPS.cMOD
*--------------------------------------
PCC.BOPS.ADD .DA #PCC.BOPS.ADD.L
clc
>PULLA
lda (pStack)
inc pStack
adc (pStack)
sta (pStack)
PCC.BOPS.ADD.L .EQ *-PCC.BOPS.ADD
PCC.BOPS.ADD.L .EQ *-PCC.BOPS.ADD-1
*--------------------------------------
PCC.BOPS.SUB .DA #PCC.BOPS.SUB.L
sec
@ -614,10 +646,11 @@ PCC.BOPS.SUB .DA #PCC.BOPS.SUB.L
sbc (pStack)
sta (pStack),y
inc pStack
PCC.BOPS.SUB.L .EQ *-PCC.BOPS.SUB
PCC.BOPS.SUB.L .EQ *-PCC.BOPS.SUB-1
*--------------------------------------
PCC.BOPS.SHL .DA #PCC.BOPS.SHL.L
>PULLA
lda (pStack)
inc pStack
tax
beq .8
@ -630,10 +663,11 @@ PCC.BOPS.SHL .DA #PCC.BOPS.SHL.L
sta (pStack)
.8
PCC.BOPS.SHL.L .EQ *-PCC.BOPS.SHL
PCC.BOPS.SHL.L .EQ *-PCC.BOPS.SHL-1
*--------------------------------------
PCC.BOPS.SHR .DA #PCC.BOPS.SHR.L
>PULLA
lda (pStack)
inc pStack
tax
beq .8
@ -646,10 +680,11 @@ PCC.BOPS.SHR .DA #PCC.BOPS.SHR.L
sta (pStack)
.8
PCC.BOPS.SHR.L .EQ *-PCC.BOPS.SHR
PCC.BOPS.SHR.L .EQ *-PCC.BOPS.SHR-1
*--------------------------------------
PCC.BOPS.L .DA #PCC.BOPS.L.L
>PULLA
lda (pStack)
inc pStack
cmp (pStack)
bcc .8
@ -659,10 +694,11 @@ PCC.BOPS.L .DA #PCC.BOPS.L.L
.8 lda #1
sta (pStack)
PCC.BOPS.L.L .EQ *-PCC.BOPS.L
PCC.BOPS.L.L .EQ *-PCC.BOPS.L-1
*--------------------------------------
PCC.BOPS.G .DA #PCC.BOPS.G.L
>PULLA
lda (pStack)
inc pStack
cmp (pStack)
beq .1
bcs .8
@ -673,10 +709,11 @@ PCC.BOPS.G .DA #PCC.BOPS.G.L
.8 lda #1
sta (pStack)
PCC.BOPS.G.L .EQ *-PCC.BOPS.G
PCC.BOPS.G.L .EQ *-PCC.BOPS.G-1
*--------------------------------------
PCC.BOPS.LE .DA #PCC.BOPS.LE.L
>PULLA
lda (pStack)
inc pStack
cmp (pStack)
bcc .8
beq .8
@ -687,10 +724,11 @@ PCC.BOPS.LE .DA #PCC.BOPS.LE.L
.8 lda #1
sta (pStack)
PCC.BOPS.LE.L .EQ *-PCC.BOPS.LE
PCC.BOPS.LE.L .EQ *-PCC.BOPS.LE-1
*--------------------------------------
PCC.BOPS.GE .DA #PCC.BOPS.GE.L
>PULLA
lda (pStack)
inc pStack
cmp (pStack)
bcs .8
@ -700,10 +738,11 @@ PCC.BOPS.GE .DA #PCC.BOPS.GE.L
.8 lda #1
sta (pStack)
PCC.BOPS.GE.L .EQ *-PCC.BOPS.GE
PCC.BOPS.GE.L .EQ *-PCC.BOPS.GE-1
*--------------------------------------
PCC.BOPS.EQ .DA #PCC.BOPS.EQ.L
>PULLA
lda (pStack)
inc pStack
cmp (pStack)
beq .1
@ -713,36 +752,40 @@ PCC.BOPS.EQ .DA #PCC.BOPS.EQ.L
.1 ror
sta (pStack)
PCC.BOPS.EQ.L .EQ *-PCC.BOPS.EQ
PCC.BOPS.EQ.L .EQ *-PCC.BOPS.EQ-1
*--------------------------------------
PCC.BOPS.NE .DA #PCC.BOPS.NE.L
>PULLA
lda (pStack)
inc pStack
eor (pStack)
sta (pStack)
PCC.BOPS.NE.L .EQ *-PCC.BOPS.NE
PCC.BOPS.NE.L .EQ *-PCC.BOPS.NE-1
*--------------------------------------
PCC.BOPS.LAND
*--------------------------------------
PCC.BOPS.AND .DA #PCC.BOPS.AND.L
>PULLA
lda (pStack)
inc pStack
and (pStack)
sta (pStack)
PCC.BOPS.AND.L .EQ *-PCC.BOPS.AND
PCC.BOPS.AND.L .EQ *-PCC.BOPS.AND-1
*--------------------------------------
PCC.BOPS.LOR
*--------------------------------------
PCC.BOPS.OR .DA #PCC.BOPS.OR.L
>PULLA
lda (pStack)
inc pStack
ora (pStack)
sta (pStack)
PCC.BOPS.OR.L .EQ *-PCC.BOPS.OR
PCC.BOPS.OR.L .EQ *-PCC.BOPS.OR-1
*--------------------------------------
PCC.BOPS.EOR .DA #PCC.BOPS.EOR.L
>PULLA
lda (pStack)
inc pStack
eor (pStack)
sta (pStack)
PCC.BOPS.EOR.L .EQ *-PCC.BOPS.EOR
PCC.BOPS.EOR.L .EQ *-PCC.BOPS.EOR-1
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s.pcc

View File

@ -9,8 +9,6 @@ SCOPE.New lda ScopePtr
sta ScopePtr
dec bLocalScope
iny
iny #SCOPE.LocalPtr
lda (ScopeStk),y
@ -39,9 +37,14 @@ SCOPE.New lda ScopePtr
iny
lda #0
sta (ScopeStk),y #SCOPE.ParamSize
iny
sta (ScopeStk),y #SCOPE.FrameSize
iny
sta (ScopeStk),y #SCOPE.State
.DO _DBG_SCOPE=1
>SS
>PUSHW L.MSG.DEBUG.SCIN
jsr SCOPE.Push
@ -56,8 +59,8 @@ SCOPE.New lda ScopePtr
>PUSHB (ScopeStk),y
>PUSHBI 5
>SYSCALL PrintF
* >DEBUG
>LIBC PrintF
>SR
.FIN
clc
@ -84,11 +87,14 @@ SCOPE.RemLocal lda #'F' define FRAME SIZE
iny
iny
iny
iny
lda (ScopeStk),y #SCOPE.FrameSize
jmp CODE.RemLocal
*--------------------------------------
SCOPE.Close .DO _DBG_SCOPE=1
>SS
>PUSHW L.MSG.DEBUG.SCOUT
jsr SCOPE.Push
lda ScopePtr
@ -97,12 +103,14 @@ SCOPE.Close .DO _DBG_SCOPE=1
tay
iny
iny
iny
>PUSHB (ScopeStk),y #SCOPE.LocalPtr
iny
>PUSHB (ScopeStk),y #SCOPE.FrameSize
>PUSHBI 5
>SYSCALL PrintF
>LIBC PrintF
>SR
.FIN
lda ScopePtr
@ -112,9 +120,8 @@ SCOPE.Close .DO _DBG_SCOPE=1
sbc #SCOPE
sta ScopePtr
inc bLocalScope
.DO _DBG_SCOPE=1
>SS
>PUSHW L.MSG.DEBUG.SC
jsr SCOPE.Push
@ -129,8 +136,9 @@ SCOPE.Close .DO _DBG_SCOPE=1
>PUSHB (ScopeStk),y
>PUSHBI 5
>SYSCALL PrintF
* >DEBUG
>LIBC PrintF
>SR
.FIN
clc

View File

@ -4,63 +4,28 @@ NEW
STMT.Get jsr CC.GetCharNB
jsr CC.IsLetter
ldx #$ff
bcc .20
bcc .10
>LDYA L.CC.PREOPS ++var ?
jsr CC.LookupOP
bcs .9
bcs .90
.20 stx StmtPreOp
.10 stx StmtPreOp
jsr SYM.Lookup var or func() ?
jsr SYM.LLookup var or func() ?
bcs .99
ldy #SYM.SC
lda (ZPLookupSymPtr),y
cmp #SYM.SC.TYPEDEF
bne .60
*--------------------------------------
jsr CORE.GetNCharNB
bcs .9
ldy #SYM.Q
lda (ZPLookupSymPtr),y
pha
lda (ZPLookupSymPtr)
pha
jsr SYM.LookupFree
ply
pla
sec Reset Buffer
jmp DECL.YAC
*--------------------------------------
.60 ldy #SYM.Q
lda (ZPLookupSymPtr),y
bit #SYM.Q.FUNC
beq .61
lda (ZP.pLSymBuf),y
bit #SYM.Q.FUNCTION
beq .20
bit StmtPreOp
bpl .9 ++func ????????
bpl .90 ++func ????????
jsr F.CallNoRetV func( ... );
bcs .99
jmp SYM.LookupFree
jmp F.CallNoRetV func( ... );
*--------------------------------------
.61 jsr STMT.SetVar
bcs .99
jmp SYM.LookupFree
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
STMT.SetVar stz ExpState
.20 stz ExpState
jsr EXP.POSTOPS var++, var[0]... ?
bcs .99
@ -80,34 +45,12 @@ STMT.SetVar stz ExpState
cpx #0 TOTO : all AOPS
bne *
lda ExpState
bmi .90 VonStack
asl
bmi .7 AinPTR
asl
bmi .6 AonStack
jsr EXP.GetAddr1
bcc .7
rts
.6 >LDYA L.PCC.PopAddr1
jsr CODE.EmitPCC
* jsr CODE.DEBUG
>LDYA ZP.pLSymBuf
jsr EXP.Eval
bcs .99
.7 ldy #SYM.Q
lda (ZPLookupSymPtr),y
pha
lda (ZPLookupSymPtr)
tay
pla get expected T/Q
jsr EXP.Eval
jsr SYM.GetAddr1
bcs .99
jmp SYM.PopValue
@ -119,8 +62,6 @@ STMT.SetVar stz ExpState
sec
.99 rts
*--------------------------------------
*--------------------------------------
STMT.Stmt.END ldy StmtPtr
beq STMT.End.8 Global context
@ -168,9 +109,14 @@ STMT.End ldy StmtPtr STMT.KW
jmp (J.CC.KW.END,x)
*--------------------------------------
STMT.New00 lda #0
jsr CC.Push STMT.hMEM
jsr CC.Push STMT.pMEM
bcs STMT.New.RTS
* lda #0
jsr CC.Push
bcs STMT.New.RTS
* lda #0
jsr CC.Push STMT.MemPtr
bcs STMT.New.RTS
@ -211,12 +157,17 @@ STMT.SetType.9 lda #E.CSYN
*--------------------------------------
STMT.Close lda StmtPtr
clc
adc #STMT.hMEM
adc #STMT.pMEM
tay
lda (StmtStk),y
beq .1
pha
iny
lda (StmtStk),y
ply
>SYSCALL FreeMem
>LIBC Free
.1 ldy StmtPtr STMT.KW
iny STMT.TERM

File diff suppressed because it is too large Load Diff

50
BIN/CC.S.TAG.txt Normal file
View File

@ -0,0 +1,50 @@
NEW
AUTO 3,1
*--------------------------------------
TAG.New >SS
>PUSHW.G CC.pTags
>PUSHW ZP.pLineBuf
>PUSHWI 0 ScopeID
>PUSHWI ZP.pLineBuf NextPtr
>KAPI SListNewKey
>SR
bcs .9
>STYA ZPPtr1 TagID
.9 rts
*--------------------------------------
TAG.Store >SS
>PUSHW.G CC.pTags
>PUSHW ZPPtr1
>PUSHW ZP.pTypeBuf
>PUSHWI SYM
>KAPI SListAddData
>SR
rts
*--------------------------------------
TAG.Lookup >SS
>PUSHW.G CC.pTags
>PUSHW ZP.pLineBuf
>PUSHWI 0 ScopeID
>PUSHWI ZP.pLineBuf NextPtr
>KAPI SListLookup
>SR
bcs .9
>STYA ZPPtr1 Y,A = KeyID
>SS
>PUSHW.G CC.pTags
>PUSHW ZPPtr1
>PUSHW ZP.pTypeBuf
>PUSHWI 65535 all
>PUSHWZ From Start
>KAPI SListGetData
>SR
.9 rts
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s.tag
LOAD usr/src/bin/cc.s
ASM

View File

@ -1,65 +1,15 @@
NEW
AUTO 3,1
*--------------------------------------
TYPE.GetTQInYA >ENTER 2
lda #0
sta (pStack) Type
ldy #1
sta (pStack),y Qual
jsr .8
bcs .99
ldy #1
lda (pStack),y
pha
lda (pStack)
tay Y = Type
pla A = Qual
clc
.99 >LEAVE
rts
.8 jmp (J.CC.TYPEQUAL,x)
*--------------------------------------
TYPE.GetTQInYA2 >ENTER 2
lda (ZPLookupSymPtr)
sta (pStack) Type
ldy #SYM.Q
lda (ZPLookupSymPtr),y
* ldy #1
sta (pStack),y Qual
jsr TYPE.GetQ2
bcs .99
jsr SYM.LookupFree
ldy #1
lda (pStack),y
pha
lda (pStack)
tay Y = Type
pla A = Qual
clc
.99 >LEAVE
rts
*--------------------------------------
* Type Declaration keywords
*--------------------------------------
TYPE.CONST lda #SYM.Q.CONST
bra TYPE.VOLATILE.1
*--------------------------------------
TYPE.VOLATILE lda #SYM.Q.VOLATILE
TYPE.VOLATILE.1 ldy #1
ora (pStack),y
sta (pStack),y
TYPE.VOLATILE.1 ldy #SYM.Q
ora (ZP.pTypeBuf),y
sta (ZP.pTypeBuf),y
jsr CC.CheckSpace
bcs .9
@ -74,6 +24,11 @@ TYPE.VOLATILE.1 ldy #1
sec
rts
*--------------------------------------
TYPE.RESTRICT
lda #E.CSYN
sec
rts
*--------------------------------------
TYPE.STRUCT clc
.HS B0 BCS
*--------------------------------------
@ -81,17 +36,17 @@ TYPE.UNION sec
ror ZPPtr2+1 bStrucUnion
stz ZPPtr2 bNewTagDef
bra TYPE.SU.Pass1
bit bPass2
bpl TYPE.SU.1 Pass 1: create def
bpl TYPE.SU.Pass1 Pass 1: create def
*--------------------------------------
TYPE.SU.2 jsr CORE.GetCharNBNL
TYPE.SU.Pass2 jsr CORE.GetCharNBNL
bcs .98
cmp #'{'
beq .1 no TAG
jsr TYPE.GetTag
jsr TAG.Lookup
bcs .99
jsr CORE.GetNCharNBNL
@ -108,187 +63,104 @@ TYPE.SU.2 jsr CORE.GetCharNBNL
jsr CORE.GetNCharNB skip '}'
.8 lda #SYM.T.SU
jmp TYPE.GetQ
jsr TYPE.SetT
rts
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
TYPE.SU.1 ldy #SYM.T.SU
lda #0
ldx #SYM.SC.TAG
sec reset buffer
jsr SYM.BufInitYAXC
TYPE.SU.Pass1 jsr CORE.GetCharNBNL
bcs .97
cmp #'{'
beq .30 no TAG
jsr TAG.Lookup
bcs .20
jmp TYPE.SetQ
*--------------------------------------
.20 jsr TAG.New
bcs .99
sec
ror ZPPtr2 bNewTagDef
jsr CORE.GetCharNBNL
bcs .98
cmp #'{'
beq .30 no TAG
jsr TYPE.GetTag
bcc .20
jsr TYPE.NewTag
bne .98
*--------------------------------------
.30 lda #SYM.T.SU
sta (ZP.pTypeBuf) #SYM.T
jsr SCOPE.New
bcs .99
jsr TYPE.SetScope
.31 jsr CORE.GetNCharNBNL skip '{' of ';'
sec
ror ZPPtr2 bNewTagDef
*--------------------------------------
.20 jsr CORE.GetCharNBNL
bcs .98
cmp #'{'
beq .30
bit ZPPtr2 bNewTagDef
bmi .98
bra .38
*--------------------------------------
.30 jsr CORE.GetNCharNBNL skip '{' of ';'
bcs .98
.97 bcs .98
cmp #'}'
beq .37
>LDYA L.CC.TYPEQUAL
jsr CC.LookupID
bcs .98
jsr TYPE.NextBuf
cpx #4 no const nor volatile
bcc .98
jsr TYPE.GetTQInYA
jsr DECL.GetType
bcs .99
jsr TYPE.SizeOf get sizeof in X
ldy #SYM.Q no const nor volatile
lda (ZP.pTypeBuf),y
and #SYM.Q.CONST+SYM.Q.VOLATILE+SYM.Q.FUNCTION
bne .98
jsr TYPE.SU.AddYAX
jsr SYM.NewAuto
bcs .99
jsr SYM.Add0000 TODO: bitO & bitW
* TODO: bitO & bitW
* bcs .99
jsr SYM.Store
bcs .99
jsr SYM.AddName
bcs .99
jsr TYPE.PrevBuf
jsr CC.GetCharNB
cmp #';'
bne .98
bra .30
bra .31
*--------------------------------------
.37 jsr CORE.GetNCharNB skip '}'
bcs .98
jsr SYM.Add0000 Close F definition
jsr SCOPE.Close Close SU definition
bcs .99
bit ZPPtr2 bNewTagDef
bpl .38
jsr TYPE.StoreTag
jsr TAG.Store
bcs .99
*--------------------------------------
.38 lda #SYM.T.SU
jmp TYPE.GetQ
.38 jsr TYPE.SetQ
rts
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
TYPE.SU.AddYAX jsr SYM.AddWord add T/Q
bcs .99
bit ZPPtr2+1 bStrucUnion
bmi .1
ldy #SYM.SizeOf
lda (ZPSymBufPtr),y
pha
iny
lda (ZPSymBufPtr),y
ply
jsr SYM.AddWord Add Y/A Offset
bcs .99
txa
ldy #SYM.SizeOf
* clc
adc (ZPSymBufPtr),y
sta (ZPSymBufPtr),y
bcc .99
iny
lda #0
adc (ZPSymBufPtr),y
sta (ZPSymBufPtr),y
* clc
.99 rts
.1 txa
ldy #SYM.SizeOf
cmp (ZPSymBufPtr),y
bcs .2
sta (ZPSymBufPtr),y
.2 jmp SYM.Add0000 Add Y/A Offset (always 0 for union)
*--------------------------------------
TYPE.ENUM
lda #E.CSYN
sec
rts
*--------------------------------------
TYPE.NewTag >LDA.G CC.hTags
jsr SYM.NewKey
bcs .9
>STYA ZPPtr1 TagID
dec ZPPtr2 bNewTagDef = true
jsr CC.SkipX
.9 rts
*--------------------------------------
TYPE.GetTag >PUSHB.G CC.hTags
>PUSHW ZPLineBufPtr
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
bcs .9
phy Y,A = KeyID
pha
jsr CC.SkipX X = KeyLen
>PUSHB.G CC.hTags
pla
>PUSHA
pla
>PUSHA
>PUSHW ZPSymBufPtr
>PUSHWI 65535 all
>PUSHWZ From Start
>SYSCALL SListGetData
.9 rts
*--------------------------------------
TYPE.StoreTag >PUSHB.G CC.hTags
>PUSHW ZPPtr1
>PUSHW ZPSymBufPtr
>PUSHBI 0
ldy #SYM.DefSize
lda (ZPSymBufPtr),y
>PUSHA
>SYSCALL SListAddData
rts
*--------------------------------------
TYPE.SIGNED sec
.HS 90 BCC
*--------------------------------------
@ -337,46 +209,46 @@ TYPE.SHORT jsr CC.CheckSpace
rts
*--------------------------------------
TYPE.VOID lda #SYM.T.VOID
bra TYPE.GetQ
bra TYPE.SetT
TYPE.CHAR
TYPE.UCHAR lda #SYM.T.UCHAR
bra TYPE.GetQ
bra TYPE.SetT
TYPE.SCHAR lda #SYM.T.SCHAR
bra TYPE.GetQ
bra TYPE.SetT
TYPE.UINT lda #SYM.T.UINT
bra TYPE.GetQ
bra TYPE.SetT
TYPE.INT
TYPE.SINT lda #SYM.T.SINT
bra TYPE.GetQ
bra TYPE.SetT
TYPE.ULONG lda #SYM.T.ULONG
bra TYPE.GetQ
bra TYPE.SetT
TYPE.LONG
TYPE.SLONG lda #SYM.T.SLONG
bra TYPE.GetQ
bra TYPE.SetT
TYPE.FLOAT lda #SYM.T.FLOAT
TYPE.GetQ sta (pStack) T
TYPE.SetT sta (ZP.pTypeBuf) T
TYPE.GetQ2 jsr CC.GetCharNB
TYPE.SetQ jsr CC.GetCharNB
bcs .9
.1 cmp #'*'
bne .10
bne .8
ldy #1 Q
lda (pStack),y
ldy #SYM.Q
lda (ZP.pTypeBuf),y
clc
adc #SYM.Q.POINTER
bcs .9 more than ***
sta (pStack),y
sta (ZP.pTypeBuf),y
jsr CORE.GetNCharNB
bcc .1
@ -384,21 +256,6 @@ TYPE.GetQ2 jsr CC.GetCharNB
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
.10 jsr CC.IsLetter
bcs .8
>LDYA L.CC.FTYPES int fastcall f() ?
jsr CC.LookupID
bcs .8 next char is an identifier
ldy #1
lda (pStack),y
ora #SYM.Q.FUNC+SYM.Q.FASTCALL
sta (pStack),y
jsr CORE.GetNCharNB
bcs .9 next char is an identifier, ",", "(",")"
.8 clc
rts
@ -418,6 +275,112 @@ TYPE.SizeOf bit #SYM.Q.PPPOINTER
sec +1 for hMem Storage
rts
*--------------------------------------
TYPE.Lookup >STZW.G CC.TypeID
>SS
>PUSHW.G CC.pTypes
>PUSHW ZP.pLineBuf
>PUSHWI 0 ScopeID
>PUSHWI ZP.pLineBuf NextPtr
>KAPI SListLookup
>SR
bcs .9
>STYA.G CC.TypeID
>SS
>PUSHW.G CC.pTypes
>PUSHW.G CC.TypeID
>PUSHW ZP.pTypeBuf
>PUSHWI 65535 all
>PUSHWZ From Start
>KAPI SListGetData
>SR
.9 rts
*--------------------------------------
TYPE.Reset ldy #SYM-1
lda #0
.1 sta (ZP.pTypeBuf),y
dey
bpl .1
rts
*--------------------------------------
TYPE.New >SS
>PUSHW.G CC.pTypes
>PUSHW ZP.pLineBuf
>PUSHWI 0 ScopeID
>PUSHWI ZP.pLineBuf NextPtr
>KAPI SListNewKey
>SR
bcs .9
>STYA.G CC.TypeID
.9 rts
*--------------------------------------
TYPE.Store >SS
>PUSHW.G CC.pTypes
>PUSHW.G CC.TypeID
>PUSHW ZP.pTypeBuf
>PUSHWI SYM
>KAPI SListAddData
>SR
.9 rts
*--------------------------------------
TYPE.SetScope >LDA.G CC.ScopeID
ldy #SYM.ScopeID
sta (ZP.pTypeBuf),y
>LDA.G CC.ScopeID+1
ldy #SYM.ScopeID+1
sta (ZP.pTypeBuf),y
rts
*--------------------------------------
TYPE.IsVoid ldy #SYM.TypeID
lda (ZP.pTypeBuf),y
iny
ora (ZP.pTypeBuf),y
bne .9
ldy #SYM.Q
lda (ZP.pTypeBuf),y
and #SYM.Q.PPPOINTER+SYM.Q.AAARRAY
bne .9
lda (ZP.pTypeBuf) #SYM.T
cmp #SYM.T.VOID
* bne .9
.9 rts
*--------------------------------------
TYPE.NextBuf clc
lda ZP.pTypeBuf
adc #SYM
sta ZP.pTypeBuf
lda ZP.pTypeBuf+1
adc /SYM
sta ZP.pTypeBuf+1
rts
*--------------------------------------
TYPE.PrevBuf sec
lda ZP.pTypeBuf
sbc #SYM
sta ZP.pTypeBuf
lda ZP.pTypeBuf+1
sbc /SYM
sta ZP.pTypeBuf+1
rts
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s.type
LOAD usr/src/bin/cc.s

View File

@ -10,6 +10,7 @@ NEW
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------
_DBG_STK .EQ 0
_DBG_SYM .EQ 0
_DBG_SCOPE .EQ 0
_DBG_OUT .EQ 0
@ -17,7 +18,7 @@ _DBG_OUT .EQ 0
FILES.MAX .EQ 4
LIBS.MAX .EQ 4
SCOPE.MAX .EQ 16
LOOKUP.MAX .EQ 16
*LOOKUP.MAX .EQ 16
*--------------------------------------
SYM.T .EQ 0
SYM.T.VOID .EQ 1
@ -40,48 +41,42 @@ SYM.Q.AARRAY .EQ %00100000
SYM.Q.AAARRAY .EQ %00110000
SYM.Q.CONST .EQ %00001000
SYM.Q.VOLATILE .EQ %00000100
SYM.Q.FUNC .EQ %00000010
SYM.Q.FASTCALL .EQ %00000001
SYM.Q.RESTRICT .EQ %00000010
SYM.Q.FUNCTION .EQ %00000001
SYM.SC .EQ 2
SYM.SC.STATIC .EQ 0
SYM.SC.AUTO .EQ 2
SYM.SC.REGISTER .EQ 4
SYM.SC.EXTERN .EQ 6
SYM.SC.TYPEDEF .EQ 8
SYM.SC.DEFINE .EQ 10
SYM.SC.TAG .EQ 12
SYM.DefSize .EQ 3
SYM.Cnt .EQ 3 Array [] cnt / f param cnt
SYM.SizeOf .EQ 4
SYM.Addr .EQ 6
SYM.BitO .EQ 8
SYM.BitW .EQ 9
SYM.ScopeID .EQ 10
SYM.TypeID .EQ 10
SYM.ScopeID .EQ 12
SYM.A1 .EQ 14
SYM.A2 .EQ 16
SYM.A3 .EQ 18
*
*
SYM.Def .EQ 14 Funtions : fTQ,a1TQ,a2TQ....
*
SYM .EQ 16
SYM.F.MAX .EQ 64
*--------------------------------------
SU.F.T .EQ 0
SU.F.Q .EQ 1
SU.F.O .EQ 2
SU.F.BitO .EQ 4
SU.F.BitW .EQ 5
SU.F.Name .EQ 6
SYM .EQ 20
*--------------------------------------
SCOPE.ID .EQ 0
SCOPE.LocalPtr .EQ 2
SCOPE.FrameSize .EQ 3
SCOPE.ParamSize .EQ 3
SCOPE.FrameSize .EQ 4
SCOPE.State .EQ 5
*
SCOPE .EQ 4
SCOPE .EQ 6
*--------------------------------------
STMT.hMEM .EQ 3 switch/case
STMT.MemPtr .EQ 2
STMT.TERM .EQ 1
STMT.KW .EQ 0
STMT.TERM .EQ 1 '}' or ';'
STMT.MemPtr .EQ 2
STMT.pMEM .EQ 3 switch/case
*
STMT .EQ 4
STMT .EQ 5
*--------------------------------------
*--------------------------------------
@ -101,23 +96,26 @@ ZPCCConst .BS 2
ZPCCData .BS 2
ScopePtr .BS 1
StmtPtr .BS 1
ScopeStk .BS 2
StmtPtr .BS 1
StmtStk .BS 2
ZPLineBufPtr .BS 2
ZPLookupPtr .BS 2
ZPSymBufPtr .BS 2
ZPLookupSymPtr .BS 2
ZP.pLineBuf .BS 2
ZP.pLookup .BS 2
ZP.pTypeBuf .BS 2
ZP.pLSymBuf .BS 2
ZP.pRSymBuf .BS 2
bLocalScope .BS 1
StmtPreOp .BS 1
ExpState .BS 1
*ExpState.VinYA .EQ $10
ExpState.VinReg .EQ $10
ExpState.AonStack .EQ $20
ExpState.AinPTR .EQ $40
ExpState.VonStack .EQ $80
* .BS 1
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
@ -125,20 +123,20 @@ ZS.END .ED
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT
.DA #2 BIN Layout Version 2
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data Size
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #256 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
*--------------------------------------
L.MSG.GREETINGS .DA MSG.GREETINGS
@ -147,13 +145,18 @@ L.MSG.READING .DA MSG.READING
L.MSG.LINKING .DA MSG.LINKING
L.MSG.LINKING2 .DA MSG.LINKING2
L.MSG.GENERATING .DA MSG.GENERATING
.DO _DBG_STK=1
L.MSG.DEBUG.STK .DA MSG.DEBUG.STK
.FIN
.DO _DBG_SYM=1
L.MSG.DEBUG.SYMN .DA MSG.DEBUG.SYMN
L.MSG.DEBUG.SYMU .DA MSG.DEBUG.SYMU
L.MSG.DEBUG.SYMS .DA MSG.DEBUG.SYMS
L.MSG.DEBUG.SYMG .DA MSG.DEBUG.SYMG
L.MSG.DEBUG.SYMNL .DA MSG.DEBUG.SYMNL
L.MSG.DEBUG.SYMSL .DA MSG.DEBUG.SYMSL
L.MSG.DEBUG.SYML .DA MSG.DEBUG.SYML
L.MSG.DEBUG.SYMR .DA MSG.DEBUG.SYMR
L.MSG.DEBUG.LBLN .DA MSG.DEBUG.LBLN
L.MSG.DEBUG.LBLS .DA MSG.DEBUG.LBLS
.FIN
.DO _DBG_SCOPE=1
L.MSG.DEBUG.SCIN .DA MSG.DEBUG.SCIN
@ -186,12 +189,12 @@ L.CC.SCSPEC .DA CC.SCSPEC
L.CC.TYPEQUAL .DA CC.TYPEQUAL
L.CC.TYPESPEC .DA CC.TYPESPEC
L.CC.TYPES .DA CC.TYPES
L.CC.FTYPES .DA CC.FTYPES
*--------------------------------------
J.CC.DIRS .DA DIR.DEFINE
.DA DIR.INCLUDE
.DA DIR.IFDEF
.DA DIR.IFNDEF
DIR.ELSE.ID .EQ *-J.CC.DIRS
.DA DIR.ELSE
.DA DIR.ENDIF
*--------------------------------------
@ -201,11 +204,11 @@ J.CC.PREOPS .DA EXP.Ref
.DA EXP.negate
.DA EXP.lnot
.DA EXP.bnot
.DA EXP.preinc
.DA EXP.predec
.DA EXP.PreInc
.DA EXP.PreDec
*--------------------------------------
J.CC.POSTOPS .DA EXP.postinc
.DA EXP.postdec
J.CC.POSTOPS .DA EXP.PostInc
.DA EXP.PostDec
.DA EXP.idx
.DA EXP.SU
.DA EXP.pSU
@ -237,8 +240,10 @@ J.CC.SCSPEC .DA DECL.AUTO
.DA DECL.STATIC
.DA DECL.EXTERN
.DA DECL.TYPEDEF
*--------------------------------------
J.CC.TYPEQUAL .DA TYPE.CONST
.DA TYPE.VOLATILE
.DA TYPE.RESTRICT
J.CC.TYPESPEC .DA TYPE.STRUCT
.DA TYPE.UNION
.DA TYPE.ENUM
@ -250,6 +255,7 @@ J.CC.TYPES .DA TYPE.VOID
.DA TYPE.INT
.DA TYPE.LONG
.DA TYPE.FLOAT
*--------------------------------------
J.CC.UTYPES .DA TYPE.UCHAR
.DA TYPE.UINT
.DA TYPE.ULONG
@ -258,15 +264,19 @@ J.CC.STYPES .DA TYPE.SCHAR
.DA TYPE.SLONG
*--------------------------------------
L.CC.MAIN .DA CC.MAIN
L.CC.SYSCALL .DA CC.SYSCALL
L.CC.FPUCALL .DA CC.FPUCALL
L.CC.LIBC .DA CC.LIBC
*--------------------------------------
L.PCC.FH .DA PCC.FH
L.PCC.DEBUG .DA PCC.DEBUG
L.PCC.SLEEP .DA PCC.SLEEP
L.PCC.ENTER .DA PCC.ENTER
L.PCC.LEAVE .DA PCC.LEAVE
L.PCC.SF .DA PCC.SF
L.PCC.SL .DA PCC.SL
L.PCC.SS .DA PCC.SS
L.PCC.SR .DA PCC.SR
L.PCC.BS .DA PCC.BS
L.PCC.BR .DA PCC.BR
L.PCC.ADDLOCAL .DA PCC.ADDLOCAL
L.PCC.REMLOCAL .DA PCC.REMLOCAL
L.PCC.SetRetValue .DA PCC.SetRetValue
L.PCC.8to16 .DA PCC.8to16
L.PCC.JmpOnYA .DA PCC.JmpOnYA
@ -279,6 +289,8 @@ L.PCC.TestnZero2 .DA PCC.TestnZero2
L.PCC.TestnZeroX .DA PCC.TestnZeroX
L.PCC.PushLAddrH .DA PCC.PushLAddrH
L.PCC.PushLAddrL .DA PCC.PushLAddrL
L.PCC.GetIAddrY .DA PCC.GetIAddrY
L.PCC.GetIAddrA .DA PCC.GetIAddrA
L.PCC.PushIAddr .DA PCC.PushIAddr
L.PCC.PushUAddr .DA PCC.PushUAddr
L.PCC.GetLAddr1 .DA PCC.GetLAddr1
@ -294,8 +306,8 @@ L.PCC.GetUAddr2 .DA PCC.GetUAddr2
L.PCC.PopAddr2 .DA PCC.PopAddr2
L.PCC.Deref2 .DA PCC.Deref2
L.PCC.PushDeref2 .DA PCC.PushDeref2
L.PCC.PushValue1 .DA PCC.PushValue1
L.PCC.PushValue2 .DA PCC.PushValue2
L.PCC.GetValueA .DA PCC.GetValueA
L.PCC.GetValueYA .DA PCC.GetValueYA
L.PCC.PushValueY .DA PCC.PushValueY
L.PCC.Inc1 .DA PCC.Inc1
L.PCC.Inc2 .DA PCC.Inc2
@ -353,57 +365,60 @@ CS.INIT.RTS rts
* Called until exit with CS
* if RUN exits with CC, RN entered again
*--------------------------------------
CS.RUN >PUSHW L.MSG.GREETINGS
CS.RUN >SS
>PUSHW L.MSG.GREETINGS
>PUSHW A2osX.KVER
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
bcs CS.INIT.RTS
lda #hFilePtr
>STA.G hFilePtr
lda #CC.pInFiles
>STA.G CC.pInFiles
lda #LineCntPtr
>STA.G LineCntPtr
lda #CC.LineCnts
>STA.G CC.LineCnts
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs CS.INIT.RTS
>STYA.G LineBufPtr
txa
>STA.G hLineBuf
>STYA.G CC.pLineBuf
jsr CS.RUN.ARGS
bcs CS.INIT.RTS
jsr CORE.Init
bcs CS.INIT.RTS
*--------------------------------------
jsr CODE.Init
bcs CS.INIT.RTS
jsr FIO.FOpen1st
bcs CS.INIT.RTS
*--------------------------------------
CS.RUN.CLOOP jsr CORE.CompileFile
.1 jsr CORE.CompileFile
cmp #MLI.E.EOF
bne .9
* bne .1
jsr FIO.FClose
bne CS.RUN.CLOOP
*--------------------------------------
.1 jsr PrintSummary
bcs .99
* >DEBUG
jsr CC.Link
bcs .99
* >DEBUG
jsr CC.Link.CheckMain
bne .1
jsr PrintSummary
bcs .99
jsr CC.Link
bcs .99
jsr CC.Link.CheckMain
bcs .99
*--------------------------------------
dec bPass2
jsr CORE.Reset
bcs .99
jsr FIO.FCreate
bcs .99
@ -412,7 +427,7 @@ CS.RUN.CLOOP jsr CORE.CompileFile
jsr FIO.FOpen1st
bcs .99
*--------------------------------------
.2 jsr CORE.CompileFile
cmp #MLI.E.EOF
@ -420,24 +435,33 @@ CS.RUN.CLOOP jsr CORE.CompileFile
jsr FIO.FClose
bne .2
jsr PrintSummary
bcs .99
*--------------------------------------
>LDYA L.MSG.ALLDONE
>SYSCALL PutS
>LIBC PutS
lda #0 Exit Code = Success
sec
rts
.9 pha
jsr PrintErrorMsg
pla
tay
beq *
sec
.99 rts
*--------------------------------------
CS.RUN.ARGS inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .8
>STYA ZPPtr1
@ -465,7 +489,7 @@ CS.RUN.ARGS inc ArgIndex
inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .90
jsr FIO.LoadLIB.o
@ -478,38 +502,37 @@ CS.RUN.ARGS inc ArgIndex
sta (pData),y
bra CS.RUN.ARGS
.4 >LDA.G CC.InFileArg
.4 >LDA.G CC.pInFileName+1
bne .5
lda ArgIndex
>STA.G CC.InFileArg
>LDYA ZPPtr1
>STYA.G CC.pInFileName
bra CS.RUN.ARGS
.5 >LDA.G CC.OutFileArg
.5 >LDA.G CC.pOutFileName+1
bne .90
lda ArgIndex
>STA.G CC.OutFileArg
>LDYA ZPPtr1
>STYA.G CC.pOutFileName
bra CS.RUN.ARGS
.8 >LDA.G CC.InFileArg
.8 >LDA.G CC.pInFileName+1
beq .90
>LDA.G CC.OutFileArg
>LDA.G CC.pOutFileName+1
beq .90
clc
.9 rts
.90 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
.90 >LDYA L.MSG.USAGE
>LIBC PutS
lda #E.SYN
sec
rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr CODE.Quit
@ -522,22 +545,33 @@ CS.QUIT jsr CODE.Quit
sta (pData),y
clc
adc #hLibOs
asl
adc #pLibOs
tay
lda (pData),y
>SYSCALL FreeMem
pha
iny
lda (pData),y
ply
>LIBC Free
bra .1
.6 >LDA.G hLineBuf
.6 >LDYA.G CC.pLineBuf
cmp #0
beq .8
>SYSCALL FreeMem
>LIBC Free
.8 clc
rts
*--------------------------------------
PrintVerboseMsg
.DO _DBG_STK=1
jsr CC.DEBUGSTK
.FIN
.DO _DBG_SCOPE=1
>SS
>PUSHW L.MSG.DEBUG.SC
jsr SCOPE.Push
@ -552,50 +586,57 @@ PrintVerboseMsg
>PUSHB (ScopeStk),y
>PUSHBI 5
>SYSCALL PrintF
* >DEBUG
>LIBC PrintF
>SR
.FIN
ldy #S.PS.hStdOut
* ldy #S.PS.hStdErr
lda (pPS),y
>PUSHA
>SS
* ldy #S.PS.pStdOut+1
* jsr A2osX.GetPSy
* >PUSHA
* dey
* jsr A2osX.GetPSy
* >PUSHA
>PUSHW L.MSG.VERBOSE
>LDA.G LineCntPtr
inc
>LDA.G CC.LineCnts
tay
iny
lda (pData),y
>PUSHA
dey
lda (pData),y
>PUSHA
>PUSHW.G LineBufPtr
>PUSHW.G CC.pLineBuf
>PUSHBI 4
>SYSCALL FPrintF
>LIBC PrintF
>SR
rts
*--------------------------------------
PrintErrorMsg >LDA.G CC.hDefineBuf
PrintErrorMsg >LDYA.G CC.pDefineBuf
cmp #0
beq .10
>LDYA.G CC.SaveDefine
>STYA ZPLineBufPtr
>STYA ZP.pLineBuf
.10 >LDA.G bVerbose
bmi .1
jsr PrintVerboseMsg
.1 lda ZPLineBufPtr
.1 lda ZP.pLineBuf
sec
>SBC.G LineBufPtr
>SBC.G CC.pLineBuf
tax
>LDYA.G LineBufPtr
>STYA ZPLineBufPtr
>LDYA.G CC.pLineBuf
>STYA ZP.pLineBuf
txa
beq .3
@ -603,25 +644,33 @@ PrintErrorMsg >LDA.G CC.hDefineBuf
ldy #0
lda #'-'
.2 sta (ZPLineBufPtr),y
.2 sta (ZP.pLineBuf),y
iny
dex
bne .2
txa
.3 sta (ZPLineBufPtr),y
.3 sta (ZP.pLineBuf),y
.8 >SS
* ldy #S.PS.pStdErr+1
* ldy #S.PS.pStdOut+1
* jsr A2osX.GetPSy
* >PUSHA
* dey
* jsr A2osX.GetPSy
* >PUSHA
.8 ldy #S.PS.hStdErr
lda (pPS),y
>PUSHA
>PUSHW L.MSG.ERROR
>PUSHW ZPLineBufPtr
>PUSHW ZP.pLineBuf
>PUSHBI 2
>SYSCALL FPrintF
>LIBC PrintF
>SR
rts
*--------------------------------------
PrintSummary >PUSHW L.MSG.SUMMARY
PrintSummary >SS
>PUSHW L.MSG.SUMMARY
lda ZPCCCode+1
sec
sbc #$20
@ -630,9 +679,30 @@ PrintSummary >PUSHW L.MSG.SUMMARY
>PUSHW ZPCCConst
>PUSHW ZPCCData
>PUSHBI 6
>SYSCALL PrintF
>LIBC PrintF
>SR
rts
*--------------------------------------
.DO _DBG_STK=1
CC.DEBUGSTK php
pha
phx
phy
>SS
>PUSHW L.MSG.DEBUG.STK
>PUSHB pStack+1
txa
>PUSHA
>PUSHW pBase
>PUSHBI 4
>LIBC PrintF
>SR
ply
plx
pla
plp
rts
.FIN
*--------------------------------------
.INB usr/src/bin/cc.s.code
.INB usr/src/bin/cc.s.core
@ -646,13 +716,14 @@ PrintSummary >PUSHW L.MSG.SUMMARY
.INB usr/src/bin/cc.s.scope
.INB usr/src/bin/cc.s.stmt
.INB usr/src/bin/cc.s.sym
.INB usr/src/bin/cc.s.tag
.INB usr/src/bin/cc.s.type
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
* Initialized DATA
*--------------------------------------
MSG.GREETINGS .CZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
MSG.GREETINGS .CZ "\r\nA2osX C Compiler %d.%02d\r\n\r\n"
MSG.USAGE .CS "Usage : CC <option> srcfile.c dstfile\r\n"
.CS " -V : Verbose output\r\n"
.CZ " -L Libname1 -L Libname2 ...\r\n"
@ -660,13 +731,20 @@ MSG.READING .CZ "*** Reading file: %s\r\n"
MSG.LINKING .CZ "*** Linking..."
MSG.LINKING2 .CZ "*** %H:%H:%18s T/Q=%h/%h, SC=%h, Def=%h, SizeOf=%H, @=%H\r\n"
MSG.GENERATING .CZ "*** Generating: %s\r\n"
.DO _DBG_STK=1
MSG.DEBUG.STK .CZ "pStack=%H, pBase=%H\r\n"
.FIN
.DO _DBG_SYM=1
MSG.DEBUG.SYMN .CZ "New SymID=%H[%H],T=%h,Q=%h,SC=%h "
MSG.DEBUG.SYMU .CZ "Upd SymID=%H,T=%h,Q=%h,SC=%h,@=%H\r\n"
MSG.DEBUG.SYMS .CZ "Sto SymID=%H,T=%h,Q=%h,SC=%h,@=%H\r\n"
MSG.DEBUG.SYMG .CZ "Get SymID=%H,T=%h,Q=%h,SC=%h\r\n"
MSG.DEBUG.SYMNL .CZ "New (%s) ID=%H[%H],T=%h,Q=%h,SC=%h "
MSG.DEBUG.SYMSL .CZ "Sto ID=%H,T=%h,Q=%h,SC=%h\r\n"
MSG.DEBUG.SYMN .CZ "New ID=%H,T=%h,Q=%b,SC=%h,Cnt=%h,SizeOf=%H,ScopeID=%H,@=%H\r\n"
MSG.DEBUG.SYMU .CZ "Upd ID=%H,T=%h,Q=%b,SC=%h,Cnt=%h,SizeOf=%H,ScopeID=%H,@=%H\r\n"
MSG.DEBUG.SYMS .CZ "Sto ID=%H,T=%h,Q=%b,SC=%h,Cnt=%h,SizeOf=%H,ScopeID=%H,@=%H\r\n"
MSG.DEBUG.SYMG .CZ "Get ID=%H,T=%h,Q=%b,SC=%h,Cnt=%h,SizeOf=%H,ScopeID=%H,@=%H\r\n"
MSG.DEBUG.SYML .CZ "Llk ID=%H,T=%h,Q=%b,SC=%h,Cnt=%h,SizeOf=%H,ScopeID=%H,@=%H\r\n"
MSG.DEBUG.SYMR .CZ "Rlk ID=%H,T=%h,Q=%b,SC=%h,Cnt=%h,SizeOf=%H,ScopeID=%H,@=%H\r\n"
MSG.DEBUG.LBLN .CZ "New (%s) ID=%H[%H],T=%h,Q=%b,SC=%h\r\n"
MSG.DEBUG.LBLS .CZ "Sto ID=%H[%H],T=%h,Q=%b,SC=%h\r\n"
.FIN
.DO _DBG_SCOPE=1
MSG.DEBUG.SCIN .CZ "Scope { %H (%h:%h:%h)\r\n"
@ -802,6 +880,7 @@ CC.SCSPEC .PS "auto"
*--------------------------------------
CC.TYPEQUAL .PS "const" ALL
.PS "volatile"
.PS "restrict"
CC.TYPESPEC .PS "struct"
.PS "union"
.PS "enum"
@ -817,9 +896,6 @@ CC.TYPES .PS "void"
*--------------------------------------
CC.Type2FPU .DA #FPU.wMUL,#FPU.iMUL,#FPU.uMUL,#FPU.lMUL,#FPU.fMUL
*--------------------------------------
CC.FTYPES .PS "fastcall"
* .HS 00
*--------------------------------------
CC.TYPESIZE .HS 0001010202040405
CC.TYPESIGN .HS 0000FF00FF00FFFF
*--------------------------------------
@ -827,7 +903,7 @@ CC.MAIN .AZ "main"
CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0
CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF
*--------------------------------------
CC.SYSCALL .PS "chtyp"
CC.LIBC .PS "chtyp"
.DA #_ChTyp
.PS "chmod"
.DA #_ChMod
@ -1023,8 +1099,8 @@ CC.SYSCALL .PS "chtyp"
.DA #_Time
.PS "strftime"
.DA #_StrFTime
* .PS "ptime2time"
* .DA #0
.PS "ptime2time"
.DA #_PTime2Time
.PS "ctime2time"
.DA #_CTime2Time
.PS "md5"
@ -1047,125 +1123,93 @@ CC.SYSCALL .PS "chtyp"
.DA #_GetGRName
.PS "putgr"
.DA #_PutGR
* .PS "opensession"
* .DA #0
* .PS "closesession"
* .DA #0
* .PS "slistgetdata"
* .DA #0
* .PS "slistadddata"
* .DA #0
* .PS "slistsetdata"
* .DA #0
* .PS "slistgetbyid"
* .DA #0
* .PS "slistnewkey"
* .DA #0
* .PS "slistlookup"
* .DA #0
* .PS "slistfree"
* .DA #0
* .PS "slistnew"
* .DA #0
.PS "malloc"
.DA #_GetMem
.DA #_Malloc
.PS "realloc"
.DA #_Realloc
* .PS "getmemptr"
* .DA #0
* .PS "freemem"
* .DA #_FreeMem
.PS "free"
.DA #_Free
* .PS "newstkobj"
* .DA #0
* .PS "getstkobjptr"
* .DA #0
* .PS "freestkobj"
* .DA #0
.DA #0
*--------------------------------------
CC.FPUCALL .PS "pwr"
.DA #FPU.PWR
.PS "log"
.DA #FPU.LOG
.PS "sqr"
.DA #FPU.SQR
.PS "exp"
.DA #FPU.EXP
.PS "cos"
.DA #FPU.COS
.PS "sin"
.DA #FPU.SIN
.PS "tan"
.DA #FPU.TAN
.PS "atan"
.DA #FPU.ATAN
.PS "logf"
.DA #_logf
.PS "sqrtf"
.DA #_sqrtf
.PS "expf"
.DA #_expf
.PS "cosf"
.DA #_cosf
.PS "sinf"
.DA #_sinf
.PS "tanf"
.DA #_tanf
.PS "atanf"
.DA #_atanf
.PS "powf"
.DA #_powf
.PS "lrintf"
.DA #FPU.QINT
.DA #_lrintf
.DA #0
*--------------------------------------
.INB usr/src/bin/cc.s.pcc
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
PathBuf .BS MLI.MAXPATH+1
*bDebug .BS 1
bVerbose .BS 1
LibCount .BS 1
hLibNs .BS LIBS.MAX
hLibOs .BS LIBS.MAX
pLibOs .BS LIBS.MAX*2
CC.InFileArg .BS 1
CC.OutFileArg .BS 1
CC.hOutFile .BS 1
CC.pInFileName .BS 2
hFilePtr .BS 1
hFiles .BS FILES.MAX
LineCntPtr .BS 1
CC.pInFiles .BS 1
.BS 1 for inc inc
LineCnts .BS FILES.MAX*2
.BS FILES.MAX*2
hLineBuf .BS 1
LineBufPtr .BS 2
CC.LineCnts .BS 1
.BS 1 for inc inc
.BS FILES.MAX*2
CC.pOutFileName .BS 2
CC.pOutFile .BS 2
CC.pLineBuf .BS 2
CC.CmdSave .BS 1
CC.hDefineBuf .BS 1
CC.pDefineBuf .BS 2
CC.hDefines .BS 1
CC.pDefines .BS 2
CC.SaveDefine .BS 2
CC.DirState .BS 1
CC.DirDepth .BS 1
CC.hTags .BS 1
CC.hScopeStk .BS 1
CC.hStmtStk .BS 1
CC.hSyms .BS 1
CC.pSyms .BS 2
CC.pTags .BS 2
CC.pTypes .BS 2
CC.TypeID .BS 2
CC.ScopeID .BS 2
CC.bInitCode .BS 1
*--------------------------------------
CC.hSymBuf .BS 1
CC.SymID .BS 2
CC.SymIDSave .BS 2
CC.pLSymBuf .BS 2
CC.LSymID .BS 2
CC.LSymIDSave .BS 2
CC.ArgBuf .BS SYM
CC.Label .BS 3 _X\0
CC.LabelID .BS 2
CC.LabelBuf .BS SYM
*--------------------------------------
CC.LookupSymSize .BS 2
CC.LookupSymPtr .BS 2
CC.LookupIdx .BS 1
CC.hLookupBufs .BS LOOKUP.MAX
DS.pRSymBuf .BS 2
DS.RSymID .BS 2
DS.END .ED
*--------------------------------------

View File

@ -45,20 +45,20 @@ ZS.END .ED
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT
.DA #2 BIN Layout Version 2
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #16 Stack Size
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
*--------------------------------------
L.MSG.USAGE .DA MSG.USAGE
@ -74,7 +74,7 @@ CS.INIT clc
*--------------------------------------
CS.RUN inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .7
>STYA ZPPtr1
@ -82,7 +82,7 @@ CS.RUN inc ArgIndex
cmp #'-'
bne .4
ldy #1
ldy #1
lda (ZPPtr1),y
ldx #OptionVars-OptionList-1
@ -93,7 +93,7 @@ CS.RUN inc ArgIndex
bne .2
.99 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
rts
@ -105,13 +105,13 @@ CS.RUN inc ArgIndex
*--------------------------------------
.4 bit bAuxFileType
bmi .5
jsr GetAuxType
bcs .99
bra CS.RUN
.5 >LDA.G hSrcBasePath
.5 >LDA.G pSrcBasePath+1
bne .99
>LDYA ZPPtr1
@ -119,28 +119,31 @@ CS.RUN inc ArgIndex
bcs .99
bra CS.RUN
*--------------------------------------
.7 >LDA.G hSrcBasePath
.7 >LDA.G pSrcBasePath+1
beq .99 no src ? ERROR
bit bAuxFileType
bpl .99 we also have a TYPE
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .99
>STYA ZPFullPath
stx hSrcFullPath
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
CS.RUN.LOOP ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .99
tay
bne .1
>SYSCALL GetChar
>LIBC GetChar
bcs .99
cmp #$03 Ctrl-C
@ -185,12 +188,12 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
*--------------------------------------
CS.RUN.NEXT jsr X.GetNextEntry
bcc CS.RUN.LOOP
CS.RUN.LEAVE jsr X.LeaveSubDir
bcs .90
jsr X.BasePath..
jmp CS.RUN.NEXT
.90 lda #0
@ -203,20 +206,20 @@ CS.RUN.DIR bit bRecurse
lda (ZPFileName)
cmp #'.'
bne .1
ldy #1
lda (ZPFileName),y
beq .8
cmp #'.'
bne .1
iny
lda (ZPFileName),y
beq .8
.1 jsr CS.RUN.GetFilePath
>LDYA ZPFileName
jmp X.EnterSubDirYA
@ -225,20 +228,22 @@ CS.RUN.DIR bit bRecurse
*--------------------------------------
CS.RUN.FILE jsr X.IncludeMatch
bcs .8 no match, skip....
jsr CS.RUN.GetFilePath
>SS
>PUSHW L.MSG.FILE
>PUSHW ZPFullPath
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
bcs .9
>SS
>PUSHW ZPFullPath
>PUSHW AuxFileType
>SYSCALL ChAux
>LIBC ChAux
>SR
jsr CS.RUN.CheckErr
.8 clc
@ -247,16 +252,17 @@ CS.RUN.FILE jsr X.IncludeMatch
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>SYSCALL PutS
>LIBC PutS
rts
.1 pha
.1 tay
>SS
>PUSHW L.MSG.ERR
pla
pha
txa
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
>SR
lda bContinue
eor #$80
@ -265,32 +271,28 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.GetFilePath
>SS
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCpy
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>SR
>SS
>PUSHW ZPFullPath
>PUSHW ZPFileName
>SYSCALL StrCat
>LIBC StrCat
>SR
rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
bcc CS.QUIT
CS.QUIT jsr X.Quit
>LDA.G hInclude
beq .1
>SYSCALL FreeMem
.1 lda hSrcFullPath
>LDYA ZPFullPath
beq .8
>SYSCALL FreeMem
>LIBC Free
.8 clc
rts
@ -298,36 +300,38 @@ CS.QUIT jsr X.LeaveSubDir
GetAuxType lda (ZPPtr1)
cmp #'0'
bcc .1
cmp #'9'+1
bcs .1
ldx #0
bra .7
.1 cmp #'x'
beq .2
cmp #'X'
bne .9
inc ZPPtr1
bne .2
inc ZPPtr1+1
.2 ldx #2
.7 >PUSHW ZPPtr1
.7 >SS
>PUSHW ZPPtr1
>PUSHW L.SSCANF.D,x
>PUSHWI AuxFileType
>PUSHBI 2
>SYSCALL SScanF
>LIBC SScanF
>SR
bcs .9
cpy #1
bne .9
dec bAuxFileType
clc
rts
@ -337,7 +341,7 @@ GetAuxType lda (ZPPtr1)
*--------------------------------------
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "CRcr"
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
@ -351,10 +355,12 @@ MSG.ERR .CZ "[%h]\r\n"
MSG.FILE .CZ "CHAUX File:%S..."
SSCANF.D .CZ "%D"
SSCANF.H .CZ "%H"
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START .INB usr/src/shared/x.fileenum.g
.INB usr/src/shared/x.fileenum.g
DS.END .ED
*--------------------------------------
MAN

View File

@ -23,6 +23,7 @@ ZPPtr2 .BS 2
ZPFileName .BS 2
ZPFileStat .BS 2
ZPFullPath .BS 2
ArgIndex .BS 1
ZS.END .ED
*--------------------------------------
@ -31,19 +32,20 @@ ZS.END .ED
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 Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #2 BIN Layout Version 2
.DA #0
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.DIR .DA MSG.DIR
@ -55,8 +57,9 @@ L.MSG.ERR .DA MSG.ERR
CS.INIT clc
rts
*--------------------------------------
CS.RUN >INC.G ArgIndex
>SYSCALL ArgV
CS.RUN inc ArgIndex
lda ArgIndex
>LIBC ArgV
bcs .8
>STYA ZPPtr1
@ -76,7 +79,7 @@ CS.RUN >INC.G ArgIndex
bpl .2
.9 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
.99 rts
@ -93,7 +96,7 @@ CS.RUN >INC.G ArgIndex
>STA.G GID
bra CS.RUN
.5 >LDA.G hSrcBasePath
.5 >LDA.G pSrcBasePath+1
bne .9
>LDYA ZPPtr1
@ -107,26 +110,28 @@ CS.RUN >INC.G ArgIndex
jsr CS.RUN.GetGID
bcs .99
>LDA.G hSrcBasePath
>LDA.G pSrcBasePath+1
beq .9
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .99
>STYA ZPFullPath
txa
>STA.G hSrcFullPath
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
CS.RUN.LOOP ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .99
tay
bne .1
>SYSCALL GetChar
>LIBC GetChar
bcs .99
cmp #$03 Ctrl-C
@ -205,13 +210,13 @@ CS.RUN.DIR lda (ZPFileName)
>PUSHW L.MSG.DIR
>PUSHW ZPFullPath
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
bcs .9
>PUSHW ZPFullPath
>PUSHBI 255
>PUSHB.G GID
>SYSCALL ChOwn
>LIBC ChOwn
jsr CS.RUN.CheckErr
bcs .9
@ -228,10 +233,10 @@ CS.RUN.DIR lda (ZPFileName)
CS.RUN.FILE clc
rts
*--------------------------------------
CS.RUN.GetGID >SYSCALL ArgV
CS.RUN.GetGID >LIBC ArgV
>PUSHYA
>PUSHWZ
>SYSCALL GetGRName
>LIBC GetGRName
bcs .9
>STA.G GID
@ -241,7 +246,7 @@ CS.RUN.GetGID >SYSCALL ArgV
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>SYSCALL PutS
>LIBC PutS
rts
.1 pha
@ -250,7 +255,7 @@ CS.RUN.CheckErr bcs .1
pha
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
>LDA.G bContinue
eor #$80
asl
@ -259,36 +264,30 @@ CS.RUN.CheckErr bcs .1
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCpy
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>SYSCALL StrCat
>LIBC StrCat
rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
bcc CS.QUIT
CS.QUIT jsr X.Quit
>LDA.G hInclude
beq .1
>SYSCALL FreeMem
.1 >LDA.G hSrcFullPath
>LDYA ZPFullPath
beq .8
>SYSCALL FreeMem
>LIBC Free
.8 clc
rts
*--------------------------------------
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "CRcr"
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
@ -300,11 +299,12 @@ MSG.OK .CZ "[OK]"
MSG.ERR .CZ "[%h]\r\n"
MSG.DIR .CZ "Dir :%s..."
MSG.FILE .CZ "File:%s..."
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
ArgIndex .BS 1
bContinue .BS 1
bRecurse .BS 1
bPause .BS 1

View File

@ -34,19 +34,20 @@ ZS.END .ED
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 Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #2 BIN Layout Version 2
.DA #0
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.DIR .DA MSG.DIR
@ -60,7 +61,7 @@ CS.INIT clc
*--------------------------------------
CS.RUN inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .8
>STYA ZPPtr1
@ -68,7 +69,7 @@ CS.RUN inc ArgIndex
cmp #'-'
bne .4
ldy #1
ldy #1
lda (ZPPtr1),y
ldx #OptionVars-OptionList-1
@ -79,7 +80,7 @@ CS.RUN inc ArgIndex
bpl .2
.9 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
.99 rts
@ -96,7 +97,7 @@ CS.RUN inc ArgIndex
sta StrMode
bra CS.RUN
.5 >LDA.G hSrcBasePath
.5 >LDA.G pSrcBasePath+1
bne .9
>LDYA ZPPtr1
@ -104,33 +105,35 @@ CS.RUN inc ArgIndex
bcc CS.RUN
rts
.8 lda StrMode
beq .9
jsr CS.RUN.Str2Mode
bcs .9
>LDA.G hSrcBasePath
>LDA.G pSrcBasePath+1
beq .9
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .99
>STYA ZPFullPath
txa
>STA.G hSrcFullPath
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
CS.RUN.LOOP ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .99
tay
bne .1
>SYSCALL GetChar
>LIBC GetChar
bcs .99
cmp #$03 Ctrl-C
@ -158,10 +161,10 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
jsr CS.RUN.FILE
bcc CS.RUN.NEXT
rts
.5 cmp /S.STAT.MODE.DIR DIR ?
beq .6
cmp /S.STAT.MODE.BDEV VOL ?
bne .9
@ -175,12 +178,12 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
*--------------------------------------
CS.RUN.NEXT jsr X.GetNextEntry
bcc CS.RUN.LOOP
CS.RUN.LEAVE jsr X.LeaveSubDir
bcs .90
jsr X.BasePath..
jmp CS.RUN.NEXT
.90 lda #0
@ -190,18 +193,18 @@ CS.RUN.LEAVE jsr X.LeaveSubDir
CS.RUN.DIR lda (ZPFileName)
cmp #'.'
bne .1
ldy #1
lda (ZPFileName),y
beq .8
cmp #'.'
bne .1
iny
lda (ZPFileName),y
beq .8
.1 jsr X.IncludeMatch
bcs .8
@ -209,29 +212,29 @@ CS.RUN.DIR lda (ZPFileName)
>PUSHW L.MSG.DIR
>PUSHW ZPFullPath
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
bcs .9
>PUSHW ZPFullPath
>PUSHW ZPMode
>SYSCALL ChMod
>LIBC ChMod
jsr CS.RUN.CheckErr
bcs .9
>LDA.G bRecurse
bpl .8
>LDYA ZPFileName
jmp X.EnterSubDirYA
.8 clc
.9 rts
*--------------------------------------
CS.RUN.FILE clc
.9 rts
*--------------------------------------
CS.RUN.Str2Mode >SYSCALL ArgV
CS.RUN.Str2Mode >LIBC ArgV
>STYA ZPPtr1
ldy #$ff
@ -281,7 +284,7 @@ CS.RUN.Str2Mode >SYSCALL ArgV
*--------------------------------------
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>SYSCALL PutS
>LIBC PutS
rts
.1 pha
@ -290,7 +293,7 @@ CS.RUN.CheckErr bcs .1
pha
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
>LDA.G bContinue
eor #$80
asl
@ -299,38 +302,30 @@ CS.RUN.CheckErr bcs .1
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCpy
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>SYSCALL StrCat
>LIBC StrCat
rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
bcc CS.QUIT
CS.QUIT jsr X.Quit
>LDA.G hInclude
beq .1
>SYSCALL FreeMem
.1 >LDA.G hSrcFullPath
>LDYA ZPFullPath
beq .8
>SYSCALL FreeMem
>LIBC Free
.8 clc
rts
*--------------------------------------
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "CRcr"
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
@ -342,15 +337,16 @@ MSG.OK .CZ "[OK]"
MSG.ERR .CZ "[%h]\r\n"
MSG.DIR .CZ "Dir :%s..."
MSG.FILE .CZ "File:%s..."
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
bContinue .BS 1
bRecurse .BS 1
bPause .BS 1
hSrcFullPath .BS 1
.INB usr/src/shared/x.fileenum.g

View File

@ -23,6 +23,7 @@ ZPPtr2 .BS 2
ZPFileName .BS 2
ZPFileStat .BS 2
ZPFullPath .BS 2
ArgIndex .BS 1
ZS.END .ED
*--------------------------------------
@ -31,19 +32,20 @@ ZS.END .ED
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 Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #2 BIN Layout Version 2
.DA #0
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.DIR .DA MSG.DIR
@ -55,8 +57,9 @@ L.MSG.ERR .DA MSG.ERR
CS.INIT clc
rts
*--------------------------------------
CS.RUN >INC.G ArgIndex
>SYSCALL ArgV
CS.RUN inc ArgIndex
lda ArgIndex
>LIBC ArgV
bcs .8
>STYA ZPPtr1
@ -75,7 +78,7 @@ CS.RUN >INC.G ArgIndex
bpl .2
.9 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
.99 rts
@ -92,7 +95,7 @@ CS.RUN >INC.G ArgIndex
>STA.G UID
bra CS.RUN
.5 >LDA.G hSrcBasePath
.5 >LDA.G pSrcBasePath+1
bne .9
>LDYA ZPPtr1
@ -106,26 +109,28 @@ CS.RUN >INC.G ArgIndex
jsr CS.RUN.GetUID
bcs .99
>LDA.G hSrcBasePath
>LDA.G pSrcBasePath+1
beq .9
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .99
>STYA ZPFullPath
txa
>STA.G hSrcFullPath
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
CS.RUN.LOOP ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .99
tay
bne .1
>SYSCALL GetChar
>LIBC GetChar
bcs .99
cmp #$03 Ctrl-C
@ -204,13 +209,13 @@ CS.RUN.DIR lda (ZPFileName)
>PUSHW L.MSG.DIR
>PUSHW ZPFullPath
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
bcs .9
>PUSHW ZPFullPath
>PUSHB.G UID
>PUSHBI 255
>SYSCALL ChOwn
>LIBC ChOwn
jsr CS.RUN.CheckErr
bcs .9
@ -228,10 +233,10 @@ CS.RUN.FILE
clc
rts
*--------------------------------------
CS.RUN.GetUID >SYSCALL ArgV
CS.RUN.GetUID >LIBC ArgV
>PUSHYA
>PUSHWZ
>SYSCALL GetPWName
>LIBC GetPWName
bcs .9
>STA.G UID
@ -240,7 +245,7 @@ CS.RUN.GetUID >SYSCALL ArgV
*--------------------------------------
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>SYSCALL PutS
>LIBC PutS
rts
.1 pha
@ -249,7 +254,7 @@ CS.RUN.CheckErr bcs .1
pha
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
>LDA.G bContinue
eor #$80
asl
@ -258,38 +263,30 @@ CS.RUN.CheckErr bcs .1
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCpy
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>SYSCALL StrCat
>LIBC StrCat
rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
bcc CS.QUIT
CS.QUIT jsr X.Quit
>LDA.G hInclude
beq .1
>SYSCALL FreeMem
.1 >LDA.G hSrcFullPath
>LDYA ZPFullPath
beq .8
>SYSCALL FreeMem
>LIBC Free
.8 clc
rts
*--------------------------------------
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "CRcr"
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
@ -301,11 +298,12 @@ MSG.OK .CZ "[OK]"
MSG.ERR .CZ "[%h]\r\n"
MSG.DIR .CZ "Dir :%s..."
MSG.FILE .CZ "File:%s..."
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
ArgIndex .BS 1
bContinue .BS 1
bRecurse .BS 1
bPause .BS 1

View File

@ -31,7 +31,6 @@ ZPFullPath .BS 2
ArgIndex .BS 1
HexFileType .BS 1
hSrcFullPath .BS 1
bPause .BS 1
bContinue .BS 1
@ -44,20 +43,20 @@ ZS.END .ED
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT
.DA #2 BIN Layout Version 2
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #16 Stack Size
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
*--------------------------------------
L.MSG.USAGE .DA MSG.USAGE
@ -72,7 +71,7 @@ CS.INIT clc
*--------------------------------------
CS.RUN inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .7
>STYA ZPPtr1
@ -91,7 +90,7 @@ CS.RUN inc ArgIndex
bne .2
.99 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
rts
@ -108,7 +107,7 @@ CS.RUN inc ArgIndex
bcs .99
bra CS.RUN
.5 >LDA.G hSrcBasePath
.5 >LDA.G pSrcBasePath+1
bne .99
>LDYA ZPPtr1
@ -116,27 +115,30 @@ CS.RUN inc ArgIndex
bcs .99
bra CS.RUN
*--------------------------------------
.7 >LDA.G hSrcBasePath
.7 >LDA.G pSrcBasePath+1
beq .99 no src ? ERROR
lda HexFileType
beq .99 we also have a TYPE
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .99
>STYA ZPFullPath
stx hSrcFullPath
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
CS.RUN.LOOP ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .99
tay
bne .1
>SYSCALL GetChar
>LIBC GetChar
bcs .99
cmp #$03 Ctrl-C
@ -224,17 +226,20 @@ CS.RUN.FILE jsr X.IncludeMatch
jsr CS.RUN.GetFilePath
>SS
>PUSHW L.MSG.FILE
>PUSHW ZPFullPath
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>SR
bcs .9
>SS
>PUSHW ZPFullPath
>PUSHB HexFileType
>SYSCALL ChTyp
>LIBC ChTyp
>SR
jsr CS.RUN.CheckErr
.8 clc
@ -243,16 +248,17 @@ CS.RUN.FILE jsr X.IncludeMatch
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>SYSCALL PutS
>LIBC PutS
rts
.1 pha
.1 tay
>SS
>PUSHW L.MSG.ERR
pla
pha
txa
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
>SR
lda bContinue
eor #$80
@ -261,32 +267,28 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.GetFilePath
>SS
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCpy
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>SR
>SS
>PUSHW ZPFullPath
>PUSHW ZPFileName
>SYSCALL StrCat
>LIBC StrCat
>SR
rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
bcc CS.QUIT
CS.QUIT jsr X.Quit
>LDA.G hInclude
beq .1
>SYSCALL FreeMem
.1 lda hSrcFullPath
>LDYA ZPFullPath
beq .8
>SYSCALL FreeMem
>LIBC Free
.8 clc
rts
@ -398,7 +400,7 @@ IsDigit16 cmp #'0'
*--------------------------------------
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "CRcr"
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
@ -421,10 +423,12 @@ PRODOS.FT.TXT .AS "TXT"
.AS "FON"
.AS "PAK"
.AS "SYS"
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START .INB usr/src/shared/x.fileenum.g
.INB usr/src/shared/x.fileenum.g
DS.END .ED
*--------------------------------------
MAN

View File

@ -21,15 +21,14 @@ bAll .BS 1
bVerbose .BS 1
bDiff .BS 1
hFile1 .BS 1
hBuf1 .BS 1
ZPBufPtr1 .BS 2
bSkip1 .BS 1
hFile2 .BS 1
hBuf2 .BS 1
ZPBufPtr2 .BS 2
bSkip2 .BS 1
pFile1 .BS 2
ZPBufPtr1 .BS 2
pFile2 .BS 2
ZPBufPtr2 .BS 2
Offset .BS 2
BufCnt .BS 2
SeekOfs .BS 4
@ -40,20 +39,20 @@ ZS.END .ED
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #S.PS.F.EVENT S.PS.F
.DA #2 BIN Layout Version 2
.DA #0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #64 SS
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.DIFF .DA MSG.DIFF
@ -65,7 +64,7 @@ CS.INIT clc
CS.RUN
.1 inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .7
>STYA ZPPtr1
@ -78,28 +77,28 @@ CS.RUN
bcc .1
.99 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
.9 rts
.2 lda hFile1
.2 >LDYA pFile1
bne .3
jsr CS.RUN.OPEN
bcs .9
sta hFile1
>STYA pFile1
bra .1
.3 lda hFile2
.3 >LDYA pFile2
bne .4
jsr CS.RUN.OPEN
bcs .9
sta hFile2
>STYA pFile2
bra .1
@ -123,35 +122,37 @@ CS.RUN
ror bSkip2
jmp .1
.7 lda hFile2
.7 lda pFile2+1
beq .99
lda hFile1
lda pFile1+1
beq .99
.8 >LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .9
>STYA ZPBufPtr1
stx hBuf1
>LDYAI 256
>SYSCALL GetMem
>LIBC Malloc
bcs .9
>STYA ZPBufPtr2
stx hBuf2
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
CS.RUN.LOOP ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcs .9 IO error
tay
bne .1 no char
>SYSCALL GetChar
>LIBC GetChar
bcs .9 IO error
cmp #$03 Ctrl-C
@ -226,15 +227,17 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
.9 sec
rts
*--------------------------------------
CS.RUN.OPEN >PUSHW ZPPtr1
CS.RUN.OPEN >SS
>PUSHW ZPPtr1
>PUSHBI O.RDONLY
>PUSHBI 0 Type
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
>SR
rts
*--------------------------------------
CS.RUN.SEEK >LDYA ZPPtr1
>SYSCALL AToL
>LIBC AToL
bcs .9
>PULLL SeekOfs
@ -242,33 +245,42 @@ CS.RUN.SEEK >LDYA ZPPtr1
lda bSkip1
bmi .1
>PUSHB hFile1
>SS
>PUSHW pFile1
>PUSHL SeekOfs
>PUSHBI SEEK.SET
>SYSCALL FSeek
>LIBC FSeek
>SR
bcs .9
.1 >PUSHB hFile2
.1 >SS
>PUSHW pFile2
>PUSHL SeekOfs
>PUSHBI SEEK.SET
>SYSCALL FSeek
>LIBC FSeek
>SR
.9 rts
*--------------------------------------
CS.RUN.READ1 >PUSHB hFile1
CS.RUN.READ1 >SS
>PUSHW pFile1
>PUSHW ZPBufPtr1
>PUSHWI 256
>SYSCALL FRead
>LIBC FRead
>SR
rts
*--------------------------------------
CS.RUN.READ2 >PUSHB hFile2
CS.RUN.READ2 >SS
>PUSHW pFile2
>PUSHW ZPBufPtr2
>PUSHWI 256
>SYSCALL FRead
>LIBC FRead
>SR
rts
*--------------------------------------
CS.RUN.Print phy
>SS
>PUSHW L.MSG.DIFF
>PUSHW Offset
tya
@ -276,35 +288,36 @@ CS.RUN.Print phy
>PUSHB (ZPBufPtr1),y
>PUSHB (ZPBufPtr2),y
>PUSHBI 5
>SYSCALL PrintF
>LIBC PrintF
>SR
ply
rts
*--------------------------------------
CS.QUIT lda hFile2
CS.QUIT >LDYA pFile2
beq .1
>SYSCALL FClose
>LIBC FClose
.1 lda hFile1
.1 >LDYA pFile1
beq .2
>SYSCALL FClose
>LIBC FClose
.2 lda hBuf2
.2 >LDYA ZPBufPtr2
beq .3
>SYSCALL FreeMem
>LIBC Free
.3 lda hBuf1
.3 >LDYA ZPBufPtr1
beq .8
>SYSCALL FreeMem
>LIBC Free
.8 clc
rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.RUN.CheckOpt ldy #1
@ -327,7 +340,7 @@ CS.RUN.CheckOpt ldy #1
clc
rts
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "AaVv"
OptionVars .DA #bAll,#bAll,#bVerbose,#bVerbose
@ -336,10 +349,11 @@ MSG.USAGE .CS "Usage : CMP File1 File2 [SKIP1 [SKIP2]]\r\n"
.CS " -A : Shows All differences\r\n"
.CZ " -V : Verbose Mode\r\n"
MSG.DIFF .CZ "%H%h:%h %h\r\n"
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
DS.END .ED
*--------------------------------------
MAN

View File

@ -17,7 +17,7 @@ X.DELETE.SOURCE .EQ 0
.INB usr/src/shared/x.cpmvrm.s
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "IiCcQqRrYy"
OptionVars .DA #0,#0
@ -39,10 +39,11 @@ MSG.OK .CZ "[OK]"
MSG.ERR .CS "[%h]"
MSG.CRLF .CZ "\r\n"
MSG.DONE .CZ "%D File(s) Copied.\r\n"
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
.INB usr/src/shared/x.fileenum.g
DS.END .ED
*--------------------------------------

View File

@ -3,25 +3,25 @@ NEW
.LIST OFF
*--------------------------------------
CSH.Init lda #SL._
>SYSCALL SListNew
>KAPI SListNew
bcs .99
>STA.G CSH.hDefines
lda #SL._
>SYSCALL SListNew
>KAPI SListNew
bcs .99
>STA.G CSH.hTags
lda #SL._
>SYSCALL SListNew
>KAPI SListNew
bcs .9
>STA.G CSH.hSymbols
>LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
.99 bcs .9
>STYA ZPCSHCode
@ -29,7 +29,7 @@ CSH.Init lda #SL._
>STA.G CSH.hCode
>LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPCSHConst
@ -37,7 +37,7 @@ CSH.Init lda #SL._
>STA.G CSH.hConst
>LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPCSHData
@ -45,7 +45,7 @@ CSH.Init lda #SL._
>STA.G CSH.hData
>LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPCSHStack
@ -53,7 +53,7 @@ CSH.Init lda #SL._
>STA.G CSH.hStack
>LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPCSHfDecl
@ -69,22 +69,22 @@ CSH.Init lda #SL._
CSH.Quit >LDA.G CSH.hSymbols
beq .1
>SYSCALL SListFree
>KAPI SListFree
.1 >LDA.G CSH.hTags
beq .2
>SYSCALL SListFree
>KAPI SListFree
.2 >LDA.G CSH.hDefines
beq .3
>SYSCALL SListFree
>KAPI SListFree
.3 lda hInclude
beq .4
>SYSCALL FClose
>LIBC FClose
.4 lda hDefine
jsr .7
@ -107,7 +107,7 @@ CSH.Quit >LDA.G CSH.hSymbols
>LDA.G CSH.hCode
.7 beq CSH.Quit.RTS
>SYSCALL FreeMem
>LIBC FreeMem
CSH.Quit.RTS rts
*--------------------------------------
CSH.Run jsr CSH.GetCharNB
@ -373,7 +373,7 @@ CSH.MainExec lda #0
stz ArgIndex
.1 lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .2
inc ArgIndex
@ -488,7 +488,7 @@ CSH.AddSymbol >LDA.G CSH.hSymbols
>PUSHW ZPVarID
>PUSHWI ZPVarDef
>PUSHWI 8
>SYSCALL SListAddData
>KAPI SListAddData
.9 rts
.99 lda #E.OOM
@ -781,7 +781,7 @@ CSH.tDecl >ENTER 2
CSH.NewKey >PUSHA
>PUSHW ZPInputBufPtr
>PUSHWI 0 ScopeID
>SYSCALL SListNewKey
>KAPI SListNewKey
bcs .9
pha
@ -839,7 +839,7 @@ CSH.GetDefine >PUSHB.G CSH.hDefines
>PUSHWZ Allocate..
>PUSHWZ len = 0 (string mode)
>PUSHWZ From Start
>SYSCALL SListGetData
>KAPI SListGetData
bcs .9
stx hDefine
@ -848,7 +848,7 @@ CSH.GetDefine >PUSHB.G CSH.hDefines
>STYA.G CSH.SaveDefine
txa
>SYSCALL GetMemPtr
>LIBC GetMemPtr
>STYA ZPInputBufPtr
.9 rts
@ -857,7 +857,7 @@ CSH.GetVar >PUSHB.G CSH.hSymbols
CSH.Get >PUSHW ZPInputBufPtr
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
>KAPI SListLookup
bcs .9
pha
@ -887,7 +887,7 @@ CSH.GetVarDef phy
>PUSHWI ZPVarDef
>PUSHWI 8 8 bytes
>PUSHWZ From Start
>SYSCALL SListGetData
>KAPI SListGetData
rts
*--------------------------------------
* Input : Value on Stack, Y,A = Type/Qual
@ -1088,7 +1088,7 @@ CSH.GetChar lda (ZPInputBufPtr)
phx
phy
>SYSCALL FreeMem
>LIBC FreeMem
>LDYA.G CSH.SaveDefine
>STYA ZPInputBufPtr
@ -1103,7 +1103,7 @@ CSH.GetChar lda (ZPInputBufPtr)
stz hInclude
phx
phy
>SYSCALL FreeMem
>LIBC FreeMem
>LDYA.G CSH.SaveInclude
>STYA ZPInputBufPtr

View File

@ -58,7 +58,7 @@ CSH.DIR.DEFINE jsr CSH.CheckSpace
lda #0
>PUSHYA DataLen
>SYSCALL SListAddData
>KAPI SListAddData
bcs .99
jmp CSH.SkipLine
@ -80,7 +80,7 @@ CSH.DIR.INCLUDE >STZ.G PathBuf
>PUSHW L.ENV.INCLUDE
>PUSHEA.G PathBuf
>SYSCALL GetEnv
>LIBC GetEnv
lda #'>'

View File

@ -147,58 +147,58 @@ EXEC.atan >FPU ATAN
clc
rts
*--------------------------------------
EXEC.getchar >SYSCALL GetChar
EXEC.getchar >LIBC GetChar
>PUSHA
rts
*--------------------------------------
EXEC.puts >PULLYA
>SYSCALL PutS
>LIBC PutS
>PUSHYA
rts
*--------------------------------------
EXEC.printf >SYSCALL PrintF
EXEC.printf >LIBC PrintF
>PUSHYA
rts
*--------------------------------------
EXEC.execl >SYSCALL ExecL
EXEC.execl >LIBC ExecL
>PUSHYA
rts
*--------------------------------------
EXEC.putenv >SYSCALL PutEnv
EXEC.putenv >LIBC PutEnv
>PUSHYA
rts
*--------------------------------------
EXEC.setenv >SYSCALL SetEnv
EXEC.setenv >LIBC SetEnv
>PUSHYA
rts
*--------------------------------------
EXEC.getenv >SYSCALL GetEnv
EXEC.getenv >LIBC GetEnv
>PUSHYA
rts
*--------------------------------------
EXEC.unsetenv >SYSCALL UnsetEnv
EXEC.unsetenv >LIBC UnsetEnv
>PUSHYA
rts
*--------------------------------------
EXEC.MD5 >SYSCALL MD5
EXEC.MD5 >LIBC MD5
rts
*--------------------------------------
EXEC.malloc >PULLYA
>SYSCALL GetMem
>LIBC GetMem
>PUSHYA
rts
*--------------------------------------
EXEC.fopen >SYSCALL FOpen
EXEC.fopen >LIBC FOpen
>PUSHYA
*--------------------------------------
EXEC.fclose >PULLA
>SYSCALL FClose
>LIBC FClose
>PUSHYA
*--------------------------------------
EXEC.fread >SYSCALL FRead
EXEC.fread >LIBC FRead
>PUSHYA
*--------------------------------------
EXEC.fwrite >SYSCALL FWrite
EXEC.fwrite >LIBC FWrite
>PUSHYA
*--------------------------------------
MAN

View File

@ -212,7 +212,7 @@ CSH.GetNumOnStack
>PUSHW ZPInputBufPtr
>PUSHWI ZPInputBufPtr
>SYSCALL StrToF
>LIBC StrToF
clc
rts
@ -221,10 +221,10 @@ CSH.GetNumOnStack
>PUSHBI 10
bcc .2
>SYSCALL StrToUL
>LIBC StrToUL
bra .3
.2 >SYSCALL StrToL
.2 >LIBC StrToL
.3 bcs .9
@ -260,7 +260,7 @@ CSH.VarLookup >PUSHB.G CSH.hSymbols
>PUSHW ZPInputBufPtr
>PUSHWI 0 ScopeID
>SYSCALL SListLookup
>KAPI SListLookup
bcs .9
phy
@ -285,7 +285,7 @@ CSH.VarLookup >PUSHB.G CSH.hSymbols
>PUSHEA.G CSH.VarDef
>PUSHWI 8 8 bytes
>PUSHWZ From Start
>SYSCALL SListGetData
>KAPI SListGetData
.9 rts
*--------------------------------------
CSH.GetValue lda ZPPtr2 target type

View File

@ -200,7 +200,7 @@ CS.INIT.RTS rts
CS.RUN >PUSHW L.MSG.GREETINGS
>PUSHW A2osX.KVER
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
bcs CS.INIT.RTS
jsr CS.RUN.ARGS
@ -240,7 +240,7 @@ CS.RUN >PUSHW L.MSG.GREETINGS
CS.RUN.ARGS inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .7
>STYA ZPPtr1
@ -287,18 +287,18 @@ CS.RUN.ARGS inc ArgIndex
.90 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
>LIBC PrintF
lda #E.SYN
sec QUIT Process
rts
*--------------------------------------
CS.RUN.LoadFile >SYSCALL LoadTxtFile
CS.RUN.LoadFile >LIBC LoadTxtFile
bcs .9
phx
txa
>SYSCALL GetMemPtr
>LIBC GetMemPtr
plx
.9 rts
@ -324,7 +324,7 @@ PrintErrMsg lda hDefine
.11 >LDA.G hFileBuf
.12 >SYSCALL GetMemPtr
.12 >LIBC GetMemPtr
>STYA ZPPtr1
stz ZPPtr2
@ -370,7 +370,7 @@ PrintErrMsg lda hDefine
lda (pPS),y
>PUSHA
>PUSHBI '-'
>SYSCALL FPutC
>LIBC FPutC
inc ZPPtr3
bne .5
@ -383,7 +383,7 @@ PrintErrMsg lda hDefine
>PUSHW L.MSG.ERR
>PUSHW ZPPtr2 Line counter
>PUSHBI 2
>SYSCALL FPrintF
>LIBC FPrintF
rts
*--------------------------------------
@ -394,7 +394,7 @@ PrintDebugMsg >LDYA pStack
>PUSHW ZPPtr2
>PUSHBI 2
>SYSCALL PrintF
>LIBC PrintF
>DEBUG
rts
*--------------------------------------
@ -404,7 +404,7 @@ PrintTraceMsg.3 ldy #S.PS.hStdErr
lda (pPS),y
>PUSHA
>PUSHBI '>'
>SYSCALL FPutC
>LIBC FPutC
ldy #$ff
@ -422,7 +422,7 @@ PrintTraceMsg.3 ldy #S.PS.hStdErr
>PUSHA
pla
>PUSHA
>SYSCALL FPutC
>LIBC FPutC
ply
bra .1
@ -432,7 +432,7 @@ PrintTraceMsg.3 ldy #S.PS.hStdErr
>PUSHW L.MSG.ECHOCRLF
>PUSHBI 0
>SYSCALL FPrintF
>LIBC FPrintF
rts
*--------------------------------------

View File

@ -7,7 +7,6 @@ NEW
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------
@ -81,10 +80,9 @@ CS.RUN lda #C.SPACE
bpl .2
.97 lda #E.SYN
.98 pha
>LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
pla
sec
.9 rts
@ -107,7 +105,7 @@ CS.RUN lda #C.SPACE
jsr CS.RUN.NextArg
bcs .97
>SYSCALL AToI
>LIBC AToI
bcs .97
tax
@ -119,7 +117,7 @@ CS.RUN lda #C.SPACE
bra .10 scan for any other args
.8 >LDYAI 256
>SYSCALL GetMem
>LIBC GetMem
bcs .9
>STYA ZPBuf
@ -131,9 +129,9 @@ CS.RUN lda #C.SPACE
>PUSHW ZPBufPtr
lda ArgLine
>SYSCALL ArgV
>LIBC ArgV
>PUSHYA
>SYSCALL StrCpy
>LIBC StrCpy
jsr CS.RUN.OUT
bcs .9
@ -169,7 +167,7 @@ CS.RUN.LOOP >SLEEP
>PUSHYA
>PUSHWI 255
>SYSCALL FGetS
>LIBC FGetS
bcs .8
lda (ZPBufPtr)
@ -222,13 +220,13 @@ CS.RUN.OUT ldx FieldNum
sta (ZPBufPtr),y
.8 >LDYA ZPBufPtr
>SYSCALL PutS
>LIBC PutS
rts
*--------------------------------------
CS.RUN.PRINTCR >PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
>LIBC PrintF
rts
*--------------------------------------
@ -268,13 +266,13 @@ CS.RUN.OUT.MN ldy #0
jsr CS.RUN.AddYToBufPtr
.80 >LDYA ZPBufPtr
>SYSCALL PutS
>LIBC PutS
rts
*--------------------------------------
CS.RUN.NextArg inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .9
>STYA ZPPtr1
@ -294,12 +292,12 @@ CS.RUN.AddYToBufPtr
CS.QUIT lda hToClose
beq .1
>SYSCALL FClose Close the pipe
>LIBC FClose Close the pipe
.1 lda hBuf
beq .8
>SYSCALL FreeMem
>LIBC FreeMem
.8 clc
rts

View File

@ -49,7 +49,7 @@ L.MSG.USAGE .DA MSG.USAGE
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib
>LIBC LoadLib
bcs .9
sta hLIBTCPIP
@ -61,7 +61,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
bmi CS.RUN.IPOK
>LDYA L.MSG.IPKO
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
rts
@ -76,14 +76,14 @@ CS.RUN.IPOK ldy #S.PS.ARGC
beq CS.RUN.ADD
>LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
rts
*--------------------------------------
CS.RUN.ADD lda #2
>SYSCALL ArgV
>LIBC ArgV
>PUSHYA
>PUSHW L.SSCANF.IP
@ -93,12 +93,12 @@ CS.RUN.ADD lda #2
>PUSHEA.G DST.IP+3
>PUSHBI 8 4 PTRs
>SYSCALL SScanF
>LIBC SScanF
bcs .9
>PUSHEA.G DST.IP
lda #1
>SYSCALL ArgV
>LIBC ArgV
>PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.Add
bcs .99
@ -114,7 +114,7 @@ CS.RUN.ADD lda #2
CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GetCache
>STYA ZPPTR1
>LDYA L.MSG0
>SYSCALL PutS
>LIBC PutS
lda #K.DNSCACHE.SIZE
sta EntryCount
@ -139,7 +139,7 @@ CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GetCache
ldy #S.DNSCACHE.hNAME
lda (ZPPTR1),y
>SYSCALL GetMemPtr
>LIBC GetMemPtr
>PUSHYA
ldy #S.DNSCACHE.IP
@ -159,7 +159,7 @@ CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GetCache
bne .2
>PUSHBI 14
>SYSCALL PrintF
>LIBC PrintF
.6 lda ZPPTR1
clc
@ -180,7 +180,7 @@ CS.EVENT sec
*--------------------------------------
CS.QUIT lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
>LIBC UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -7,7 +7,6 @@ NEW
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------
@ -43,20 +42,20 @@ ZS.END .ED
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #2 BIN Layout Version 2
.DA #0
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.REG1 .DA MSG.REG1
@ -82,7 +81,7 @@ CS.RUN jsr CS.RUN.SetCRLF
.1 inc ArgCount
lda ArgCount
>SYSCALL ArgV
>LIBC ArgV
bcs .6
>STYA ZPPtr1
@ -103,7 +102,7 @@ CS.RUN jsr CS.RUN.SetCRLF
bpl .2
.9 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
@ -130,27 +129,34 @@ CS.RUN jsr CS.RUN.SetCRLF
.6 lda ArgDir do we have a Source dir ?
bne .8
ldy #S.PS.hCWD
lda (pPS),y
>SYSCALL GetMemPtr
ldy #S.PS.pCWD
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
jsr X.InitSrcDirYA
bcs .99
.8 >PUSHEA.G TIME.SysTime
>SYSCALL Time
.8 >LEA.G TIME.SysTime
>LIBC Time
*--------------------------------------
CS.RUN.LOOP stz bPass2
.1 ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
.1 ldy #S.PS.pStdIn
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FEOF
bcc .2
rts I/O error
.2 tay
bne .3 no char
>SYSCALL GetChar
>LIBC GetChar
cmp #$03 Ctrl-C
beq .99 Abort....
@ -279,26 +285,22 @@ CS.RUN.PRINT.REG
bit bAllFiles
bpl .8
>SS
>PUSHW L.MSG.REG1
ldy #S.STAT.BLOCKS+3
ldx #4
.3 lda (ZPFileStat),y
>PUSHA
dey
dex
bne .3
>PUSHL.G S.STAT.BLOCKS
>PUSHBI 4
>SYSCALL PrintF
>LIBC PrintF
>SR
bcs .9
jsr CS.RUN.PrintCwd
>PUSHW L.MSG.REG2
>SS
>PUSHW L.MSG.REG2
>PUSHW ZPFileName
>PUSHBI 2
>SYSCALL PrintF
bcs .9
>LIBC PrintF
>SR
bcs .9
jmp CS.RUN.NewLine
@ -328,7 +330,8 @@ CS.RUN.PRINT.BDEV
bit bPass2
bmi .8
>PUSHW L.MSG.BDEVEXT
>SS
>PUSHW L.MSG.BDEVEXT
>PUSHW ZPFileName
ldy #S.STAT.P.SLOT
@ -345,8 +348,9 @@ CS.RUN.PRINT.BDEV
>PUSHB (ZPFileStat),y
>PUSHBI 8
>SYSCALL PrintF
bcs .9
>LIBC PrintF
>SR
bcs .9
jsr CS.RUN.NewLine
bcs .9
@ -361,7 +365,8 @@ CS.RUN.PRINT.BDEV
.9 rts
*--------------------------------------
CS.RUN.PrintDirSumm
>PUSHW L.MSG.DIRSUMM
>SS
>PUSHW L.MSG.DIRSUMM
lda bDirLevel
asl
@ -381,72 +386,83 @@ CS.RUN.PrintDirSumm
bpl .1
>PUSHBI 4
>SYSCALL PrintF
>LIBC PrintF
>SR
rts
*--------------------------------------
CS.RUN.PrintBaseDir
lda ArgDir
beq .1
>SYSCALL ArgV
>SYSCALL PutS
>LIBC ArgV
>LIBC PutS
rts
.1 ldy #S.PS.hCWD
lda (pPS),y
>SYSCALL GetMemPtr
>SYSCALL PutS
.1 ldy #S.PS.pCWD
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC PutS
rts
*--------------------------------------
CS.RUN.PrintCwd >PUSHW L.MSG.CWD
ldy #hSrcBasePath
lda (pData),y
>SYSCALL GetMemPtr
CS.RUN.PrintCwd >SS
>PUSHW L.MSG.CWD
ldy #S.PS.pCWD
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>PUSHYA
>PUSHBI 2
>SYSCALL PrintF
rts
>LIBC PrintF
>SR
rts
*--------------------------------------
CS.RUN.NewLine lda #C.CR
>SYSCALL PutChar
>LIBC PutChar
lda bCRLF
beq .9
lda #C.LF
>SYSCALL PutChar
>LIBC PutChar
.9 rts
*--------------------------------------
CS.RUN.SetCRLF ldy #S.PS.hStdOut
lda (pPS),y
tax
lda FILEs.hFD-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1) #S.FD.T.REG ?
CS.RUN.SetCRLF ldy #S.PS.pStdOut
jsr A2osX.GetPSy
pha
iny
jsr A2osX.GetPSy
ply
>LIBC FileNo
bcs .9
>SS
>PUSHYA
>PUSHEA.G STATBUF
>LIBC FStat
>SR
bcs .9
>LDA.G STATBUF+S.STAT.MODE+1
and #$F0
beq .9 no CRLF if REG
inc bCRLF
.9 rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
bcc CS.QUIT
>LDA.G hInclude
beq .8
>SYSCALL FreeMem
.8 clc
rts
CS.QUIT jmp X.Quit
*--------------------------------------
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END
CS.END .EQ *
*--------------------------------------
OptionList .AS "SAsa"
OptionVars .DA #bSummary,#bAllFiles,#bSummary,#bAllFiles
@ -460,10 +476,12 @@ MSG.CWD .CZ "%s"
MSG.DIRSUMM .CZ "%5u "
MSG.BDEVEXT .CZ "/%15s s%dd%d Blocks Used:%5D Total:%5D"
MSG.BDEV .CZ "\e[32m%s/\e[0m"
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
TIME.SysTime .BS S.TIME
BlkCounters .BS 64 Array of 32 bit integers, size 16
.INB usr/src/shared/x.fileenum.g

View File

@ -60,11 +60,11 @@ BUF.InsertTAB >LDA.G FileX
BUF.DelCharAtCursor
lda BUF.COffset
clc
>ADC.G BufBase
>ADC.G pBuf
sta BufPtrDst
lda BUF.COffset+1
>ADC.G BufBase+1
>ADC.G pBuf+1
sta BufPtrDst+1
>LDYA BufPtrDst
@ -91,10 +91,12 @@ BUF.DelCharAtCursor
.9 rts
*--------------------------------------
BUF.InsertClipboard
>LDA.G hClipBoard
>LDA.G pClipBoard+1
beq .8
>SYSCALL GetMemPtr
dey
lda (pData),y
>STYA ClipboardPtr
jsr BUF.ComputeCOffset
@ -146,11 +148,11 @@ BUF.DelSel jsr BUF.GetSelLen
>LDA.G SelStart
clc
>ADC.G BufBase
>ADC.G pBuf
sta BufPtrDst
>LDA.G SelStart+1
>ADC.G BufBase+1
>ADC.G pBuf+1
sta BufPtrDst+1
lda BufPtrDst
@ -180,26 +182,29 @@ BUF.SelToClipboard
jsr BUF.GetSelLen
bcs .8
>LDA.G hClipBoard
>LDA.G pClipBoard+1
beq .1
>SYSCALL FreeMem
>STZ.G hClipBoard
dey
lda (pData),y
>LIBC Free
>STZ.G pClipBoard+1
.1 >LDYA SelLen
>SYSCALL GetMem
>LIBC Malloc
bcs .9
>STYA ClipboardPtr
txa
>STA.G hClipBoard
>STYA.G pClipBoard
>LDA.G BufBase
>LDA.G pBuf
clc
>ADC.G SelStart
sta BufPtr
>LDA.G BufBase+1
>LDA.G pBuf+1
>ADC.G SelStart+1
sta BufPtr+1
@ -395,7 +400,7 @@ BUF.GetLineAX sta BUF.TmpLine1 Requested Line
stz BUF.LOffset
stz BUF.LOffset+1
>LDYA.G BufBase
>LDYA.G pBuf
>STYA BufPtr
.1 ldy #0
@ -543,11 +548,11 @@ BUF.BufPtrSetup >STYA TmpLen
.8 lda BUF.COffset
clc
>ADC.G BufBase
>ADC.G pBuf
sta BufPtr
lda BUF.COffset+1
>ADC.G BufBase+1
>ADC.G pBuf+1
sta BufPtr+1
lda BufPtr
@ -563,7 +568,7 @@ BUF.BufPtrSetup >STYA TmpLen
.9 rts
*--------------------------------------
BUF.BufPtr.Realloc
>PUSHB.G hBuf
>PUSHW.G pBuf
lda FileLen+1
inc
@ -572,12 +577,11 @@ BUF.BufPtr.Realloc
>PUSHA
>PUSHBI 0
>SYSCALL Realloc
>LIBC Realloc
bcs .9
>STYA.G BufBase
txa
>STA.G hBuf
>STYA.G pBuf
.9 rts
*--------------------------------------
MAN

Some files were not shown because too many files have changed in this diff Show More