mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-19 07:30:41 +00:00
ProDOS.FX/16M, A2osX 1.00/16M
This commit is contained in:
parent
c483f7b04e
commit
c11287b302
@ -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
|
||||
|
@ -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
|
||||
|
26
.Docs/ASM.md
26
.Docs/ASM.md
@ -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.
|
||||
|
984
.Docs/KERNEL.md
984
.Docs/KERNEL.md
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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
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.
@ -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: "
|
||||
|
87
A2osX.S.txt
87
A2osX.S.txt
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
1173
BIN/ASM.65816.O.txt
1173
BIN/ASM.65816.O.txt
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
1020
BIN/ASM.65R02.O.txt
1020
BIN/ASM.65R02.O.txt
File diff suppressed because it is too large
Load Diff
@ -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
167
BIN/ASM.S.CORE.txt
Normal 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
|
@ -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
|
||||
|
@ -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
|
||||
*---------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
425
BIN/ASM.S.txt
425
BIN/ASM.S.txt
@ -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
|
||||
*---------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
2602
BIN/ASM.Z80.O.txt
2602
BIN/ASM.Z80.O.txt
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
109
BIN/ATTR.S.txt
109
BIN/ATTR.S.txt
@ -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
|
||||
|
||||
|
34
BIN/BF.S.txt
34
BIN/BF.S.txt
@ -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
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
*--------------------------------------
|
||||
|
127
BIN/CAT.S.txt
127
BIN/CAT.S.txt
@ -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
|
||||
|
@ -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
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
104
BIN/CC.S.DIR.txt
104
BIN/CC.S.DIR.txt
@ -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
|
||||
|
579
BIN/CC.S.EXP.txt
579
BIN/CC.S.EXP.txt
@ -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
|
||||
|
673
BIN/CC.S.F.txt
673
BIN/CC.S.F.txt
@ -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
|
||||
|
200
BIN/CC.S.FIO.txt
200
BIN/CC.S.FIO.txt
@ -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
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
325
BIN/CC.S.PCC.txt
325
BIN/CC.S.PCC.txt
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
937
BIN/CC.S.SYM.txt
937
BIN/CC.S.SYM.txt
File diff suppressed because it is too large
Load Diff
50
BIN/CC.S.TAG.txt
Normal file
50
BIN/CC.S.TAG.txt
Normal 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
|
@ -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
|
||||
|
470
BIN/CC.S.txt
470
BIN/CC.S.txt
@ -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
|
||||
*--------------------------------------
|
||||
|
138
BIN/CHAUX.S.txt
138
BIN/CHAUX.S.txt
@ -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
|
||||
|
@ -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
|
||||
|
112
BIN/CHMOD.S.txt
112
BIN/CHMOD.S.txt
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
118
BIN/CMP.S.txt
118
BIN/CMP.S.txt
@ -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
|
||||
|
@ -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
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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 #'>'
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*--------------------------------------
|
||||
|
162
BIN/DU.S.txt
162
BIN/DU.S.txt
@ -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
|
||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user