mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-08-07 18:25:03 +00:00
Compare commits
29 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
66c51a2ab5 | ||
|
64a722f1e2 | ||
|
75c2847cf1 | ||
|
f5efc5641e | ||
|
c39fd20746 | ||
|
79287f2c51 | ||
|
cd0126477b | ||
|
1c35a7ae0a | ||
|
ffce999045 | ||
|
9e62379b46 | ||
|
9125b7bfd4 | ||
|
cdb734d1ba | ||
|
f78f2827dc | ||
|
ef268697b5 | ||
|
6665199e55 | ||
|
f4ce23a3cf | ||
|
177c621364 | ||
|
54fba4e12f | ||
|
0d41deb7ec | ||
|
7a3debfd0c | ||
|
1713c71505 | ||
|
abd9d35cae | ||
|
1d3de982d6 | ||
|
9cb7d29bfa | ||
|
374d2465b6 | ||
|
156bca2413 | ||
|
f5b2db78a3 | ||
|
ca5f81530c | ||
|
76b3905a60 |
@@ -1,7 +1,9 @@
|
||||
# 7/4/2020 PLASMA 2.0 Alpha 1 Available!
|
||||
# 2/28/2023 PLASMA 2.0 Beta Available!
|
||||
Hopefully close to a 2.0 Release.
|
||||
|
||||
[Download and read the Release Notes](https://github.com/dschmenk/PLASMA/releases)
|
||||
|
||||
[Change List](https://github.com/dschmenk/PLASMA/blob/master/doc/Version%202.0.md#changes-in-plasma-for-20-alpha-1)
|
||||
[Change List](https://github.com/dschmenk/PLASMA/blob/master/doc/Version%202.0.md#changes-in-plasma-for-20-alpha-2)
|
||||
|
||||
# 4/29/2018 PLASMA 1.2 Available!
|
||||
[Download and read the Release Notes](https://github.com/dschmenk/PLASMA/blob/master/doc/Version%201.2.md)
|
||||
|
@@ -1,20 +1,20 @@
|
||||
# PLASMA Version 2.0 Alpha 2
|
||||
# PLASMA Version 2.0 Beta
|
||||
|
||||
Welcome to PLASMA: the Grand Unifying Platform for the Apple 1, ][, and ///.
|
||||
|
||||
Download the five disk images:
|
||||
|
||||
[PLASMA 2.0 Alpha2 800K Full System](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2.2mg?raw=true)
|
||||
[PLASMA 2.0 Beta 800K Full System](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2.2mg?raw=true)
|
||||
|
||||
[PLASMA 2.0 Alpha2 System and ProDOS Boot](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-SYS.PO?raw=true)
|
||||
[PLASMA 2.0 Beta System and ProDOS Boot](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-SYS.PO?raw=true)
|
||||
|
||||
[PLASMA 2.0 Alpha2 Build Tools](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-BLD.PO?raw=true)
|
||||
[PLASMA 2.0 Beta Build Tools](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-BLD.PO?raw=true)
|
||||
|
||||
[PLASMA 2.0 Alpha2 Demos](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-DEM.PO?raw=true)
|
||||
[PLASMA 2.0 Beta Demos](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-DEM.PO?raw=true)
|
||||
|
||||
[PLASMA 2.0 Alpha2 TCP/IP network modules](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-INET.PO?raw=true)
|
||||
[PLASMA 2.0 Beta TCP/IP network modules](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-INET.PO?raw=true)
|
||||
|
||||
[PLASMA 2.0 Alpha2 Apple /// SOS Mame Boot and SANE floating point modules](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-FPSOS.PO?raw=true)
|
||||
[PLASMA 2.0 Beta Apple /// SOS Mame Boot and SANE floating point modules](https://github.com/dschmenk/PLASMA/blob/master/images/apple/PLASMA2-FPSOS.PO?raw=true)
|
||||
|
||||
[PLASMA 2.0 Alpha1 Apple /// Mame hard disk image](https://github.com/dschmenk/PLASMA/blob/master/images/apple/apple3.hd?raw=true)
|
||||
|
||||
@@ -118,6 +118,16 @@ There is a [YouTube playlist](https://www.youtube.com/playlist?list=PLlPKgUMQbJ7
|
||||
|
||||
- The documentation is sparse and incomplete. Yep, could use your help...
|
||||
|
||||
# Changes in PLASMA for 2.0 Beta
|
||||
|
||||
1. Compilers allows for including self imported defines
|
||||
|
||||
2. Compilers fixed for local constants
|
||||
|
||||
3. Floating point string formatting fixes and improvements
|
||||
|
||||
4. Fiber library exports number of active fibers
|
||||
|
||||
# Changes in PLASMA for 2.0 Alpha 2
|
||||
|
||||
1. Self hosted compiler fixes for invalid array size constants
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,5 @@
|
||||
import fiber
|
||||
predef fbrInit(numPool), fbrStop(fid)#0, fbrExit#0, fbrStart(defaddr, param)
|
||||
predef fbrYield#0, fbrHalt#0, fbrResume(fid)#0
|
||||
byte fbrCount
|
||||
end
|
||||
|
@@ -6,6 +6,7 @@ const FPSTR_FIXED = 1 // Fixed count of fractional digits
|
||||
const FPSTR_FLOAT = 0 // Floating count of fractional digits
|
||||
const FPSTR_STRIP = 2 // Strip trailing fractional zeros
|
||||
const FPSTR_EXP = 4 // Force exponential format
|
||||
const FPSTR_FLEX = 8 // Flexible switch to EXP format if over/underflow
|
||||
//
|
||||
// Parse string into decrecord, return SANE conversion output
|
||||
//
|
||||
|
@@ -1,4 +1,5 @@
|
||||
include "inc/cmdsys.plh"
|
||||
include "inc/conio.plh"
|
||||
sysflags nojitc // Keep tone() from compiling and sounding different
|
||||
//
|
||||
// Handy constants.
|
||||
@@ -34,24 +35,6 @@ const page2 = 1
|
||||
//
|
||||
const ENV_REG = $FFDF
|
||||
//
|
||||
// External interface.
|
||||
//
|
||||
struc t_conio
|
||||
word keypressed
|
||||
word getkey
|
||||
word echo
|
||||
word home
|
||||
word gotoxy
|
||||
word viewport
|
||||
word texttype
|
||||
word textmode
|
||||
word grmode
|
||||
word grcolor
|
||||
word grplot
|
||||
word tone
|
||||
word rnd
|
||||
end
|
||||
//
|
||||
// Predefined functions.
|
||||
//
|
||||
predef a2keypressed,a2home,a12echo(state),a2gotoxy(x,y),a2viewport(left, top, width, height),a2texttype(type)
|
||||
|
@@ -1,4 +1,5 @@
|
||||
include "inc/cmdsys.plh"
|
||||
include "inc/fileio.plh"
|
||||
//
|
||||
// CFFA1 addresses.
|
||||
//
|
||||
@@ -22,26 +23,6 @@ const sysbuf = $0800
|
||||
//
|
||||
// External interface
|
||||
//
|
||||
struc t_fileio
|
||||
word getpfx
|
||||
word setpfx
|
||||
word getfileinfo
|
||||
word setfileinfo
|
||||
word geteof
|
||||
word seteof
|
||||
word iobufalloc
|
||||
word open
|
||||
word close
|
||||
word read
|
||||
word write
|
||||
word create
|
||||
word destroy
|
||||
word rename
|
||||
word newline
|
||||
word online
|
||||
word readblock
|
||||
word writeblock
|
||||
end
|
||||
predef a2getpfx(path), a23setpfx(path), a2getfileinfo(path, fileinfo), a2setfileinfo(path, fileinfo), a23geteof(refnum)#2, a23seteof(refnum, eofl, eofh), a2iobufs(iobufs), a2open(path), a2close(refnum)
|
||||
predef a23read(refnum, buf, len), a2write(refnum, buf, len), a2create(path, type, aux), a23destroy(path), a23rename(path, newpath)
|
||||
predef a2newline(refnum, emask, nlchar), a2online(unit, buf), a2readblock(unit, buf, block), a2writeblock(unit, buf, block)
|
||||
@@ -209,9 +190,9 @@ def a13iobufs(iobufs)
|
||||
end
|
||||
def a2open(path)
|
||||
byte i, params[6]
|
||||
|
||||
|
||||
for i = 0 to MAX_IOBUFS-1
|
||||
if iobuf_addr[i] and not iobuf_ref[i]
|
||||
if iobuf_addr[i] and not iobuf_ref[i]
|
||||
params.0 = 3
|
||||
params:1 = path
|
||||
params:3 = iobuf_addr[i]
|
||||
@@ -396,7 +377,7 @@ def a3volume(unit, volname)
|
||||
byte devname[17]
|
||||
byte info[11]
|
||||
byte params[9]
|
||||
|
||||
|
||||
^volname = 0
|
||||
params.0 = 4
|
||||
params.1 = unit
|
||||
|
@@ -19,6 +19,7 @@ byte fbrNext[MAX_FIBERS]
|
||||
word fbrVMState[MAX_FIBERS]
|
||||
word fbrPool
|
||||
byte fbrRunning = 0
|
||||
export byte fbrCount = 0
|
||||
//
|
||||
// Zero Page VM state and 6502 stack
|
||||
//
|
||||
@@ -136,6 +137,7 @@ export def fbrInit(numPool)
|
||||
else
|
||||
return -1
|
||||
fin
|
||||
fbrCount = 1
|
||||
return 0
|
||||
end
|
||||
//
|
||||
@@ -151,6 +153,7 @@ export def fbrStop(fid)#0
|
||||
//
|
||||
// Remove fiber from RUN list and tag as free
|
||||
//
|
||||
fbrCount--
|
||||
fbrState[fid] = FIBER_FREE
|
||||
i = 0
|
||||
while fbrNext[i] <> fid
|
||||
@@ -212,6 +215,7 @@ export def fbrStart(defaddr, param)
|
||||
//
|
||||
// Return fiber ID (index)
|
||||
//
|
||||
fbrCount++
|
||||
return i
|
||||
fin
|
||||
next
|
||||
|
@@ -3,6 +3,7 @@
|
||||
//
|
||||
include "inc/cmdsys.plh"
|
||||
include "inc/sane.plh"
|
||||
include "inc/fpstr.plh"
|
||||
//
|
||||
// Structures for DEC2BIN, BIN2DEC
|
||||
//
|
||||
@@ -19,14 +20,13 @@ end
|
||||
// Parse string into decrecord, return SANE conversion output
|
||||
//
|
||||
export def str2ext(str, ext)
|
||||
byte i, s, d
|
||||
byte i, d
|
||||
byte decrec[t_decrecord]
|
||||
word sgnadj, expadj
|
||||
|
||||
decrec:sgn = 0
|
||||
decrec:exp = 0
|
||||
decrec.sig = 0
|
||||
s = 1
|
||||
i = 1
|
||||
//
|
||||
// Skip whitespace
|
||||
@@ -51,27 +51,34 @@ export def str2ext(str, ext)
|
||||
// Parse number
|
||||
//
|
||||
while i <= ^str
|
||||
d = toupper(^(str+i))
|
||||
d = ^(str+i)
|
||||
if d >= '0' and d <= '9'
|
||||
//
|
||||
// Parse digit
|
||||
//
|
||||
decrec.sig[s] = ^(str+i)
|
||||
decrec:sig++
|
||||
s++
|
||||
decrec.sig[decrec.sig] = d
|
||||
elsif d == '.'
|
||||
//
|
||||
// Parse decimal point
|
||||
//
|
||||
i++
|
||||
while i <= ^str
|
||||
d = toupper(^(str+i))
|
||||
if d >= '0' and d <= '9'
|
||||
decrec.sig[s] = ^(str+i)
|
||||
decrec.sig++
|
||||
if !decrec:exp
|
||||
//
|
||||
// Skip leading zeros
|
||||
//
|
||||
while i <= ^str and ^(str+i) == '0'
|
||||
decrec:exp--
|
||||
s++
|
||||
elsif d == 'E'
|
||||
i++
|
||||
loop
|
||||
fin
|
||||
while i <= ^str
|
||||
d = ^(str+i)
|
||||
if d >= '0' and d <= '9'
|
||||
decrec.sig++
|
||||
decrec.sig[decrec.sig] = d
|
||||
decrec:exp--
|
||||
elsif d == 'E' or d == 'e'
|
||||
i--
|
||||
break
|
||||
else
|
||||
@@ -79,7 +86,7 @@ export def str2ext(str, ext)
|
||||
fin
|
||||
i++
|
||||
loop
|
||||
elsif d == 'E'
|
||||
elsif d == 'E' or d == 'e'
|
||||
//
|
||||
// Parse exponent
|
||||
//
|
||||
@@ -108,21 +115,20 @@ export def str2ext(str, ext)
|
||||
i++
|
||||
loop
|
||||
//
|
||||
// Strip leading zeros from sig
|
||||
// Strip trailing zeros from sig
|
||||
//
|
||||
while decrec.sig > 1 and decrec.sig.1 == '0'
|
||||
while decrec.sig > 0 and decrec.sig[decrec.sig] == '0'
|
||||
decrec.sig--
|
||||
if decrec:exp < 0
|
||||
decrec:exp--
|
||||
fin
|
||||
memcpy(@decrec.sig.1, @decrec.sig.2, decrec.sig)
|
||||
decrec:exp++
|
||||
loop
|
||||
//
|
||||
// Check for zero
|
||||
//
|
||||
if !decrec.sig
|
||||
decrec.sig = 1
|
||||
decrec.sig = 1
|
||||
decrec.sig.1 = '0'
|
||||
decrec:sgn = 0
|
||||
decrec:exp = 0
|
||||
fin
|
||||
sane:saveZP()
|
||||
return sane:restoreZP(sane:op2FP(FFEXT|FOD2B, ext, @decrec))
|
||||
@@ -131,14 +137,15 @@ end
|
||||
// Convert extended FP to string using , return string
|
||||
//
|
||||
export def ext2str(ext, str, intdigits, fracdigits, format)
|
||||
byte d, i, sigdigits, numdigits
|
||||
word dp, tens
|
||||
byte d, numdigits
|
||||
word istr, dp, tens
|
||||
byte decform[t_decformat]
|
||||
byte decrec[t_decrecord]
|
||||
|
||||
numdigits = intdigits + fracdigits
|
||||
decform:style = format & $01
|
||||
numdigits = intdigits + fracdigits
|
||||
decform:style = format & FPSTR_FIXED
|
||||
decform:digits = decform:style ?? fracdigits :: numdigits
|
||||
decrec:exp = 0
|
||||
sane:saveZP()
|
||||
sane:restoreZP(sane:op3FP(FFEXT|FOB2D, @decrec, ext, @decform))
|
||||
^(str+1) = decrec.sgn ?? '-' :: ' '
|
||||
@@ -156,93 +163,110 @@ export def ext2str(ext, str, intdigits, fracdigits, format)
|
||||
^str = 4
|
||||
return str
|
||||
fin
|
||||
if decrec.sig.1 == '0'
|
||||
while decrec.sig < fracdigits
|
||||
decrec.sig++
|
||||
decrec.sig[decrec.sig] = '0'
|
||||
loop
|
||||
decrec:exp = -decrec.sig
|
||||
fin
|
||||
dp = decrec.sig + decrec:exp
|
||||
sigdigits = decrec.sig
|
||||
if decrec:exp < 0 and format & $02
|
||||
//
|
||||
// Strip off trailing fractional zeros
|
||||
//
|
||||
while sigdigits > dp and decrec.sig[sigdigits] == '0'
|
||||
sigdigits--
|
||||
decrec:exp++
|
||||
loop
|
||||
fin
|
||||
if -decrec:exp > numdigits or sigdigits + decrec:exp >= (decform:style ?? intdigits :: numdigits) or format & $04
|
||||
//
|
||||
// Convert to exponential format
|
||||
//
|
||||
^(str+2) = decrec.sig.1
|
||||
^(str+3) = '.'
|
||||
i = 3
|
||||
for d = 0 to fracdigits
|
||||
i++
|
||||
^(str+i) = decrec.sig.2[d]
|
||||
next
|
||||
if format & FPSTR_EXP
|
||||
if format & FPSTR_STRIP
|
||||
//
|
||||
// Strip off trailing fractional zeros
|
||||
//
|
||||
while decrec.sig > 1 and decrec.sig[decrec.sig] == '0'
|
||||
decrec.sig--
|
||||
decrec:exp++
|
||||
loop
|
||||
fin
|
||||
//
|
||||
// Copy over all significant digits
|
||||
//
|
||||
if ^(str+i) == '.'; i--; fin
|
||||
i++
|
||||
^(str+i) = 'E'
|
||||
i++
|
||||
^(str+2) = decrec.sig.1
|
||||
^(str+3) = '.'
|
||||
istr = str + 3
|
||||
for d = 2 to decrec.sig
|
||||
istr++
|
||||
^istr = decrec.sig[d]
|
||||
next
|
||||
if ^istr == '.'; istr--; fin
|
||||
//
|
||||
// Print exponent as 4 digits with leading zeros
|
||||
//
|
||||
istr++
|
||||
^istr = 'E'
|
||||
istr++
|
||||
dp--
|
||||
if dp < 0
|
||||
^(str+i) = '-'
|
||||
^istr = '-'
|
||||
dp = -dp
|
||||
else
|
||||
^(str+i) = '+'
|
||||
if dp == 0
|
||||
i++
|
||||
^(str+i) = '0'
|
||||
fin
|
||||
^istr = '+'
|
||||
fin
|
||||
//
|
||||
// Pretty output the exponent (preceding zero for values less than 10)
|
||||
//
|
||||
d = 0
|
||||
tens = 10000
|
||||
while dp
|
||||
d = d or tens <= 10
|
||||
if dp >= tens or d
|
||||
d = 1
|
||||
i++
|
||||
^(str+i) = (dp / tens) + '0'
|
||||
fin
|
||||
tens = 1000
|
||||
while tens
|
||||
istr++
|
||||
^istr = (dp / tens) + '0'
|
||||
dp = dp % tens
|
||||
tens = tens / 10
|
||||
if !tens; break; fin
|
||||
loop
|
||||
else
|
||||
if format & FPSTR_STRIP and decrec:exp < 0
|
||||
//
|
||||
// Strip off trailing fractional zeros
|
||||
//
|
||||
while decrec.sig > dp and decrec.sig[decrec.sig] == '0'
|
||||
decrec.sig--
|
||||
decrec:exp++
|
||||
loop
|
||||
fin
|
||||
if decrec:sig == 1 | '0'<<8
|
||||
//
|
||||
// Case of zero or underflow
|
||||
//
|
||||
if decrec:exp == 0
|
||||
//
|
||||
// Zero
|
||||
//
|
||||
if format & FPSTR_FIXED
|
||||
//
|
||||
// Add trailing fractional zeros
|
||||
//
|
||||
dp = 1 - fracdigits
|
||||
fin
|
||||
elsif format & FPSTR_FLEX
|
||||
//
|
||||
// Underflow
|
||||
//
|
||||
dp = -fracdigits - 1
|
||||
fin
|
||||
fin
|
||||
if format & FPSTR_FLEX and (dp < -fracdigits or dp > (format & FPSTR_FIXED ?? intdigits :: numdigits))
|
||||
//
|
||||
// Print as exponent if over/underflow fixed digits
|
||||
//
|
||||
if numdigits < 7; numdigits = 7; fin
|
||||
return ext2str(ext, str, 1, numdigits - 7, FPSTR_EXP | (format & FPSTR_STRIP))
|
||||
fin
|
||||
//
|
||||
// Convert as floating point
|
||||
//
|
||||
i = 1
|
||||
if dp <= 0
|
||||
*(str+2) = '0'|('.'<<8)
|
||||
i = 3
|
||||
istr = str + 3
|
||||
while dp < 0
|
||||
dp++
|
||||
i++
|
||||
^(str+i) = '0'
|
||||
istr++
|
||||
^istr = '0'
|
||||
loop
|
||||
else
|
||||
istr = str + 1
|
||||
fin
|
||||
for d = 1 to sigdigits
|
||||
i++
|
||||
^(str+i) = decrec.sig[d]
|
||||
for d = 1 to decrec.sig
|
||||
istr++
|
||||
^istr = decrec.sig[d]
|
||||
if d == dp
|
||||
i++
|
||||
^(str+i) = '.'
|
||||
istr++
|
||||
^istr = '.'
|
||||
fin
|
||||
next
|
||||
if ^(str+i) == '.'; i--; fin
|
||||
if ^istr == '.'; istr--; fin
|
||||
fin
|
||||
^str = i
|
||||
^str = istr - str
|
||||
return str
|
||||
end
|
||||
|
@@ -1,24 +1,5 @@
|
||||
include "inc/cmdsys.plh"
|
||||
//
|
||||
// iNet API - must match inet.plh
|
||||
//
|
||||
struc t_inet
|
||||
word initIP
|
||||
word serviceIP
|
||||
word openUDP
|
||||
word sendUDP
|
||||
word closeUDP
|
||||
word listenTCP
|
||||
word connectTCP
|
||||
word sendTCP
|
||||
word closeTCP
|
||||
word setInterfaceIP
|
||||
word getInterfaceHA
|
||||
word setDNS
|
||||
word resolveIP
|
||||
word setCallback
|
||||
word setParam
|
||||
end
|
||||
include "inc/inet.plh"
|
||||
//
|
||||
// DNS message
|
||||
//
|
||||
|
172
src/makefile
172
src/makefile
@@ -143,11 +143,11 @@ $(PLASM): $(OBJS) $(INCS)
|
||||
cc $(OBJS) -o $(PLASM)
|
||||
|
||||
$(PLASMAPLASM): toolsrc/plasm.pla toolsrc/lex.pla toolsrc/parse.pla toolsrc/codegen.pla toolsrc/codeseq.plh
|
||||
./$(PLASM) -AMOW < toolsrc/plasm.pla > toolsrc/plasm.a
|
||||
./$(PLASM) -AMOW toolsrc/plasm.pla
|
||||
acme --setpc 4094 -o $(PLASMAPLASM) toolsrc/plasm.a
|
||||
|
||||
$(CODEOPT): toolsrc/codeopt.pla toolsrc/codeseq.plh
|
||||
./$(PLASM) -AMOW < toolsrc/codeopt.pla > toolsrc/codeopt.a
|
||||
./$(PLASM) -AMOW toolsrc/codeopt.pla
|
||||
acme --setpc 4094 -o $(CODEOPT) toolsrc/codeopt.a
|
||||
|
||||
#
|
||||
@@ -177,25 +177,25 @@ $(PLVMC64): vmsrc/c64/plvmc64.s vmsrc/c64/cmd.a
|
||||
acme -f cbm -o $(PLVMC64) -l vmsrc/c64/plvmc64.sym vmsrc/c64/plvmc64.s
|
||||
|
||||
vmsrc/apple/a1cmd.a: vmsrc/apple/a1cmd.pla $(PLASM)
|
||||
./$(PLASM) -AOW < vmsrc/apple/a1cmd.pla > vmsrc/apple/a1cmd.a
|
||||
./$(PLASM) -AOW vmsrc/apple/a1cmd.pla
|
||||
|
||||
$(PLVM01): vmsrc/apple/plvm01.s vmsrc/apple/a1cmd.a
|
||||
acme -o $(PLVM01) -l vmsrc/apple/plvm01.sym vmsrc/apple/plvm01.s
|
||||
|
||||
$(CMD): vmsrc/apple/cmd.pla vmsrc/apple/cmdstub.s $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AOW < vmsrc/apple/cmd.pla > vmsrc/apple/cmd.a
|
||||
./$(PLASM) -AOW vmsrc/apple/cmd.pla
|
||||
acme --setpc 8192 -o $(CMD) vmsrc/apple/cmdstub.s
|
||||
|
||||
$(CMDJIT): vmsrc/apple/cmdjit.pla vmsrc/apple/cmdjitstub.s $(PLVMJIT) $(PLASM)
|
||||
./$(PLASM) -AOW < vmsrc/apple/cmdjit.pla > vmsrc/apple/cmdjit.a
|
||||
./$(PLASM) -AOW vmsrc/apple/cmdjit.pla
|
||||
acme --setpc 8192 -o $(CMDJIT) vmsrc/apple/cmdjitstub.s
|
||||
|
||||
$(SOSCMD): vmsrc/apple/soscmd.pla $(PLVM03) $(PLASM)
|
||||
./$(PLASM) -AMOW < vmsrc/apple/soscmd.pla > vmsrc/apple/soscmd.a
|
||||
./$(PLASM) -AMOW vmsrc/apple/soscmd.pla
|
||||
acme --setpc 4094 -o $(SOSCMD) vmsrc/apple/soscmd.a
|
||||
|
||||
$(SOSCMDJIT): vmsrc/apple/soscmdjit.pla libsrc/jitcore.pla $(PLVMJIT03) $(PLASM)
|
||||
./$(PLASM) -AMOW < vmsrc/apple/soscmdjit.pla > vmsrc/apple/soscmdjit.a
|
||||
./$(PLASM) -AMOW vmsrc/apple/soscmdjit.pla
|
||||
acme --setpc 4094 -o $(SOSCMDJIT) vmsrc/apple/soscmdjit.a
|
||||
|
||||
$(PLVM02): vmsrc/apple/plvm02.s
|
||||
@@ -208,13 +208,13 @@ $(PLVM802): vmsrc/apple/plvm802.s
|
||||
acme -o $(PLVM802) -l vmsrc/apple/plvm802.sym vmsrc/apple/plvm802.s
|
||||
|
||||
vmsrc/apple/sossys.a: vmsrc/apple/sossys.pla $(PLASM)
|
||||
./$(PLASM) -AOW < vmsrc/apple/sossys.pla > vmsrc/apple/sossys.a
|
||||
./$(PLASM) -AOW vmsrc/apple/sossys.pla
|
||||
|
||||
$(PLVM03): vmsrc/apple/plvm03.s vmsrc/apple/sossys.a
|
||||
acme -o $(PLVM03) -l vmsrc/apple/plvm03.sym vmsrc/apple/plvm03.s
|
||||
|
||||
vmsrc/apple/sossysjit.a: vmsrc/apple/sossysjit.pla $(PLASM)
|
||||
./$(PLASM) -AOW < vmsrc/apple/sossysjit.pla > vmsrc/apple/sossysjit.a
|
||||
./$(PLASM) -AOW vmsrc/apple/sossysjit.pla
|
||||
|
||||
$(PLVMJIT03): vmsrc/apple/plvmjit03.s vmsrc/apple/sossysjit.a
|
||||
acme -o $(PLVMJIT03) -l vmsrc/apple/plvmjit03.sym vmsrc/apple/plvmjit03.s
|
||||
@@ -222,309 +222,309 @@ $(PLVMJIT03): vmsrc/apple/plvmjit03.s vmsrc/apple/sossysjit.a
|
||||
# Sample code
|
||||
#
|
||||
test: samplesrc/test.pla samplesrc/testlib.pla $(PLVM) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/test.pla > samplesrc/test.a
|
||||
./$(PLASM) -AMOW samplesrc/test.pla
|
||||
acme --setpc 4094 -o $(TEST) samplesrc/test.a
|
||||
./$(PLASM) -AMOW < samplesrc/testlib.pla > samplesrc/testlib.a
|
||||
./$(PLASM) -AMOW samplesrc/testlib.pla
|
||||
acme --setpc 4094 -o $(TESTLIB) samplesrc/testlib.a
|
||||
./$(PLVM) TEST
|
||||
|
||||
$(ED): toolsrc/ed.pla $(PLVM02) $(PLASM) toolsrc/ed.pla
|
||||
./$(PLASM) -AMOW < toolsrc/ed.pla > toolsrc/ed.a
|
||||
./$(PLASM) -AMOW toolsrc/ed.pla
|
||||
acme --setpc 4094 -o $(ED) toolsrc/ed.a
|
||||
|
||||
$(MATCHFILES): libsrc/apple/matchfiles.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/matchfiles.pla > libsrc/apple/matchfiles.a
|
||||
./$(PLASM) -AMOW libsrc/apple/matchfiles.pla
|
||||
acme --setpc 4094 -o $(MATCHFILES) libsrc/apple/matchfiles.a
|
||||
|
||||
$(ARGS): libsrc/args.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/args.pla > libsrc/args.a
|
||||
./$(PLASM) -AMOW libsrc/args.pla
|
||||
acme --setpc 4094 -o $(ARGS) libsrc/args.a
|
||||
|
||||
$(MEMMGR): libsrc/memmgr.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/memmgr.pla > libsrc/memmgr.a
|
||||
./$(PLASM) -AMOW libsrc/memmgr.pla
|
||||
acme --setpc 4094 -o $(MEMMGR) libsrc/memmgr.a
|
||||
|
||||
$(MEMTEST): samplesrc/memtest.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/memtest.pla > samplesrc/memtest.a
|
||||
./$(PLASM) -AMOW samplesrc/memtest.pla
|
||||
acme --setpc 4094 -o $(MEMTEST) samplesrc/memtest.a
|
||||
|
||||
$(FIBER): libsrc/fiber.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/fiber.pla > libsrc/fiber.a
|
||||
./$(PLASM) -AMOW libsrc/fiber.pla
|
||||
acme --setpc 4094 -o $(FIBER) libsrc/fiber.a
|
||||
|
||||
$(LINES): libsrc/lines.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/lines.pla > libsrc/lines.a
|
||||
./$(PLASM) -AMOW libsrc/lines.pla
|
||||
acme --setpc 4094 -o $(LINES) libsrc/lines.a
|
||||
|
||||
$(FIBERTEST): samplesrc/fibertest.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/fibertest.pla > samplesrc/fibertest.a
|
||||
./$(PLASM) -AMOW samplesrc/fibertest.pla
|
||||
acme --setpc 4094 -o $(FIBERTEST) samplesrc/fibertest.a
|
||||
|
||||
$(LONGJMP): libsrc/longjmp.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/longjmp.pla > libsrc/longjmp.a
|
||||
./$(PLASM) -AMOW libsrc/longjmp.pla
|
||||
acme --setpc 4094 -o $(LONGJMP) libsrc/longjmp.a
|
||||
|
||||
$(SFM): samplesrc/sfm.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/sfm.pla > samplesrc/sfm.a
|
||||
./$(PLASM) -AMOW samplesrc/sfm.pla
|
||||
acme --setpc 4094 -o $(SFM) samplesrc/sfm.a
|
||||
|
||||
$(SFMSPRT): samplesrc/sfmsprt.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/sfmsprt.pla > samplesrc/sfmsprt.a
|
||||
./$(PLASM) -AMOW samplesrc/sfmsprt.pla
|
||||
acme --setpc 4094 -o $(SFMSPRT) samplesrc/sfmsprt.a
|
||||
|
||||
$(ROGUE): samplesrc/rogue.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/rogue.pla > samplesrc/rogue.a
|
||||
./$(PLASM) -AMOW samplesrc/rogue.pla
|
||||
acme --setpc 4094 -o $(ROGUE) samplesrc/rogue.a
|
||||
|
||||
$(ROGUECOMBAT): samplesrc/rogue.combat.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/rogue.combat.pla > samplesrc/rogue.combat.a
|
||||
./$(PLASM) -AMOW samplesrc/rogue.combat.pla
|
||||
acme --setpc 4094 -o $(ROGUECOMBAT) samplesrc/rogue.combat.a
|
||||
|
||||
$(ROGUEMAP): samplesrc/rogue.map.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/rogue.map.pla > samplesrc/rogue.map.a
|
||||
./$(PLASM) -AMOW samplesrc/rogue.map.pla
|
||||
acme --setpc 4094 -o $(ROGUEMAP) samplesrc/rogue.map.a
|
||||
|
||||
hello: samplesrc/hello.pla $(PLVM) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/hello.pla > samplesrc/hello.a
|
||||
./$(PLASM) -AMOW samplesrc/hello.pla
|
||||
acme --setpc 4094 -o $(HELLO) samplesrc/hello.a
|
||||
./$(PLVM) HELLO
|
||||
|
||||
$(CONIOTST): samplesrc/coniotst.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/coniotst.pla > samplesrc/coniotst.a
|
||||
./$(PLASM) -AMOW samplesrc/coniotst.pla
|
||||
acme --setpc 4094 -o $(CONIOTST) samplesrc/coniotst.a
|
||||
|
||||
$(ROD): samplesrc/rod.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/rod.pla > samplesrc/rod.a
|
||||
./$(PLASM) -AMOW samplesrc/rod.pla
|
||||
acme --setpc 4094 -o $(ROD) samplesrc/rod.a
|
||||
|
||||
$(SIEVE): samplesrc/sieve.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMW < samplesrc/sieve.pla > samplesrc/sieve.a
|
||||
./$(PLASM) -AMW samplesrc/sieve.pla
|
||||
acme --setpc 4094 -o $(SIEVE) samplesrc/sieve.a
|
||||
|
||||
$(PRIMEGAP): samplesrc/primegap.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMW < samplesrc/primegap.pla > samplesrc/primegap.a
|
||||
./$(PLASM) -AMW samplesrc/primegap.pla
|
||||
acme --setpc 4094 -o $(PRIMEGAP) samplesrc/primegap.a
|
||||
|
||||
$(INT32): libsrc/int32.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/int32.pla > libsrc/int32.a
|
||||
./$(PLASM) -AMOW libsrc/int32.pla
|
||||
acme --setpc 4094 -o $(INT32) libsrc/int32.a
|
||||
|
||||
$(INT32TEST): samplesrc/int32test.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/int32test.pla > samplesrc/int32test.a
|
||||
./$(PLASM) -AMOW samplesrc/int32test.pla
|
||||
acme --setpc 4094 -o $(INT32TEST) samplesrc/int32test.a
|
||||
|
||||
$(SANE): libsrc/sane.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/sane.pla > libsrc/sane.a
|
||||
./$(PLASM) -AMOW libsrc/sane.pla
|
||||
acme --setpc 4094 -o $(SANE) libsrc/sane.a
|
||||
|
||||
$(FPSTR): libsrc/fpstr.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/fpstr.pla > libsrc/fpstr.a
|
||||
./$(PLASM) -AMOW libsrc/fpstr.pla
|
||||
acme --setpc 4094 -o $(FPSTR) libsrc/fpstr.a
|
||||
|
||||
$(FPU): libsrc/fpu.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/fpu.pla > libsrc/fpu.a
|
||||
./$(PLASM) -AMOW libsrc/fpu.pla
|
||||
acme --setpc 4094 -o $(FPU) libsrc/fpu.a
|
||||
|
||||
$(SANITY): samplesrc/sanity.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/sanity.pla > samplesrc/sanity.a
|
||||
./$(PLASM) -AMOW samplesrc/sanity.pla
|
||||
acme --setpc 4094 -o $(SANITY) samplesrc/sanity.a
|
||||
|
||||
$(LZ4): libsrc/lz4.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/lz4.pla > libsrc/lz4.a
|
||||
./$(PLASM) -AMOW libsrc/lz4.pla
|
||||
acme --setpc 4094 -o $(LZ4) libsrc/lz4.a
|
||||
|
||||
$(LZ4CAT): samplesrc/lz4cat.pla inc/lz4.plh $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/lz4cat.pla > samplesrc/lz4cat.a
|
||||
./$(PLASM) -AMOW samplesrc/lz4cat.pla
|
||||
acme --setpc 4094 -o $(LZ4CAT) samplesrc/lz4cat.a
|
||||
|
||||
$(RPNCALC): samplesrc/rpncalc.pla libsrc/fpu.pla inc/fpu.plh libsrc/fpstr.pla inc/fpstr.plh inc/conio.plh $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/rpncalc.pla > samplesrc/rpncalc.a
|
||||
./$(PLASM) -AMOW samplesrc/rpncalc.pla
|
||||
acme --setpc 4094 -o $(RPNCALC) samplesrc/rpncalc.a
|
||||
|
||||
$(ETHERIP): libsrc/etherip.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/etherip.pla > libsrc/etherip.a
|
||||
./$(PLASM) -AMOW libsrc/etherip.pla
|
||||
acme --setpc 4094 -o $(ETHERIP) libsrc/etherip.a
|
||||
|
||||
$(INET): libsrc/inet.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/inet.pla > libsrc/inet.a
|
||||
./$(PLASM) -AMOW libsrc/inet.pla
|
||||
acme --setpc 4094 -o $(INET) libsrc/inet.a
|
||||
|
||||
$(DHCP): libsrc/dhcp.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/dhcp.pla > libsrc/dhcp.a
|
||||
./$(PLASM) -AMOW libsrc/dhcp.pla
|
||||
acme --setpc 4094 -o $(DHCP) libsrc/dhcp.a
|
||||
|
||||
$(HTTPD): samplesrc/httpd.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/httpd.pla > samplesrc/httpd.a
|
||||
./$(PLASM) -AMOW samplesrc/httpd.pla
|
||||
acme --setpc 4094 -o $(HTTPD) samplesrc/httpd.a
|
||||
|
||||
$(TFTPD): utilsrc/tftpd.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/tftpd.pla > utilsrc/tftpd.a
|
||||
./$(PLASM) -AMOW utilsrc/tftpd.pla
|
||||
acme --setpc 4094 -o $(TFTPD) utilsrc/tftpd.a
|
||||
|
||||
$(MOUSE): libsrc/apple/mouse.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/mouse.pla > libsrc/apple/mouse.a
|
||||
./$(PLASM) -AMOW libsrc/apple/mouse.pla
|
||||
acme --setpc 4094 -o $(MOUSE) libsrc/apple/mouse.a
|
||||
|
||||
$(UTHERNET): libsrc/apple/uthernet.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/uthernet.pla > libsrc/apple/uthernet.a
|
||||
./$(PLASM) -AMOW libsrc/apple/uthernet.pla
|
||||
acme --setpc 4094 -o $(UTHERNET) libsrc/apple/uthernet.a
|
||||
|
||||
$(UTHERNET2): libsrc/apple/uthernet2.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/uthernet2.pla > libsrc/apple/uthernet2.a
|
||||
./$(PLASM) -AMOW libsrc/apple/uthernet2.pla
|
||||
acme --setpc 4094 -o $(UTHERNET2) libsrc/apple/uthernet2.a
|
||||
|
||||
$(FILEIO_APL): libsrc/apple/fileio.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/fileio.pla > libsrc/apple/fileio.a
|
||||
./$(PLASM) -AMOW libsrc/apple/fileio.pla
|
||||
acme --setpc 4094 -o $(FILEIO_APL) libsrc/apple/fileio.a
|
||||
|
||||
$(CONIO_APL): libsrc/apple/conio.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/conio.pla > libsrc/apple/conio.a
|
||||
./$(PLASM) -AMOW libsrc/apple/conio.pla
|
||||
acme --setpc 4094 -o $(CONIO_APL) libsrc/apple/conio.a
|
||||
|
||||
$(FILEIO_C64): libsrc/c64/fileio.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/c64/fileio.pla > libsrc/c64/fileio.a
|
||||
./$(PLASM) -AMOW libsrc/c64/fileio.pla
|
||||
acme --setpc 4094 -o $(FILEIO_C64) libsrc/c64/fileio.a
|
||||
|
||||
$(CONIO_C64): libsrc/c64/conio.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/c64/conio.pla > libsrc/c64/conio.a
|
||||
./$(PLASM) -AMOW libsrc/c64/conio.pla
|
||||
acme --setpc 4094 -o $(CONIO_C64) libsrc/c64/conio.a
|
||||
|
||||
$(SNDSEQ): libsrc/apple/sndseq.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/sndseq.pla > libsrc/apple/sndseq.a
|
||||
./$(PLASM) -AMOW libsrc/apple/sndseq.pla
|
||||
acme --setpc 4094 -o $(SNDSEQ) libsrc/apple/sndseq.a
|
||||
|
||||
$(PLAYSEQ): samplesrc/playseq.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/playseq.pla > samplesrc/playseq.a
|
||||
./$(PLASM) -AMOW samplesrc/playseq.pla
|
||||
acme --setpc 4094 -o $(PLAYSEQ) samplesrc/playseq.a
|
||||
|
||||
$(GRAFIX): libsrc/apple/grafix.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/grafix.pla > libsrc/apple/grafix.a
|
||||
./$(PLASM) -AMOW libsrc/apple/grafix.pla
|
||||
acme --setpc 4094 -o $(GRAFIX) libsrc/apple/grafix.a
|
||||
|
||||
$(GFXDEMO): samplesrc/gfxdemo.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/gfxdemo.pla > samplesrc/gfxdemo.a
|
||||
./$(PLASM) -AMOW samplesrc/gfxdemo.pla
|
||||
acme --setpc 4094 -o $(GFXDEMO) samplesrc/gfxdemo.a
|
||||
|
||||
$(FATCAT): samplesrc/fatcat.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/fatcat.pla > samplesrc/fatcat.a
|
||||
./$(PLASM) -AMOW samplesrc/fatcat.pla
|
||||
acme --setpc 4094 -o $(FATCAT) samplesrc/fatcat.a
|
||||
|
||||
$(FATGET): samplesrc/fatget.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/fatget.pla > samplesrc/fatget.a
|
||||
./$(PLASM) -AMOW samplesrc/fatget.pla
|
||||
acme --setpc 4094 -o $(FATGET) samplesrc/fatget.a
|
||||
|
||||
$(FATPUT): samplesrc/fatput.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/fatput.pla > samplesrc/fatput.a
|
||||
./$(PLASM) -AMOW samplesrc/fatput.pla
|
||||
acme --setpc 4094 -o $(FATPUT) samplesrc/fatput.a
|
||||
|
||||
$(FATWDSK): samplesrc/fatwritedsk.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/fatwritedsk.pla > samplesrc/fatwritedsk.a
|
||||
./$(PLASM) -AMOW samplesrc/fatwritedsk.pla
|
||||
acme --setpc 4094 -o $(FATWDSK) samplesrc/fatwritedsk.a
|
||||
|
||||
$(FATRDSK): samplesrc/fatreaddsk.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/fatreaddsk.pla > samplesrc/fatreaddsk.a
|
||||
./$(PLASM) -AMOW samplesrc/fatreaddsk.pla
|
||||
acme --setpc 4094 -o $(FATRDSK) samplesrc/fatreaddsk.a
|
||||
|
||||
$(SDFAT): libsrc/apple/sdfat.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/sdfat.pla > libsrc/apple/sdfat.a
|
||||
./$(PLASM) -AMOW libsrc/apple/sdfat.pla
|
||||
acme --setpc 4094 -o $(SDFAT) libsrc/apple/sdfat.a
|
||||
|
||||
$(SPIPORT): libsrc/apple/spiport.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/spiport.pla > libsrc/apple/spiport.a
|
||||
./$(PLASM) -AMOW libsrc/apple/spiport.pla
|
||||
acme --setpc 4094 -o $(SPIPORT) libsrc/apple/spiport.a
|
||||
|
||||
$(JOYBUZZ): libsrc/apple/joybuzz.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/joybuzz.pla > libsrc/apple/joybuzz.a
|
||||
./$(PLASM) -AMOW libsrc/apple/joybuzz.pla
|
||||
acme --setpc 4094 -o $(JOYBUZZ) libsrc/apple/joybuzz.a
|
||||
|
||||
$(PORTIO): libsrc/apple/portio.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/portio.pla > libsrc/apple/portio.a
|
||||
./$(PLASM) -AMOW libsrc/apple/portio.pla
|
||||
acme --setpc 4094 -o $(PORTIO) libsrc/apple/portio.a
|
||||
|
||||
$(HGRLIB): libsrc/apple/hgrlib.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/hgrlib.pla > libsrc/apple/hgrlib.a
|
||||
./$(PLASM) -AMOW libsrc/apple/hgrlib.pla
|
||||
acme --setpc 4094 -o $(HGRLIB) libsrc/apple/hgrlib.a
|
||||
|
||||
$(GRLIB): libsrc/apple/grlib.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/grlib.pla > libsrc/apple/grlib.a
|
||||
./$(PLASM) -AMOW libsrc/apple/grlib.pla
|
||||
acme --setpc 4094 -o $(GRLIB) libsrc/apple/grlib.a
|
||||
|
||||
$(DGRLIB): libsrc/apple/dgrlib.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/dgrlib.pla > libsrc/apple/dgrlib.a
|
||||
./$(PLASM) -AMOW libsrc/apple/dgrlib.pla
|
||||
acme --setpc 4094 -o $(DGRLIB) libsrc/apple/dgrlib.a
|
||||
|
||||
$(TILETEST): samplesrc/tiletest.pla $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/tiletest.pla > samplesrc/tiletest.a
|
||||
./$(PLASM) -AMOW samplesrc/tiletest.pla
|
||||
acme --setpc 4094 -o $(TILETEST) samplesrc/tiletest.a
|
||||
|
||||
$(HGRTILE): libsrc/apple/hgrtile.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/hgrtile.pla > libsrc/apple/hgrtile.a
|
||||
./$(PLASM) -AMOW libsrc/apple/hgrtile.pla
|
||||
acme --setpc 4094 -o $(HGRTILE) libsrc/apple/hgrtile.a
|
||||
|
||||
$(HGRFONT): libsrc/apple/hgrfont.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/hgrfont.pla > libsrc/apple/hgrfont.a
|
||||
./$(PLASM) -AMOW libsrc/apple/hgrfont.pla
|
||||
acme --setpc 4094 -o $(HGRFONT) libsrc/apple/hgrfont.a
|
||||
|
||||
$(HGRSPRITE): libsrc/apple/hgrsprite.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/hgrsprite.pla > libsrc/apple/hgrsprite.a
|
||||
./$(PLASM) -AMOW libsrc/apple/hgrsprite.pla
|
||||
acme --setpc 4094 -o $(HGRSPRITE) libsrc/apple/hgrsprite.a
|
||||
|
||||
$(HGRTEST): samplesrc/hgrtest.pla $(HGRLIB) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/hgrtest.pla > samplesrc/hgrtest.a
|
||||
./$(PLASM) -AMOW samplesrc/hgrtest.pla
|
||||
acme --setpc 4094 -o $(HGRTEST) samplesrc/hgrtest.a
|
||||
|
||||
$(GRTEST): samplesrc/grtest.pla $(GRLIB) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/grtest.pla > samplesrc/grtest.a
|
||||
./$(PLASM) -AMOW samplesrc/grtest.pla
|
||||
acme --setpc 4094 -o $(GRTEST) samplesrc/grtest.a
|
||||
|
||||
$(DGRTEST): samplesrc/dgrtest.pla $(DGRLIB) $(PLASM)
|
||||
./$(PLASM) -AMOW < samplesrc/dgrtest.pla > samplesrc/dgrtest.a
|
||||
./$(PLASM) -AMOW samplesrc/dgrtest.pla
|
||||
acme --setpc 4094 -o $(DGRTEST) samplesrc/dgrtest.a
|
||||
|
||||
$(MON): utilsrc/apple/mon.pla $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/mon.pla > utilsrc/apple/mon.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/mon.pla
|
||||
acme --setpc 4094 -o $(MON) utilsrc/apple/mon.a
|
||||
|
||||
$(COPY): utilsrc/apple/copy.pla $(MATCHFILES) $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/copy.pla > utilsrc/apple/copy.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/copy.pla
|
||||
acme --setpc 4094 -o $(COPY) utilsrc/apple/copy.a
|
||||
|
||||
$(DEL): utilsrc/apple/del.pla $(MATCHFILES) $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/del.pla > utilsrc/apple/del.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/del.pla
|
||||
acme --setpc 4094 -o $(DEL) utilsrc/apple/del.a
|
||||
|
||||
$(REN): utilsrc/apple/ren.pla $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/ren.pla > utilsrc/apple/ren.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/ren.pla
|
||||
acme --setpc 4094 -o $(REN) utilsrc/apple/ren.a
|
||||
|
||||
$(CAT): utilsrc/apple/cat.pla $(MATCHFILES) $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/cat.pla > utilsrc/apple/cat.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/cat.pla
|
||||
acme --setpc 4094 -o $(CAT) utilsrc/apple/cat.a
|
||||
|
||||
$(NEWDIR): utilsrc/apple/newdir.pla $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/newdir.pla > utilsrc/apple/newdir.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/newdir.pla
|
||||
acme --setpc 4094 -o $(NEWDIR) utilsrc/apple/newdir.a
|
||||
|
||||
$(TYPE): utilsrc/apple/type.pla $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/type.pla > utilsrc/apple/type.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/type.pla
|
||||
acme --setpc 4094 -o $(TYPE) utilsrc/apple/type.a
|
||||
|
||||
$(SOS): utilsrc/apple/sos.pla $(PLVM03) $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/sos.pla > utilsrc/apple/sos.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/sos.pla
|
||||
acme --setpc 4094 -o $(SOS) utilsrc/apple/sos.a
|
||||
|
||||
$(ZIPCHIP): utilsrc/apple/zipchip.pla $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/zipchip.pla > utilsrc/apple/zipchip.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/zipchip.pla
|
||||
acme --setpc 4094 -o $(ZIPCHIP) utilsrc/apple/zipchip.a
|
||||
|
||||
$(JIT): libsrc/apple/jit.pla libsrc/jitcore.pla $(PLVMJIT) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/jit.pla > libsrc/apple/jit.a
|
||||
./$(PLASM) -AMOW libsrc/apple/jit.pla
|
||||
acme --setpc 4094 -o $(JIT) libsrc/apple/jit.a
|
||||
|
||||
$(JIT16): libsrc/apple/jit16.pla libsrc/jit16core.pla $(PLVMJIT) $(PLASM)
|
||||
./$(PLASM) -AMOW < libsrc/apple/jit16.pla > libsrc/apple/jit16.a
|
||||
./$(PLASM) -AMOW libsrc/apple/jit16.pla
|
||||
acme --setpc 4094 -o $(JIT16) libsrc/apple/jit16.a
|
||||
|
||||
$(JITUNE): utilsrc/apple/jitune.pla $(PLVMJIT) $(PLASM)
|
||||
./$(PLASM) -AMOW < utilsrc/apple/jitune.pla > utilsrc/apple/jitune.a
|
||||
./$(PLASM) -AMOW utilsrc/apple/jitune.pla
|
||||
acme --setpc 4094 -o $(JITUNE) utilsrc/apple/jitune.a
|
||||
|
@@ -198,6 +198,7 @@ cp samplesrc/gfxdemo.pla prodos/bld/samples/GFXDEMO.PLA.TXT
|
||||
cp samplesrc/lz4cat.pla prodos/bld/samples/Z4CAT.PLA.TXT
|
||||
cp samplesrc/sfm.pla prodos/bld/samples/SFM.PLA.TXT
|
||||
cp samplesrc/sfmsprt.pla prodos/bld/samples/SFMSPRT.PLA.TXT
|
||||
cp samplesrc/fppow.pla prodos/bld/samples/FPPOW.PLA.TXT
|
||||
cp utilsrc/apple/mon.pla prodos/bld/samples/MON.PLA.TXT
|
||||
cp utilsrc/apple/zipchip.pla prodos/bld/samples/ZIPCHIP.PLA.TXT
|
||||
|
||||
|
@@ -19,6 +19,5 @@ fbrInit(4)
|
||||
fbrStart(@fbrTest, 3)
|
||||
fbrStart(@fbrTest, 2)
|
||||
fbrStart(@fbrTest, 1)
|
||||
fbrYield; fbrYield; fbrYield; fbrYield
|
||||
|
||||
while fbrCount > 1; fbrYield; loop
|
||||
done
|
||||
|
44
src/samplesrc/fppow.pla
Normal file
44
src/samplesrc/fppow.pla
Normal file
@@ -0,0 +1,44 @@
|
||||
include "inc/cmdsys.plh"
|
||||
include "inc/sane.plh"
|
||||
include "inc/fpstr.plh"
|
||||
|
||||
var xT[t_extended]
|
||||
char sT[32] // extra space
|
||||
byte str = "123456789.123456789"
|
||||
byte i
|
||||
|
||||
// mul div
|
||||
def test(iM, iD)#0
|
||||
sane:saveZP()
|
||||
sane:op2FP(FFINT|FOMUL, @xT, @iM)
|
||||
sane:op2FP(FFINT|FODIV, @xT, @iD)
|
||||
sane:restoreZP(0)
|
||||
|
||||
putc('x')
|
||||
if iM<10; putc(' '); fin
|
||||
puti(iM); putc('/'); puti(iD)
|
||||
if iD<10; putc(' '); fin
|
||||
puts("=>")
|
||||
ext2str(@xT,@sT,9,9,FPSTR_FLEX|FPSTR_FIXED) // fixed
|
||||
puts(@sT); putc('[')
|
||||
puti( sT); putc(']')
|
||||
putln
|
||||
end
|
||||
|
||||
puts("Float Format Text\n\n")
|
||||
sane:initFP()
|
||||
strcpy(@sT,@str); str2ext(@sT,@xT)
|
||||
puts("begin: ")
|
||||
puts(@sT); putc('[')
|
||||
puti( sT); putc(']')
|
||||
putln
|
||||
test(1,1)
|
||||
for i=1 to 10
|
||||
test(32000,1)
|
||||
next
|
||||
strcpy(@sT,@str); str2ext(@sT,@xT)
|
||||
for i=1 to 10
|
||||
test(1,2)
|
||||
next
|
||||
puts("Done\n")
|
||||
done
|
@@ -5,7 +5,8 @@ include "inc/cmdsys.plh"
|
||||
include "inc/fpstr.plh"
|
||||
include "inc/fpu.plh"
|
||||
include "inc/conio.plh"
|
||||
const displayWidth = 16
|
||||
const displayWidth = 15
|
||||
const displayDefFix = 6
|
||||
const inputLen = displayWidth+1
|
||||
const ZEROSTR = $3001
|
||||
//
|
||||
@@ -36,8 +37,8 @@ byte inputStr[32] = ""
|
||||
//
|
||||
// Display format state
|
||||
//
|
||||
byte displayFix = 6
|
||||
byte displayInt = displayWidth - 7 // - displayFix - 1
|
||||
byte displayFix = displayDefFix
|
||||
byte displayInt = displayWidth - displayDefFix - 2
|
||||
//
|
||||
// Store/load memory
|
||||
//
|
||||
@@ -152,9 +153,10 @@ def showStack#0
|
||||
byte strFP[displayWidth+1]
|
||||
|
||||
for s = 0 to 3
|
||||
fpu:storStr(@strFP, displayInt, displayFix, FPSTR_FIXED, s)
|
||||
fpu:storStr(@strFP, displayInt, displayFix, FPSTR_FIXED|FPSTR_FLEX, s)
|
||||
conio:gotoxy(4, 5 - s)
|
||||
repc(displayWidth - strFP - 1, ' ')
|
||||
//repc(displayWidth - strFP - 1, ' ')
|
||||
repc(displayWidth - strFP, ' ')
|
||||
puts(@strFP)
|
||||
next
|
||||
end
|
||||
@@ -163,7 +165,7 @@ def showMem#0
|
||||
byte strFP[displayWidth+1]
|
||||
|
||||
for m = 0 to 9
|
||||
ext2str(@memory[m*t_fpureg], @strFP, displayInt, displayFix, FPSTR_FIXED)
|
||||
ext2str(@memory[m*t_fpureg], @strFP, displayInt, displayFix, FPSTR_FIXED|FPSTR_FLEX)
|
||||
conio:gotoxy(23, 2 + m)
|
||||
repc(displayWidth - strFP - 1, ' ')
|
||||
puts(@strFP)
|
||||
@@ -252,7 +254,7 @@ def delKey(pkey)#0
|
||||
showInput
|
||||
end
|
||||
def dropKey(pkey)#0
|
||||
fpu:pullStr(@inputStr, displayInt, displayFix, FPSTR_STRIP|FPSTR_FLOAT)
|
||||
fpu:pullStr(@inputStr, displayInt, displayFix, FPSTR_STRIP|FPSTR_FLOAT|FPSTR_FLEX)
|
||||
if inputStr.1 == ' '
|
||||
inputStr--
|
||||
memcpy(@inputStr.1, @inputStr.2, inputStr)
|
||||
@@ -261,7 +263,7 @@ def dropKey(pkey)#0
|
||||
showStack
|
||||
end
|
||||
def copyKey(pkey)#0
|
||||
fpu:storStr(@inputStr, displayInt, displayFix, FPSTR_STRIP|FPSTR_FLOAT, X_REG)
|
||||
fpu:storStr(@inputStr, displayInt, displayFix, FPSTR_STRIP|FPSTR_FLOAT|FPSTR_FLEX, X_REG)
|
||||
if inputStr.1 == ' '
|
||||
inputStr--
|
||||
memcpy(@inputStr.1, @inputStr.2, inputStr)
|
||||
@@ -380,7 +382,7 @@ def elemsKey(pkey)#0
|
||||
is 'L'
|
||||
fpu:log2X()
|
||||
break
|
||||
is 'E'
|
||||
is 'P'
|
||||
fpu:powEX()
|
||||
break
|
||||
is 'N'
|
||||
@@ -403,7 +405,7 @@ def cmdKey(pkey)#0
|
||||
d = toupper(getc) - '0'
|
||||
if d >= 1 and d <= 9
|
||||
displayFix = d
|
||||
displayInt = displayWidth - displayFix - 1
|
||||
displayInt = displayWidth - displayFix - 2
|
||||
elsif d == 'Q' - '0'
|
||||
quit = TRUE
|
||||
fin
|
||||
@@ -422,7 +424,7 @@ end
|
||||
def inputKey#0
|
||||
byte inkey
|
||||
word pkeys
|
||||
|
||||
|
||||
conio:echo(ECHO_OFF)
|
||||
while not quit
|
||||
pkeys = @keypad
|
||||
@@ -450,7 +452,7 @@ initInput
|
||||
showStack
|
||||
showMem
|
||||
showInput
|
||||
showStatus("Version 0.6")
|
||||
showStatus("Version 0.7")
|
||||
inputKey
|
||||
conio:gotoxy(0, 22)
|
||||
done
|
||||
|
@@ -57,5 +57,6 @@ echo "BLD/SAMPLES/GFXDEMO.PLA"; atftp $1 --put -l samplesrc/gfxdemo.pla -r $
|
||||
echo "BLD/SAMPLES/LZ4CAT.PLA"; atftp $1 --put -l samplesrc/lz4cat.pla -r $2/BLD/SAMPLES/LZ4CAT.PLA#040000
|
||||
echo "BLD/SAMPLES/SFM.PLA"; atftp $1 --put -l samplesrc/sfm.pla -r $2/BLD/SAMPLES/SFM.PLA#040000
|
||||
echo "BLD/SAMPLES/SFMSPRT.PLA"; atftp $1 --put -l samplesrc/sfmsprt.pla -r $2/BLD/SAMPLES/SFMSPRT.PLA#040000
|
||||
echo "BLD/SAMPLES/FPPOW.PLA"; atftp $1 --put -l samplesrc/fppow.pla -r $2/BLD/SAMPLES/FPPOW.PLA#040000
|
||||
echo "BLD/SAMPLES/MON.PLA"; atftp $1 --put -l utilsrc/apple/mon.pla -r $2/BLD/SAMPLES/MON.PLA#040000
|
||||
|
||||
|
@@ -173,7 +173,7 @@ int idglobal_add(char *name, int len, int type, int size)
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t\t\t\t\t; %s -> X%03d\n", &idglobal_name[globals][1], externs);
|
||||
fprintf(outputfile, "\t\t\t\t\t; %s -> X%03d\n", &idglobal_name[globals][1], externs);
|
||||
idglobal_tag[globals++] = externs++;
|
||||
}
|
||||
return (1);
|
||||
@@ -219,7 +219,7 @@ int idfunc_add(char *name, int len, int type, int tag)
|
||||
idglobal_type[globals] = type;
|
||||
idglobal_tag[globals++] = tag;
|
||||
if (type & EXTERN_TYPE)
|
||||
printf("\t\t\t\t\t; %s -> X%03d\n", &idglobal_name[globals - 1][1], tag);
|
||||
fprintf(outputfile, "\t\t\t\t\t; %s -> X%03d\n", &idglobal_name[globals - 1][1], tag);
|
||||
return (1);
|
||||
}
|
||||
int idfunc_set(char *name, int len, int type, int tag)
|
||||
@@ -343,11 +343,11 @@ void emit_dci(char *str, int len)
|
||||
{
|
||||
if (len--)
|
||||
{
|
||||
printf("\t; DCI STRING: %s\n", supper(str));
|
||||
printf("\t%s\t$%02X", DB, toupper(*str++) | (len ? 0x80 : 0x00));
|
||||
fprintf(outputfile, "\t; DCI STRING: %s\n", supper(str));
|
||||
fprintf(outputfile, "\t%s\t$%02X", DB, toupper(*str++) | (len ? 0x80 : 0x00));
|
||||
while (len--)
|
||||
printf(",$%02X", toupper(*str++) | (len ? 0x80 : 0x00));
|
||||
printf("\n");
|
||||
fprintf(outputfile, ",$%02X", toupper(*str++) | (len ? 0x80 : 0x00));
|
||||
fprintf(outputfile, "\n");
|
||||
}
|
||||
}
|
||||
void emit_flags(int flags)
|
||||
@@ -365,22 +365,22 @@ void emit_header(void)
|
||||
int i;
|
||||
|
||||
if (outflags & ACME)
|
||||
printf("; ACME COMPATIBLE OUTPUT\n");
|
||||
fprintf(outputfile, "; ACME COMPATIBLE OUTPUT\n");
|
||||
else
|
||||
printf("; CA65 COMPATIBLE OUTPUT\n");
|
||||
fprintf(outputfile, "; CA65 COMPATIBLE OUTPUT\n");
|
||||
if (outflags & MODULE)
|
||||
{
|
||||
printf("\t%s\t_SEGEND-_SEGBEGIN\t; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT\n", DW);
|
||||
printf("_SEGBEGIN%c\n", LBL);
|
||||
printf("\t%s\t$6502\t\t\t; MAGIC #\n", DW);
|
||||
printf("\t%s\t_SYSFLAGS\t\t\t; SYSTEM FLAGS\n", DW);
|
||||
printf("\t%s\t_SUBSEG\t\t\t; BYTECODE SUB-SEGMENT\n", DW);
|
||||
printf("\t%s\t_DEFCNT\t\t\t; BYTECODE DEF COUNT\n", DW);
|
||||
printf("\t%s\t_INIT\t\t\t; MODULE INITIALIZATION ROUTINE\n", DW);
|
||||
fprintf(outputfile, "\t%s\t_SEGEND-_SEGBEGIN\t; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT\n", DW);
|
||||
fprintf(outputfile, "_SEGBEGIN%c\n", LBL);
|
||||
fprintf(outputfile, "\t%s\t$6502\t\t\t; MAGIC #\n", DW);
|
||||
fprintf(outputfile, "\t%s\t_SYSFLAGS\t\t\t; SYSTEM FLAGS\n", DW);
|
||||
fprintf(outputfile, "\t%s\t_SUBSEG\t\t\t; BYTECODE SUB-SEGMENT\n", DW);
|
||||
fprintf(outputfile, "\t%s\t_DEFCNT\t\t\t; BYTECODE DEF COUNT\n", DW);
|
||||
fprintf(outputfile, "\t%s\t_INIT\t\t\t; MODULE INITIALIZATION ROUTINE\n", DW);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\tJMP\t_INIT\t\t\t; MODULE INITIALIZATION ROUTINE\n");
|
||||
fprintf(outputfile, "\tJMP\t_INIT\t\t\t; MODULE INITIALIZATION ROUTINE\n");
|
||||
}
|
||||
/*
|
||||
* Init free op sequence table
|
||||
@@ -393,7 +393,7 @@ void emit_rld(void)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
printf(";\n; RE-LOCATEABLE DICTIONARY\n;\n");
|
||||
fprintf(outputfile, ";\n; RE-LOCATEABLE DICTIONARY\n;\n");
|
||||
/*
|
||||
* First emit the bytecode definition entrypoint information.
|
||||
*/
|
||||
@@ -409,9 +409,9 @@ void emit_rld(void)
|
||||
j = outflags & INIT ? defs - 1 : defs;
|
||||
for (i = 0; i < j; i++)
|
||||
{
|
||||
printf("\t%s\t$02\t\t\t; CODE TABLE FIXUP\n", DB);
|
||||
printf("\t%s\t_C%03d\t\t\n", DW, i);
|
||||
printf("\t%s\t$00\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$02\t\t\t; CODE TABLE FIXUP\n", DB);
|
||||
fprintf(outputfile, "\t%s\t_C%03d\t\t\n", DW, i);
|
||||
fprintf(outputfile, "\t%s\t$00\n", DB);
|
||||
}
|
||||
/*
|
||||
* Now emit the fixup table.
|
||||
@@ -420,53 +420,53 @@ void emit_rld(void)
|
||||
{
|
||||
if (fixup_type[i] & EXTERN_TYPE)
|
||||
{
|
||||
printf("\t%s\t$%02X\t\t\t; EXTERNAL FIXUP\n", DB, 0x11 + fixup_size[i] & 0xFF);
|
||||
printf("\t%s\t_F%03d-_SEGBEGIN\t\t\n", DW, i);
|
||||
printf("\t%s\t%d\t\t\t; ESD INDEX\n", DB, fixup_tag[i]);
|
||||
fprintf(outputfile, "\t%s\t$%02X\t\t\t; EXTERNAL FIXUP\n", DB, 0x11 + fixup_size[i] & 0xFF);
|
||||
fprintf(outputfile, "\t%s\t_F%03d-_SEGBEGIN\t\t\n", DW, i);
|
||||
fprintf(outputfile, "\t%s\t%d\t\t\t; ESD INDEX\n", DB, fixup_tag[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t%s\t$%02X\t\t\t; INTERNAL FIXUP\n", DB, 0x01 + fixup_size[i] & 0xFF);
|
||||
printf("\t%s\t_F%03d-_SEGBEGIN\t\t\n", DW, i);
|
||||
printf("\t%s\t$00\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$%02X\t\t\t; INTERNAL FIXUP\n", DB, 0x01 + fixup_size[i] & 0xFF);
|
||||
fprintf(outputfile, "\t%s\t_F%03d-_SEGBEGIN\t\t\n", DW, i);
|
||||
fprintf(outputfile, "\t%s\t$00\n", DB);
|
||||
}
|
||||
}
|
||||
printf("\t%s\t$00\t\t\t; END OF RLD\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$00\t\t\t; END OF RLD\n", DB);
|
||||
}
|
||||
void emit_esd(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
printf(";\n; EXTERNAL/ENTRY SYMBOL DICTIONARY\n;\n");
|
||||
fprintf(outputfile, ";\n; EXTERNAL/ENTRY SYMBOL DICTIONARY\n;\n");
|
||||
for (i = 0; i < globals; i++)
|
||||
{
|
||||
if (idglobal_type[i] & ACCESSED_TYPE) // Only refer to accessed externals
|
||||
{
|
||||
emit_dci(&idglobal_name[i][1], idglobal_name[i][0]);
|
||||
printf("\t%s\t$10\t\t\t; EXTERNAL SYMBOL FLAG\n", DB);
|
||||
printf("\t%s\t%d\t\t\t; ESD INDEX\n", DW, idglobal_tag[i]);
|
||||
fprintf(outputfile, "\t%s\t$10\t\t\t; EXTERNAL SYMBOL FLAG\n", DB);
|
||||
fprintf(outputfile, "\t%s\t%d\t\t\t; ESD INDEX\n", DW, idglobal_tag[i]);
|
||||
}
|
||||
else if (idglobal_type[i] & EXPORT_TYPE)
|
||||
{
|
||||
emit_dci(&idglobal_name[i][1], idglobal_name[i][0]);
|
||||
printf("\t%s\t$08\t\t\t; ENTRY SYMBOL FLAG\n", DB);
|
||||
printf("\t%s\t%s\t\t\n", DW, tag_string(idglobal_tag[i], idglobal_type[i]));
|
||||
fprintf(outputfile, "\t%s\t$08\t\t\t; ENTRY SYMBOL FLAG\n", DB);
|
||||
fprintf(outputfile, "\t%s\t%s\t\t\n", DW, tag_string(idglobal_tag[i], idglobal_type[i]));
|
||||
}
|
||||
}
|
||||
printf("\t%s\t$00\t\t\t; END OF ESD\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$00\t\t\t; END OF ESD\n", DB);
|
||||
}
|
||||
void emit_trailer(void)
|
||||
{
|
||||
if (!(outflags & BYTECODE_SEG))
|
||||
emit_bytecode_seg();
|
||||
if (!(outflags & INIT))
|
||||
printf("_INIT\t=\t0\n");
|
||||
fprintf(outputfile, "_INIT\t=\t0\n");
|
||||
if (!(outflags & SYSFLAGS))
|
||||
printf("_SYSFLAGS\t=\t0\n");
|
||||
fprintf(outputfile, "_SYSFLAGS\t=\t0\n");
|
||||
if (outflags & MODULE)
|
||||
{
|
||||
printf("_DEFCNT\t=\t%d\n", defs);
|
||||
printf("_SEGEND%c\n", LBL);
|
||||
fprintf(outputfile, "_DEFCNT\t=\t%d\n", defs);
|
||||
fprintf(outputfile, "_SEGEND%c\n", LBL);
|
||||
emit_rld();
|
||||
emit_esd();
|
||||
}
|
||||
@@ -481,12 +481,12 @@ void emit_moddep(char *name, int len)
|
||||
idglobal_add(name, len, EXTERN_TYPE | WORD_TYPE, 2); // Add to symbol table
|
||||
}
|
||||
else
|
||||
printf("\t%s\t$00\t\t\t; END OF MODULE DEPENDENCIES\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$00\t\t\t; END OF MODULE DEPENDENCIES\n", DB);
|
||||
}
|
||||
}
|
||||
void emit_sysflags(int val)
|
||||
{
|
||||
printf("_SYSFLAGS\t=\t$%04X\t\t; SYSTEM FLAGS\n", val);
|
||||
fprintf(outputfile, "_SYSFLAGS\t=\t$%04X\t\t; SYSTEM FLAGS\n", val);
|
||||
outflags |= SYSFLAGS;
|
||||
}
|
||||
void emit_bytecode_seg(void)
|
||||
@@ -494,57 +494,57 @@ void emit_bytecode_seg(void)
|
||||
if ((outflags & MODULE) && !(outflags & BYTECODE_SEG))
|
||||
{
|
||||
if (lastglobalsize == 0) // Pad a byte if last label is at end of data segment
|
||||
printf("\t%s\t$00\t\t\t; PAD BYTE\n", DB);
|
||||
printf("_SUBSEG%c\t\t\t\t; BYTECODE STARTS\n", LBL);
|
||||
fprintf(outputfile, "\t%s\t$00\t\t\t; PAD BYTE\n", DB);
|
||||
fprintf(outputfile, "_SUBSEG%c\t\t\t\t; BYTECODE STARTS\n", LBL);
|
||||
}
|
||||
outflags |= BYTECODE_SEG;
|
||||
}
|
||||
void emit_comment(char *s)
|
||||
{
|
||||
printf("\t\t\t\t\t; %s\n", s);
|
||||
fprintf(outputfile, "\t\t\t\t\t; %s\n", s);
|
||||
}
|
||||
void emit_asm(char *s)
|
||||
{
|
||||
printf("%s\n", s);
|
||||
fprintf(outputfile, "%s\n", s);
|
||||
}
|
||||
void emit_idlocal(char *name, int value)
|
||||
{
|
||||
printf("\t\t\t\t\t; %s -> [%d]\n", name, value);
|
||||
fprintf(outputfile, "\t\t\t\t\t; %s -> [%d]\n", name, value);
|
||||
}
|
||||
void emit_idglobal(int tag, int size, char *name)
|
||||
{
|
||||
lastglobalsize = size;
|
||||
if (size == 0)
|
||||
printf("_D%03d%c\t\t\t\t\t; %s\n", tag, LBL, name);
|
||||
fprintf(outputfile, "_D%03d%c\t\t\t\t\t; %s\n", tag, LBL, name);
|
||||
else
|
||||
printf("_D%03d%c\t%s\t%d\t\t\t; %s\n", tag, LBL, DS, size, name);
|
||||
fprintf(outputfile, "_D%03d%c\t%s\t%d\t\t\t; %s\n", tag, LBL, DS, size, name);
|
||||
}
|
||||
void emit_idfunc(int tag, int type, char *name, int is_bytecode)
|
||||
{
|
||||
if (name)
|
||||
printf("%s%c\t\t\t\t\t; %s()\n", tag_string(tag, type), LBL, name);
|
||||
fprintf(outputfile, "%s%c\t\t\t\t\t; %s()\n", tag_string(tag, type), LBL, name);
|
||||
if (!(outflags & MODULE))
|
||||
{
|
||||
//printf("%s%c\n", name, LBL);
|
||||
//fprintf(outputfile, "%s%c\n", name, LBL);
|
||||
if (is_bytecode)
|
||||
printf("\tJSR\tINTERP\n");
|
||||
fprintf(outputfile, "\tJSR\tINTERP\n");
|
||||
}
|
||||
}
|
||||
void emit_lambdafunc(int tag, char *name, int cparams, t_opseq *lambda_seq)
|
||||
{
|
||||
emit_idfunc(tag, DEF_TYPE, name, 1);
|
||||
if (cparams)
|
||||
printf("\t%s\t$58,$%02X,$%02X\t\t; ENTER\t%d,%d\n", DB, cparams*2, cparams, cparams*2, cparams);
|
||||
fprintf(outputfile, "\t%s\t$58,$%02X,$%02X\t\t; ENTER\t%d,%d\n", DB, cparams*2, cparams, cparams*2, cparams);
|
||||
emit_seq(lambda_seq);
|
||||
emit_pending_seq();
|
||||
if (cparams)
|
||||
printf("\t%s\t$5A,$%02X\t\t\t; LEAVE\t%d\n", DB, cparams*2, cparams*2);
|
||||
fprintf(outputfile, "\t%s\t$5A,$%02X\t\t\t; LEAVE\t%d\n", DB, cparams*2, cparams*2);
|
||||
else
|
||||
printf("\t%s\t$5C\t\t\t; RET\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$5C\t\t\t; RET\n", DB);
|
||||
}
|
||||
void emit_idconst(char *name, int value)
|
||||
{
|
||||
printf("\t\t\t\t\t; %s = %d\n", name, value);
|
||||
fprintf(outputfile, "\t\t\t\t\t; %s = %d\n", name, value);
|
||||
}
|
||||
int emit_data(int vartype, int consttype, long constval, int constsize)
|
||||
{
|
||||
@@ -553,25 +553,25 @@ int emit_data(int vartype, int consttype, long constval, int constsize)
|
||||
if (consttype == 0)
|
||||
{
|
||||
datasize = constsize;
|
||||
printf("\t%s\t$%02X\n", DS, constsize);
|
||||
fprintf(outputfile, "\t%s\t$%02X\n", DS, constsize);
|
||||
}
|
||||
else if (consttype & STRING_TYPE)
|
||||
{
|
||||
str = (unsigned char *)constval;
|
||||
constsize = *str++;
|
||||
datasize = constsize + 1;
|
||||
printf("\t%s\t$%02X\n", DB, constsize);
|
||||
fprintf(outputfile, "\t%s\t$%02X\n", DB, constsize);
|
||||
while (constsize-- > 0)
|
||||
{
|
||||
printf("\t%s\t$%02X", DB, *str++);
|
||||
fprintf(outputfile, "\t%s\t$%02X", DB, *str++);
|
||||
for (i = 0; i < 7; i++)
|
||||
{
|
||||
if (constsize-- > 0)
|
||||
printf(",$%02X", *str++);
|
||||
fprintf(outputfile, ",$%02X", *str++);
|
||||
else
|
||||
break;
|
||||
}
|
||||
printf("\n");
|
||||
fprintf(outputfile, "\n");
|
||||
}
|
||||
}
|
||||
else if (consttype & ADDR_TYPE)
|
||||
@@ -581,18 +581,18 @@ int emit_data(int vartype, int consttype, long constval, int constsize)
|
||||
int fixup = fixup_new(constval, consttype, FIXUP_WORD);
|
||||
datasize = 2;
|
||||
if (consttype & EXTERN_TYPE)
|
||||
printf("_F%03d%c\t%s\t0\t\t\t; %s\n", fixup, LBL, DW, tag_string(constval, consttype));
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t0\t\t\t; %s\n", fixup, LBL, DW, tag_string(constval, consttype));
|
||||
else
|
||||
printf("_F%03d%c\t%s\t%s\n", fixup, LBL, DW, tag_string(constval, consttype));
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s\n", fixup, LBL, DW, tag_string(constval, consttype));
|
||||
}
|
||||
else
|
||||
{
|
||||
int fixup = fixup_new(constval, consttype, FIXUP_BYTE);
|
||||
datasize = 1;
|
||||
if (consttype & EXTERN_TYPE)
|
||||
printf("_F%03d%c\t%s\t0\t\t\t; %s\n", fixup, LBL, DB, tag_string(constval, consttype));
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t0\t\t\t; %s\n", fixup, LBL, DB, tag_string(constval, consttype));
|
||||
else
|
||||
printf("_F%03d%c\t%s\t%s\n", fixup, LBL, DB, tag_string(constval, consttype));
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s\n", fixup, LBL, DB, tag_string(constval, consttype));
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -600,12 +600,12 @@ int emit_data(int vartype, int consttype, long constval, int constsize)
|
||||
if (vartype & WORD_TYPE)
|
||||
{
|
||||
datasize = 2;
|
||||
printf("\t%s\t$%04lX\n", DW, constval & 0xFFFF);
|
||||
fprintf(outputfile, "\t%s\t$%04lX\n", DW, constval & 0xFFFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
datasize = 1;
|
||||
printf("\t%s\t$%02lX\n", DB, constval & 0xFF);
|
||||
fprintf(outputfile, "\t%s\t$%02lX\n", DB, constval & 0xFF);
|
||||
}
|
||||
}
|
||||
return (datasize);
|
||||
@@ -613,78 +613,78 @@ int emit_data(int vartype, int consttype, long constval, int constsize)
|
||||
void emit_codetag(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("_B%03d%c\n", tag, LBL);
|
||||
fprintf(outputfile, "_B%03d%c\n", tag, LBL);
|
||||
}
|
||||
void emit_const(int cval)
|
||||
{
|
||||
emit_pending_seq();
|
||||
if ((cval & 0xFFFF) == 0xFFFF)
|
||||
printf("\t%s\t$20\t\t\t; MINUS ONE\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$20\t\t\t; MINUS ONE\n", DB);
|
||||
else if ((cval & 0xFFF0) == 0x0000)
|
||||
printf("\t%s\t$%02X\t\t\t; CN\t%d\n", DB, cval*2, cval);
|
||||
fprintf(outputfile, "\t%s\t$%02X\t\t\t; CN\t%d\n", DB, cval*2, cval);
|
||||
else if ((cval & 0xFF00) == 0x0000)
|
||||
printf("\t%s\t$2A,$%02X\t\t\t; CB\t%d\n", DB, cval, cval);
|
||||
fprintf(outputfile, "\t%s\t$2A,$%02X\t\t\t; CB\t%d\n", DB, cval, cval);
|
||||
else if ((cval & 0xFF00) == 0xFF00)
|
||||
printf("\t%s\t$5E,$%02X\t\t\t; CFFB\t%d\n", DB, cval&0xFF, cval);
|
||||
fprintf(outputfile, "\t%s\t$5E,$%02X\t\t\t; CFFB\t%d\n", DB, cval&0xFF, cval);
|
||||
else
|
||||
printf("\t%s\t$2C,$%02X,$%02X\t\t; CW\t%d\n", DB, cval&0xFF,(cval>>8)&0xFF, cval);
|
||||
fprintf(outputfile, "\t%s\t$2C,$%02X,$%02X\t\t; CW\t%d\n", DB, cval&0xFF,(cval>>8)&0xFF, cval);
|
||||
}
|
||||
void emit_conststr(long conststr)
|
||||
{
|
||||
printf("\t%s\t$2E\t\t\t; CS\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$2E\t\t\t; CS\n", DB);
|
||||
emit_data(0, STRING_TYPE, conststr, 0);
|
||||
}
|
||||
void emit_addi(int cval)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$38,$%02X\t\t\t; ADDI\t%d\n", DB, cval, cval);
|
||||
fprintf(outputfile, "\t%s\t$38,$%02X\t\t\t; ADDI\t%d\n", DB, cval, cval);
|
||||
}
|
||||
void emit_subi(int cval)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$3A,$%02X\t\t\t; SUBI\t%d\n", DB, cval, cval);
|
||||
fprintf(outputfile, "\t%s\t$3A,$%02X\t\t\t; SUBI\t%d\n", DB, cval, cval);
|
||||
}
|
||||
void emit_andi(int cval)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$3C,$%02X\t\t\t; ANDI\t%d\n", DB, cval, cval);
|
||||
fprintf(outputfile, "\t%s\t$3C,$%02X\t\t\t; ANDI\t%d\n", DB, cval, cval);
|
||||
}
|
||||
void emit_ori(int cval)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$3E,$%02X\t\t\t; ORI\t%d\n", DB, cval, cval);
|
||||
fprintf(outputfile, "\t%s\t$3E,$%02X\t\t\t; ORI\t%d\n", DB, cval, cval);
|
||||
}
|
||||
void emit_lb(void)
|
||||
{
|
||||
printf("\t%s\t$60\t\t\t; LB\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$60\t\t\t; LB\n", DB);
|
||||
}
|
||||
void emit_lw(void)
|
||||
{
|
||||
printf("\t%s\t$62\t\t\t; LW\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$62\t\t\t; LW\n", DB);
|
||||
}
|
||||
void emit_llb(int index)
|
||||
{
|
||||
printf("\t%s\t$64,$%02X\t\t\t; LLB\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$64,$%02X\t\t\t; LLB\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_llw(int index)
|
||||
{
|
||||
printf("\t%s\t$66,$%02X\t\t\t; LLW\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$66,$%02X\t\t\t; LLW\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_addlb(int index)
|
||||
{
|
||||
printf("\t%s\t$B0,$%02X\t\t\t; ADDLB\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$B0,$%02X\t\t\t; ADDLB\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_addlw(int index)
|
||||
{
|
||||
printf("\t%s\t$B2,$%02X\t\t\t; ADDLW\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$B2,$%02X\t\t\t; ADDLW\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_idxlb(int index)
|
||||
{
|
||||
printf("\t%s\t$B8,$%02X\t\t\t; IDXLB\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$B8,$%02X\t\t\t; IDXLB\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_idxlw(int index)
|
||||
{
|
||||
printf("\t%s\t$BA,$%02X\t\t\t; IDXLW\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$BA,$%02X\t\t\t; IDXLW\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_lab(int tag, int offset, int type)
|
||||
{
|
||||
@@ -692,12 +692,12 @@ void emit_lab(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$68\t\t\t; LAB\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$68\t\t\t; LAB\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t%s\t$68,$%02X,$%02X\t\t; LAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$68,$%02X,$%02X\t\t; LAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
}
|
||||
void emit_law(int tag, int offset, int type)
|
||||
@@ -706,12 +706,12 @@ void emit_law(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$6A\t\t\t; LAW\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$6A\t\t\t; LAW\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t%s\t$6A,$%02X,$%02X\t\t; LAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$6A,$%02X,$%02X\t\t; LAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
}
|
||||
void emit_addab(int tag, int offset, int type)
|
||||
@@ -720,12 +720,12 @@ void emit_addab(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$B4\t\t\t; ADDAB\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$B4\t\t\t; ADDAB\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t%s\t$B4,$%02X,$%02X\t\t; ADDAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$B4,$%02X,$%02X\t\t; ADDAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
}
|
||||
void emit_addaw(int tag, int offset, int type)
|
||||
@@ -734,12 +734,12 @@ void emit_addaw(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$B6\t\t\t; ADDAW\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$B6\t\t\t; ADDAW\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t%s\t$B6,$%02X,$%02X\t\t; ADDAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$B6,$%02X,$%02X\t\t; ADDAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
}
|
||||
void emit_idxab(int tag, int offset, int type)
|
||||
@@ -748,12 +748,12 @@ void emit_idxab(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$BC\t\t\t; IDXAB\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$BC\t\t\t; IDXAB\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t%s\t$BC,$%02X,$%02X\t\t; IDXAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$BC,$%02X,$%02X\t\t; IDXAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
}
|
||||
void emit_idxaw(int tag, int offset, int type)
|
||||
@@ -762,37 +762,37 @@ void emit_idxaw(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$BE\t\t\t; IDXAW\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$BE\t\t\t; IDXAW\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t%s\t$BE,$%02X,$%02X\t\t; IDXAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$BE,$%02X,$%02X\t\t; IDXAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
}
|
||||
void emit_sb(void)
|
||||
{
|
||||
printf("\t%s\t$70\t\t\t; SB\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$70\t\t\t; SB\n", DB);
|
||||
}
|
||||
void emit_sw(void)
|
||||
{
|
||||
printf("\t%s\t$72\t\t\t; SW\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$72\t\t\t; SW\n", DB);
|
||||
}
|
||||
void emit_slb(int index)
|
||||
{
|
||||
printf("\t%s\t$74,$%02X\t\t\t; SLB\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$74,$%02X\t\t\t; SLB\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_slw(int index)
|
||||
{
|
||||
printf("\t%s\t$76,$%02X\t\t\t; SLW\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$76,$%02X\t\t\t; SLW\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_dlb(int index)
|
||||
{
|
||||
printf("\t%s\t$6C,$%02X\t\t\t; DLB\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$6C,$%02X\t\t\t; DLB\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_dlw(int index)
|
||||
{
|
||||
printf("\t%s\t$6E,$%02X\t\t\t; DLW\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$6E,$%02X\t\t\t; DLW\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_sab(int tag, int offset, int type)
|
||||
{
|
||||
@@ -800,12 +800,12 @@ void emit_sab(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$78\t\t\t; SAB\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$78\t\t\t; SAB\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t%s\t$78,$%02X,$%02X\t\t; SAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$78,$%02X,$%02X\t\t; SAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
}
|
||||
void emit_saw(int tag, int offset, int type)
|
||||
@@ -814,12 +814,12 @@ void emit_saw(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$7A\t\t\t; SAW\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$7A\t\t\t; SAW\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\t%s\t$7A,$%02X,$%02X\t\t; SAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$7A,$%02X,$%02X\t\t; SAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
}
|
||||
void emit_dab(int tag, int offset, int type)
|
||||
@@ -828,11 +828,11 @@ void emit_dab(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$7C\t\t\t; DAB\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$7C\t\t\t; DAB\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
printf("\t%s\t$7C,$%02X,$%02X\t\t; DAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$7C,$%02X,$%02X\t\t; DAB\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
void emit_daw(int tag, int offset, int type)
|
||||
{
|
||||
@@ -840,36 +840,36 @@ void emit_daw(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$7E\t\t\t; DAW\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$7E\t\t\t; DAW\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
else
|
||||
printf("\t%s\t$7E,$%02X,$%02X\t\t; DAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
fprintf(outputfile, "\t%s\t$7E,$%02X,$%02X\t\t; DAW\t%d\n", DB, offset&0xFF,(offset>>8)&0xFF, offset);
|
||||
}
|
||||
void emit_localaddr(int index)
|
||||
{
|
||||
printf("\t%s\t$28,$%02X\t\t\t; LLA\t[%d]\n", DB, index, index);
|
||||
fprintf(outputfile, "\t%s\t$28,$%02X\t\t\t; LLA\t[%d]\n", DB, index, index);
|
||||
}
|
||||
void emit_globaladdr(int tag, int offset, int type)
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$26\t\t\t; LA\t%s+%d\n", DB, taglbl, offset);
|
||||
printf("_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
fprintf(outputfile, "\t%s\t$26\t\t\t; LA\t%s+%d\n", DB, taglbl, offset);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s+%d\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl, offset);
|
||||
}
|
||||
void emit_indexbyte(void)
|
||||
{
|
||||
printf("\t%s\t$82\t\t\t; IDXB\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$82\t\t\t; IDXB\n", DB);
|
||||
}
|
||||
void emit_indexword(void)
|
||||
{
|
||||
printf("\t%s\t$9E\t\t\t; IDXW\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$9E\t\t\t; IDXW\n", DB);
|
||||
}
|
||||
void emit_select(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$52\t\t\t; SEL\n", DB);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$52\t\t\t; SEL\n", DB);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_caseblock(int casecnt, int *caseof, int *casetag)
|
||||
{
|
||||
@@ -878,144 +878,144 @@ void emit_caseblock(int casecnt, int *caseof, int *casetag)
|
||||
if (casecnt < 1 || casecnt > 256)
|
||||
parse_error("Switch count under/overflow\n");
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$%02X\t\t\t; CASEBLOCK\n", DB, casecnt & 0xFF);
|
||||
fprintf(outputfile, "\t%s\t$%02X\t\t\t; CASEBLOCK\n", DB, casecnt & 0xFF);
|
||||
for (i = 0; i < casecnt; i++)
|
||||
{
|
||||
printf("\t%s\t$%04X\n", DW, caseof[i] & 0xFFFF);
|
||||
printf("\t%s\t_B%03d-*\n", DW, casetag[i]);
|
||||
fprintf(outputfile, "\t%s\t$%04X\n", DW, caseof[i] & 0xFFFF);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, casetag[i]);
|
||||
}
|
||||
}
|
||||
void emit_breq(int tag)
|
||||
{
|
||||
printf("\t%s\t$22\t\t\t; BREQ\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$22\t\t\t; BREQ\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_brne(int tag)
|
||||
{
|
||||
printf("\t%s\t$24\t\t\t; BRNE\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$24\t\t\t; BRNE\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_brfls(int tag)
|
||||
{
|
||||
printf("\t%s\t$4C\t\t\t; BRFLS\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$4C\t\t\t; BRFLS\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_brtru(int tag)
|
||||
{
|
||||
printf("\t%s\t$4E\t\t\t; BRTRU\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$4E\t\t\t; BRTRU\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_brnch(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$50\t\t\t; BRNCH\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$50\t\t\t; BRNCH\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_brand(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$AC\t\t\t; BRAND\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$AC\t\t\t; BRAND\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_bror(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$AE\t\t\t; BROR\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$AE\t\t\t; BROR\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_brgt(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$A0\t\t\t; BRGT\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$A0\t\t\t; BRGT\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_brlt(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$A2\t\t\t; BRLT\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$A2\t\t\t; BRLT\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_incbrle(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$A4\t\t\t; INCBRLE\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$A4\t\t\t; INCBRLE\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_addbrle(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$A6\t\t\t; ADDBRLE\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$A6\t\t\t; ADDBRLE\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_decbrge(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$A8\t\t\t; DECBRGE\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$A8\t\t\t; DECBRGE\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_subbrge(int tag)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$AA\t\t\t; SUBBRGE\t_B%03d\n", DB, tag);
|
||||
printf("\t%s\t_B%03d-*\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$AA\t\t\t; SUBBRGE\t_B%03d\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t_B%03d-*\n", DW, tag);
|
||||
}
|
||||
void emit_call(int tag, int type)
|
||||
{
|
||||
if (type == CONST_TYPE)
|
||||
{
|
||||
printf("\t%s\t$54\t\t\t; CALL\t%i\n", DB, tag);
|
||||
printf("\t%s\t%i\t\t\n", DW, tag);
|
||||
fprintf(outputfile, "\t%s\t$54\t\t\t; CALL\t%i\n", DB, tag);
|
||||
fprintf(outputfile, "\t%s\t%i\t\t\n", DW, tag);
|
||||
}
|
||||
else
|
||||
{
|
||||
int fixup = fixup_new(tag, type, FIXUP_WORD);
|
||||
char *taglbl = tag_string(tag, type);
|
||||
printf("\t%s\t$54\t\t\t; CALL\t%s\n", DB, taglbl);
|
||||
printf("_F%03d%c\t%s\t%s\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl);
|
||||
fprintf(outputfile, "\t%s\t$54\t\t\t; CALL\t%s\n", DB, taglbl);
|
||||
fprintf(outputfile, "_F%03d%c\t%s\t%s\t\t\n", fixup, LBL, DW, type & EXTERN_TYPE ? "0" : taglbl);
|
||||
}
|
||||
}
|
||||
void emit_ical(void)
|
||||
{
|
||||
printf("\t%s\t$56\t\t\t; ICAL\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$56\t\t\t; ICAL\n", DB);
|
||||
}
|
||||
void emit_leave(void)
|
||||
{
|
||||
emit_pending_seq();
|
||||
if (localsize)
|
||||
printf("\t%s\t$5A,$%02X\t\t\t; LEAVE\t%d\n", DB, localsize, localsize);
|
||||
fprintf(outputfile, "\t%s\t$5A,$%02X\t\t\t; LEAVE\t%d\n", DB, localsize, localsize);
|
||||
else
|
||||
printf("\t%s\t$5C\t\t\t; RET\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$5C\t\t\t; RET\n", DB);
|
||||
}
|
||||
void emit_ret(void)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$5C\t\t\t; RET\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$5C\t\t\t; RET\n", DB);
|
||||
}
|
||||
void emit_enter(int cparams)
|
||||
{
|
||||
if (localsize)
|
||||
printf("\t%s\t$58,$%02X,$%02X\t\t; ENTER\t%d,%d\n", DB, localsize, cparams, localsize, cparams);
|
||||
fprintf(outputfile, "\t%s\t$58,$%02X,$%02X\t\t; ENTER\t%d,%d\n", DB, localsize, cparams, localsize, cparams);
|
||||
}
|
||||
void emit_start(void)
|
||||
{
|
||||
printf("_INIT%c\n", LBL);
|
||||
fprintf(outputfile, "_INIT%c\n", LBL);
|
||||
outflags |= INIT;
|
||||
defs++;
|
||||
}
|
||||
void emit_drop(void)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$30\t\t\t; DROP \n", DB);
|
||||
fprintf(outputfile, "\t%s\t$30\t\t\t; DROP \n", DB);
|
||||
}
|
||||
void emit_drop2(void)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$32\t\t\t; DROP2\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$32\t\t\t; DROP2\n", DB);
|
||||
}
|
||||
void emit_dup(void)
|
||||
{
|
||||
emit_pending_seq();
|
||||
printf("\t%s\t$34\t\t\t; DUP\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$34\t\t\t; DUP\n", DB);
|
||||
}
|
||||
int emit_unaryop(t_token op)
|
||||
{
|
||||
@@ -1023,19 +1023,19 @@ int emit_unaryop(t_token op)
|
||||
switch (op)
|
||||
{
|
||||
case NEG_TOKEN:
|
||||
printf("\t%s\t$90\t\t\t; NEG\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$90\t\t\t; NEG\n", DB);
|
||||
break;
|
||||
case COMP_TOKEN:
|
||||
printf("\t%s\t$92\t\t\t; COMP\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$92\t\t\t; COMP\n", DB);
|
||||
break;
|
||||
case LOGIC_NOT_TOKEN:
|
||||
printf("\t%s\t$80\t\t\t; NOT\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$80\t\t\t; NOT\n", DB);
|
||||
break;
|
||||
case INC_TOKEN:
|
||||
printf("\t%s\t$8C\t\t\t; INCR\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$8C\t\t\t; INCR\n", DB);
|
||||
break;
|
||||
case DEC_TOKEN:
|
||||
printf("\t%s\t$8E\t\t\t; DECR\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$8E\t\t\t; DECR\n", DB);
|
||||
break;
|
||||
case BPTR_TOKEN:
|
||||
emit_lb();
|
||||
@@ -1055,52 +1055,52 @@ int emit_op(t_token op)
|
||||
switch (op)
|
||||
{
|
||||
case MUL_TOKEN:
|
||||
printf("\t%s\t$86\t\t\t; MUL\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$86\t\t\t; MUL\n", DB);
|
||||
break;
|
||||
case DIV_TOKEN:
|
||||
printf("\t%s\t$88\t\t\t; DIV\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$88\t\t\t; DIV\n", DB);
|
||||
break;
|
||||
case MOD_TOKEN:
|
||||
printf("\t%s\t$8A\t\t\t; MOD\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$8A\t\t\t; MOD\n", DB);
|
||||
break;
|
||||
case ADD_TOKEN:
|
||||
printf("\t%s\t$82\t\t\t; ADD \n", DB);
|
||||
fprintf(outputfile, "\t%s\t$82\t\t\t; ADD \n", DB);
|
||||
break;
|
||||
case SUB_TOKEN:
|
||||
printf("\t%s\t$84\t\t\t; SUB \n", DB);
|
||||
fprintf(outputfile, "\t%s\t$84\t\t\t; SUB \n", DB);
|
||||
break;
|
||||
case SHL_TOKEN:
|
||||
printf("\t%s\t$9A\t\t\t; SHL\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$9A\t\t\t; SHL\n", DB);
|
||||
break;
|
||||
case SHR_TOKEN:
|
||||
printf("\t%s\t$9C\t\t\t; SHR\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$9C\t\t\t; SHR\n", DB);
|
||||
break;
|
||||
case AND_TOKEN:
|
||||
printf("\t%s\t$94\t\t\t; AND \n", DB);
|
||||
fprintf(outputfile, "\t%s\t$94\t\t\t; AND \n", DB);
|
||||
break;
|
||||
case OR_TOKEN:
|
||||
printf("\t%s\t$96\t\t\t; OR \n", DB);
|
||||
fprintf(outputfile, "\t%s\t$96\t\t\t; OR \n", DB);
|
||||
break;
|
||||
case EOR_TOKEN:
|
||||
printf("\t%s\t$98\t\t\t; XOR\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$98\t\t\t; XOR\n", DB);
|
||||
break;
|
||||
case EQ_TOKEN:
|
||||
printf("\t%s\t$40\t\t\t; ISEQ\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$40\t\t\t; ISEQ\n", DB);
|
||||
break;
|
||||
case NE_TOKEN:
|
||||
printf("\t%s\t$42\t\t\t; ISNE\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$42\t\t\t; ISNE\n", DB);
|
||||
break;
|
||||
case GE_TOKEN:
|
||||
printf("\t%s\t$48\t\t\t; ISGE\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$48\t\t\t; ISGE\n", DB);
|
||||
break;
|
||||
case LT_TOKEN:
|
||||
printf("\t%s\t$46\t\t\t; ISLT\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$46\t\t\t; ISLT\n", DB);
|
||||
break;
|
||||
case GT_TOKEN:
|
||||
printf("\t%s\t$44\t\t\t; ISGT\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$44\t\t\t; ISGT\n", DB);
|
||||
break;
|
||||
case LE_TOKEN:
|
||||
printf("\t%s\t$4A\t\t\t; ISLE\n", DB);
|
||||
fprintf(outputfile, "\t%s\t$4A\t\t\t; ISLE\n", DB);
|
||||
break;
|
||||
case COMMA_TOKEN:
|
||||
break;
|
||||
@@ -2040,7 +2040,7 @@ int emit_pending_seq()
|
||||
emit_brlt(op->tag);
|
||||
break;
|
||||
case CODETAG_CODE:
|
||||
printf("_B%03d%c\n", op->tag, LBL);
|
||||
fprintf(outputfile, "_B%03d%c\n", op->tag, LBL);
|
||||
break;
|
||||
case NOP_CODE:
|
||||
break;
|
||||
|
@@ -1615,7 +1615,7 @@ def cmdmode#0
|
||||
word cmdptr, line
|
||||
|
||||
clrscrn
|
||||
puts("PLASMA Editor, Version 2.0 ALPHA2\n")
|
||||
puts("PLASMA Editor, Version 2.0 BETA\n")
|
||||
while not exit
|
||||
puts(@filename)
|
||||
cmdptr = gets($BA)
|
||||
|
@@ -9,8 +9,6 @@ char *statement, *tokenstr, *scanpos = "", *strpos = "";
|
||||
t_token scantoken = EOL_TOKEN, prevtoken;
|
||||
int tokenlen;
|
||||
long constval;
|
||||
FILE* inputfile;
|
||||
char *filename;
|
||||
int lineno = 0;
|
||||
FILE* outer_inputfile = NULL;
|
||||
char* outer_filename;
|
||||
@@ -448,14 +446,6 @@ int next_line(void)
|
||||
t_token token;
|
||||
char* new_filename;
|
||||
strpos = conststr;
|
||||
if (inputfile == NULL)
|
||||
{
|
||||
/*
|
||||
* First-time init
|
||||
*/
|
||||
inputfile = stdin;
|
||||
filename = "<stdin>";
|
||||
}
|
||||
if (*scanpos == ';')
|
||||
{
|
||||
statement = ++scanpos;
|
||||
@@ -500,7 +490,7 @@ int next_line(void)
|
||||
inputline[len-1] = '\0';
|
||||
lineno++;
|
||||
scantoken = EOL_TOKEN;
|
||||
printf("; %s: %04d: %s\n", filename, lineno, inputline);
|
||||
fprintf(outputfile, "; %s: %04d: %s\n", filename, lineno, inputline);
|
||||
}
|
||||
token = scan();
|
||||
/*
|
||||
|
@@ -1,11 +1,13 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include "plasm.h"
|
||||
#define LVALUE 0
|
||||
#define RVALUE 1
|
||||
#define MAX_LAMBDA 64
|
||||
|
||||
int id_match(char *name, int len, char *id);
|
||||
int parse_mods(void);
|
||||
|
||||
int infunc = 0, break_tag = 0, cont_tag = 0, stack_loop = 0;
|
||||
@@ -802,7 +804,8 @@ t_opseq *parse_expr(t_opseq *codeseq, int *stackdepth)
|
||||
codeseq = gen_codetag(codeseq, tag_endtri);
|
||||
}
|
||||
return (codeseq);
|
||||
}t_opseq *parse_set(t_opseq *codeseq)
|
||||
}
|
||||
t_opseq *parse_set(t_opseq *codeseq)
|
||||
{
|
||||
char *setptr = tokenstr;
|
||||
int lparms = 0, rparms = 0;
|
||||
@@ -1221,7 +1224,7 @@ int parse_stmnt(void)
|
||||
}
|
||||
return (scan() == EOL_TOKEN);
|
||||
}
|
||||
int parse_var(int type, long basesize)
|
||||
int parse_var(int type, long basesize, int ignore_var)
|
||||
{
|
||||
char *idstr;
|
||||
long constval;
|
||||
@@ -1267,7 +1270,7 @@ int parse_var(int type, long basesize)
|
||||
else
|
||||
parse_error("Bad variable initializer");
|
||||
}
|
||||
else
|
||||
else if (!ignore_var)
|
||||
{
|
||||
if (idlen)
|
||||
id_add(idstr, idlen, type, size);
|
||||
@@ -1341,7 +1344,7 @@ int parse_struc(void)
|
||||
scan();
|
||||
return (1);
|
||||
}
|
||||
int parse_vars(int type)
|
||||
int parse_vars(int type, int ignore_vars)
|
||||
{
|
||||
long value;
|
||||
int idlen, size, cfnparms, emit = 0;
|
||||
@@ -1358,6 +1361,8 @@ int parse_vars(int type)
|
||||
emit_sysflags(value);
|
||||
break;
|
||||
case CONST_TOKEN:
|
||||
if (type & LOCAL_TYPE)
|
||||
parse_error("Cannot define local constant");
|
||||
if (scan() != ID_TOKEN)
|
||||
parse_error("Missing variable");
|
||||
idstr = tokenstr;
|
||||
@@ -1406,7 +1411,7 @@ int parse_vars(int type)
|
||||
scan_rewind(tokenstr);
|
||||
if (type & WORD_TYPE)
|
||||
cfnvals *= 2;
|
||||
do parse_var(type, cfnvals); while (scantoken == COMMA_TOKEN);
|
||||
do parse_var(type, cfnvals, ignore_vars); while (scantoken == COMMA_TOKEN);
|
||||
emit = type == GLOBAL_TYPE;
|
||||
break;
|
||||
case PREDEF_TOKEN:
|
||||
@@ -1463,13 +1468,18 @@ int parse_vars(int type)
|
||||
}
|
||||
int parse_mods(void)
|
||||
{
|
||||
int i, ignore_emit;
|
||||
|
||||
if (scantoken == IMPORT_TOKEN)
|
||||
{
|
||||
if (scan() != ID_TOKEN)
|
||||
parse_error("Bad import definition");
|
||||
emit_moddep(tokenstr, tokenlen);
|
||||
for (i = 0; i < tokenlen; i++)
|
||||
tokenstr[i] = toupper(tokenstr[i]);
|
||||
if (!(ignore_emit = id_match(tokenstr, tokenlen, modfile)))
|
||||
emit_moddep(tokenstr, tokenlen);
|
||||
scan();
|
||||
while (parse_vars(EXTERN_TYPE)) next_line();
|
||||
while (parse_vars(EXTERN_TYPE, ignore_emit)) next_line();
|
||||
if (scantoken != END_TOKEN)
|
||||
parse_error("Missing END");
|
||||
scan();
|
||||
@@ -1549,7 +1559,7 @@ int parse_defs(void)
|
||||
{
|
||||
case CONST_TOKEN:
|
||||
case STRUC_TOKEN:
|
||||
return parse_vars(GLOBAL_TYPE);
|
||||
return parse_vars(GLOBAL_TYPE, FALSE);
|
||||
case EXPORT_TOKEN:
|
||||
if (scan() != DEF_TOKEN && scantoken != ASM_TOKEN)
|
||||
parse_error("Bad export definition");
|
||||
@@ -1617,7 +1627,7 @@ int parse_defs(void)
|
||||
/*
|
||||
* Parse local vars
|
||||
*/
|
||||
while (parse_vars(LOCAL_TYPE)) next_line();
|
||||
while (parse_vars(LOCAL_TYPE, FALSE)) next_line();
|
||||
emit_enter(cfnparms);
|
||||
prevstmnt = 0;
|
||||
while (parse_stmnt()) next_line();
|
||||
@@ -1714,7 +1724,7 @@ int parse_module(void)
|
||||
if (next_line())
|
||||
{
|
||||
while (parse_mods()) next_line();
|
||||
while (parse_vars(GLOBAL_TYPE)) next_line();
|
||||
while (parse_vars(GLOBAL_TYPE, FALSE)) next_line();
|
||||
while (parse_defs()) next_line();
|
||||
emit_bytecode_seg();
|
||||
emit_start();
|
||||
|
@@ -1 +1,2 @@
|
||||
int id_match(char *name, int len, char *id);
|
||||
int parse_module(void);
|
||||
|
@@ -967,7 +967,7 @@ def parse_stmnt
|
||||
wend
|
||||
return scan == EOL_TKN
|
||||
end
|
||||
def parse_var(type, basesize)#0
|
||||
def parse_var(type, basesize, ignore_var)#0
|
||||
byte consttype, constsize, idlen
|
||||
word idptr, constval, arraysize, size
|
||||
|
||||
@@ -995,7 +995,7 @@ def parse_var(type, basesize)#0
|
||||
arraysize = arraysize + emit_data(type, consttype, constval, constsize)
|
||||
loop
|
||||
size_iddata(PTR_TYPE, size, arraysize)
|
||||
else
|
||||
elsif not ignore_var
|
||||
if idlen
|
||||
if infunc
|
||||
new_idlocal(idptr, idlen, type, size)
|
||||
@@ -1066,7 +1066,7 @@ def parse_struc#0
|
||||
if token <> END_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE); fin
|
||||
scan
|
||||
end
|
||||
def parse_vars(type)
|
||||
def parse_vars(type, ignore_vars)
|
||||
byte idlen, cfnparms, cfnvals
|
||||
word size, value, idptr
|
||||
|
||||
@@ -1076,6 +1076,7 @@ def parse_vars(type)
|
||||
modsysflags, drop, drop = parse_constexpr
|
||||
break
|
||||
is CONST_TKN
|
||||
if type & LOCAL_TYPE; exit_err(ERR_INVAL|ERR_GLOBAL|ERR_INIT); fin
|
||||
if scan <> ID_TKN; exit_err(ERR_INVAL|ERR_CONST); fin
|
||||
idptr = tknptr
|
||||
idlen = tknlen
|
||||
@@ -1107,7 +1108,7 @@ def parse_vars(type)
|
||||
rewind(tknptr)
|
||||
fin
|
||||
if type & WORD_TYPE; size = size * 2; fin
|
||||
repeat; parse_var(type, size); until token <> COMMA_TKN
|
||||
repeat; parse_var(type, size, ignore_vars); until token <> COMMA_TKN
|
||||
break
|
||||
is PREDEF_TKN
|
||||
repeat
|
||||
@@ -1149,11 +1150,23 @@ def parse_vars(type)
|
||||
return TRUE
|
||||
end
|
||||
def parse_mods
|
||||
byte i, ignore_emit
|
||||
|
||||
if token == IMPORT_TKN
|
||||
if scan <> ID_TKN; exit_err(ERR_MISS|ERR_ID); fin
|
||||
new_moddep(tknptr, tknlen)
|
||||
if tknlen == modfile
|
||||
ignore_emit = TRUE
|
||||
for i = 1 to tknlen
|
||||
if toupper(tknptr->[i - 1]) <> modfile[i]; ignore_emit = FALSE; break; fin
|
||||
next
|
||||
else
|
||||
ignore_emit = FALSE
|
||||
fin
|
||||
if not ignore_emit
|
||||
new_moddep(tknptr, tknlen)
|
||||
fin
|
||||
scan
|
||||
while parse_vars(EXTERN_TYPE); nextln; loop
|
||||
while parse_vars(EXTERN_TYPE, ignore_emit); nextln; loop
|
||||
if token <> END_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE); fin
|
||||
scan
|
||||
fin
|
||||
@@ -1228,7 +1241,7 @@ def parse_defs
|
||||
when token
|
||||
is CONST_TKN
|
||||
is STRUC_TKN
|
||||
return parse_vars(GLOBAL_TYPE)
|
||||
return parse_vars(GLOBAL_TYPE, FALSE)
|
||||
is EXPORT_TKN
|
||||
if scan <> DEF_TKN; exit_err(ERR_INVAL|ERR_STATE); fin
|
||||
type = type | EXPORT_TYPE
|
||||
@@ -1273,7 +1286,7 @@ def parse_defs
|
||||
defcodeptr = codeptr
|
||||
emit_tag(func_tag)
|
||||
new_dfd(func_tag)
|
||||
while parse_vars(LOCAL_TYPE); nextln; loop
|
||||
while parse_vars(LOCAL_TYPE, FALSE); nextln; loop
|
||||
emit_enter(cfnparms)
|
||||
prevstmnt = 0
|
||||
while parse_stmnt; nextln; loop
|
||||
@@ -1299,18 +1312,19 @@ end
|
||||
def parse_module#0
|
||||
init_idglobal
|
||||
init_idlocal
|
||||
puts("Data+Code buffer size = "); puti(codebufsz); putln
|
||||
puts("Data+Code buffer size = "); puti(codebufsz); putln; putln
|
||||
puts(@modfile); putln
|
||||
if nextln
|
||||
//
|
||||
// Compile module
|
||||
//
|
||||
puts("\nDATA:");
|
||||
puts("DATA:");
|
||||
while parse_mods; nextln; loop
|
||||
while parse_vars(GLOBAL_TYPE); nextln; loop
|
||||
while parse_vars(GLOBAL_TYPE, FALSE); nextln; loop
|
||||
emit_codeseg
|
||||
puti(codeptr - codebuff); puts(@bytesln)
|
||||
while parse_defs; nextln; loop
|
||||
puts("INIT:")
|
||||
puts("INIT:");
|
||||
entrypoint = codeptr
|
||||
prevstmnt = 0
|
||||
init_idlocal
|
||||
|
@@ -1,11 +1,17 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <strings.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "plasm.h"
|
||||
|
||||
int outflags = 0;
|
||||
FILE *inputfile = NULL, *outputfile;
|
||||
char *filename, asmfile[128], modfile[17];
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int j, i, flags = 0;
|
||||
int k, j, i, flags = 0;
|
||||
for (i = 1; i < argc; i++)
|
||||
{
|
||||
if (argv[i][0] == '-')
|
||||
@@ -29,14 +35,72 @@ int main(int argc, char **argv)
|
||||
break;
|
||||
case 'W':
|
||||
outflags |= WARNINGS;
|
||||
break;
|
||||
case 'S':
|
||||
outflags |= STREAM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (inputfile == NULL)
|
||||
{
|
||||
filename = argv[i];
|
||||
inputfile = fopen(filename, "r");
|
||||
if (!inputfile)
|
||||
{
|
||||
printf("Error opening input file: %s\n", filename);
|
||||
exit(1);
|
||||
}
|
||||
strcpy(asmfile, filename);
|
||||
j = strlen(asmfile);
|
||||
while (j && asmfile[j] != '.')
|
||||
{
|
||||
asmfile[j] = '\0';
|
||||
j--;
|
||||
}
|
||||
asmfile[j+1] = 'a';
|
||||
while (j && asmfile[j-1] != '/')
|
||||
j--;
|
||||
k = 1;
|
||||
while (asmfile[j] != '.')
|
||||
modfile[k++] = toupper(asmfile[j++]);
|
||||
modfile[k] = '\0';
|
||||
modfile[0] = k - 1;
|
||||
if (outflags & STREAM)
|
||||
{
|
||||
strcpy(asmfile, "STDOUT");
|
||||
outputfile = stdout;
|
||||
}
|
||||
else
|
||||
{
|
||||
outputfile = fopen(asmfile, "w");
|
||||
if (!outputfile)
|
||||
{
|
||||
printf("Error opening output file %s\n", asmfile);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Too many input files\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (inputfile == NULL)
|
||||
{
|
||||
printf("Usage: %s [-AMONWS] <inputfile>\n", argv[0]);
|
||||
return (0);
|
||||
}
|
||||
emit_flags(outflags);
|
||||
if (parse_module())
|
||||
{
|
||||
fprintf(stderr, "Compilation complete.\n");
|
||||
}
|
||||
fclose(inputfile);
|
||||
fclose(outputfile);
|
||||
return (0);
|
||||
}
|
||||
|
@@ -9,7 +9,12 @@
|
||||
#define SYSFLAGS (1<<5)
|
||||
#define WARNINGS (1<<6)
|
||||
#define NO_COMBINE (1<<7)
|
||||
#define STREAM (1<<8)
|
||||
#define FALSE 0
|
||||
#define TRUE (!FALSE)
|
||||
extern int outflags;
|
||||
extern FILE *inputfile, *outputfile;
|
||||
extern char *filename, modfile[17];
|
||||
#include "tokens.h"
|
||||
#include "lex.h"
|
||||
#include "symbols.h"
|
||||
|
@@ -276,7 +276,7 @@ byte outflags
|
||||
// ProDOS/SOS file references
|
||||
//
|
||||
byte refnum, srcref, incref
|
||||
byte[32] srcfile, incfile, relfile
|
||||
byte[32] srcfile, incfile, relfile, modfile
|
||||
word parsefile // Pointer to current file
|
||||
word srcline // Saved source line number
|
||||
//
|
||||
@@ -508,7 +508,7 @@ include "toolsrc/parse.pla"
|
||||
//
|
||||
// Look at command line arguments and compile module
|
||||
//
|
||||
puts("PLASMA Compiler, Version 2.0 ALPHA2\n")
|
||||
puts("PLASMA Compiler, Version 2.0 BETA\n")
|
||||
arg = argNext(argFirst)
|
||||
if ^arg and ^(arg + 1) == '-'
|
||||
opt = arg + 2
|
||||
@@ -560,6 +560,15 @@ if ^arg
|
||||
//
|
||||
strcpy(@relfile, "A.OUT")
|
||||
fin
|
||||
modfile = 0
|
||||
for srcref = 1 to relfile
|
||||
if relfile[srcref] == '/'
|
||||
modfile = 0
|
||||
else
|
||||
modfile++
|
||||
modfile[modfile] = toupper(relfile[srcref])
|
||||
fin
|
||||
next
|
||||
fin
|
||||
fin
|
||||
if srcfile and relfile
|
||||
|
@@ -357,9 +357,9 @@ end
|
||||
def volumes#0
|
||||
word strbuf
|
||||
byte i
|
||||
|
||||
|
||||
strbuf = heapmark()
|
||||
fileio:online(0, strbuf)
|
||||
fileio:online(0, strbuf)
|
||||
for i = 0 to 15
|
||||
^strbuf = ^strbuf & $0F
|
||||
if ^strbuf
|
||||
@@ -369,7 +369,7 @@ def volumes#0
|
||||
next
|
||||
end
|
||||
|
||||
puts("TFTP Server Version 2.0 ALPHA1\n")
|
||||
puts("TFTP Server,Version 2.0\n")
|
||||
if !iNet:initIP()
|
||||
return -1
|
||||
fin
|
||||
|
@@ -52,7 +52,7 @@ byte perr, refauto
|
||||
// String pool.
|
||||
//
|
||||
byte autorun[] = "AUTORUN"
|
||||
byte verstr[] = "\nPLASMA ALPHA2"
|
||||
byte verstr[] = "\nPLASMA BETA"
|
||||
byte freestr[] = "MEM FREE:$"
|
||||
byte errorstr[] = "ERR:$"
|
||||
byte prompt[] = "PLASMA"
|
||||
|
@@ -1377,7 +1377,7 @@ heap = @lastdef
|
||||
//
|
||||
// Print PLASMA version
|
||||
//
|
||||
prstr("PLASMA 2.0 ALPHA2 64K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout
|
||||
prstr("PLASMA 2.0 BETA 64K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout
|
||||
//
|
||||
// Init symbol table.
|
||||
//
|
||||
|
@@ -1454,7 +1454,7 @@ heap = @lastdef
|
||||
//
|
||||
// Print PLASMA version
|
||||
//
|
||||
prstr("PLASMA 2.0 ALPHA2 128K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout
|
||||
prstr("PLASMA 2.0 BETA 128K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout
|
||||
//
|
||||
// Init symbol table.
|
||||
//
|
||||
|
@@ -1263,7 +1263,7 @@ cmdlnptr = @cmdln
|
||||
// Print PLASMA version
|
||||
//
|
||||
init_cons
|
||||
prstr("PLASMA 2.0 ALPHA2\n")//; putb(version.1); putc('.'); putb(version.0); putln
|
||||
prstr("PLASMA 2.0 BETA\n")//; putb(version.1); putc('.'); putb(version.0); putln
|
||||
prstr("MEM:$"); prword(availheap); crout
|
||||
//
|
||||
// Exec command line parser
|
||||
|
@@ -1286,7 +1286,7 @@ cmdlnptr = @cmdln
|
||||
// Print PLASMA version
|
||||
//
|
||||
init_cons
|
||||
prstr("PLASMA 2.0 ALPHA2 JITC\n")//; putb(version.1); putc('.'); putb(version.0); putln
|
||||
prstr("PLASMA 2.0 BETA JITC\n")//; putb(version.1); putc('.'); putb(version.0); putln
|
||||
prstr("MEM:$"); prword(availheap); crout
|
||||
//
|
||||
// Exec command line parser
|
||||
|
Reference in New Issue
Block a user