mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-08-07 18:25:03 +00:00
Keep exported functions with a return value
This commit is contained in:
@@ -516,7 +516,7 @@ end
|
|||||||
// MEMSET(ADDR, VALUE, SIZE)
|
// MEMSET(ADDR, VALUE, SIZE)
|
||||||
// With optimizations from Peter Ferrie
|
// With optimizations from Peter Ferrie
|
||||||
//
|
//
|
||||||
asm memset(addr, val, size)#0
|
asm memset(addr, val, size)
|
||||||
LDA ESTKL+2,X
|
LDA ESTKL+2,X
|
||||||
STA DSTL
|
STA DSTL
|
||||||
LDA ESTKH+2,X
|
LDA ESTKH+2,X
|
||||||
@@ -542,7 +542,6 @@ SETMLPH STA (DST),Y
|
|||||||
LDA ESTKH+1,X
|
LDA ESTKH+1,X
|
||||||
BCS SETMLPH
|
BCS SETMLPH
|
||||||
SETMEX INX
|
SETMEX INX
|
||||||
INX
|
|
||||||
INX
|
INX
|
||||||
RTS
|
RTS
|
||||||
end
|
end
|
||||||
@@ -550,32 +549,31 @@ end
|
|||||||
// COPY MEMORY
|
// COPY MEMORY
|
||||||
// MEMCPY(DSTADDR, SRCADDR, SIZE)
|
// MEMCPY(DSTADDR, SRCADDR, SIZE)
|
||||||
//
|
//
|
||||||
asm memcpy(dst, src, size)#0
|
asm memcpy(dst, src, size)
|
||||||
INX
|
INX
|
||||||
INX
|
INX
|
||||||
INX
|
|
||||||
LDA ESTKL-3,X
|
|
||||||
ORA ESTKH-3,X
|
|
||||||
BEQ CPYMEX
|
|
||||||
LDA ESTKL-2,X
|
LDA ESTKL-2,X
|
||||||
CMP ESTKL-1,X
|
ORA ESTKH-2,X
|
||||||
LDA ESTKH-2,X
|
BEQ CPYMEX
|
||||||
SBC ESTKH-1,X
|
LDA ESTKL-1,X
|
||||||
|
CMP ESTKL,X
|
||||||
|
LDA ESTKH-1,X
|
||||||
|
SBC ESTKH,X
|
||||||
BCC REVCPY
|
BCC REVCPY
|
||||||
;
|
;
|
||||||
; FORWARD COPY
|
; FORWARD COPY
|
||||||
;
|
;
|
||||||
LDA ESTKL-1,X
|
LDA ESTKL,X
|
||||||
STA DSTL
|
STA DSTL
|
||||||
LDA ESTKH-1,X
|
LDA ESTKH,X
|
||||||
STA DSTH
|
STA DSTH
|
||||||
LDA ESTKL-2,X
|
LDA ESTKL-1,X
|
||||||
STA SRCL
|
STA SRCL
|
||||||
LDA ESTKH-2,X
|
LDA ESTKH-1,X
|
||||||
STA SRCH
|
STA SRCH
|
||||||
LDY ESTKL-3,X
|
LDY ESTKL-2,X
|
||||||
BEQ FORCPYLP
|
BEQ FORCPYLP
|
||||||
INC ESTKH-3,X
|
INC ESTKH-2,X
|
||||||
LDY #$00
|
LDY #$00
|
||||||
FORCPYLP LDA (SRC),Y
|
FORCPYLP LDA (SRC),Y
|
||||||
STA (DST),Y
|
STA (DST),Y
|
||||||
@@ -583,34 +581,34 @@ FORCPYLP LDA (SRC),Y
|
|||||||
BNE +
|
BNE +
|
||||||
INC DSTH
|
INC DSTH
|
||||||
INC SRCH
|
INC SRCH
|
||||||
+ DEC ESTKL-3,X
|
+ DEC ESTKL-2,X
|
||||||
BNE FORCPYLP
|
BNE FORCPYLP
|
||||||
DEC ESTKH-3,X
|
DEC ESTKH-2,X
|
||||||
BNE FORCPYLP
|
BNE FORCPYLP
|
||||||
RTS
|
RTS
|
||||||
;
|
;
|
||||||
; REVERSE COPY
|
; REVERSE COPY
|
||||||
;
|
;
|
||||||
REVCPY ;CLC
|
REVCPY ;CLC
|
||||||
LDA ESTKL-3,X
|
LDA ESTKL-2,X
|
||||||
ADC ESTKL-1,X
|
ADC ESTKL,X
|
||||||
STA DSTL
|
STA DSTL
|
||||||
LDA ESTKH-3,X
|
LDA ESTKH-2,X
|
||||||
ADC ESTKH-1,X
|
ADC ESTKH,X
|
||||||
STA DSTH
|
STA DSTH
|
||||||
CLC
|
CLC
|
||||||
LDA ESTKL-3,X
|
LDA ESTKL-2,X
|
||||||
ADC ESTKL-2,X
|
ADC ESTKL-1,X
|
||||||
STA SRCL
|
STA SRCL
|
||||||
LDA ESTKH-3,X
|
LDA ESTKH-2,X
|
||||||
ADC ESTKH-2,X
|
ADC ESTKH-1,X
|
||||||
STA SRCH
|
STA SRCH
|
||||||
DEC DSTH
|
DEC DSTH
|
||||||
DEC SRCH
|
DEC SRCH
|
||||||
LDY #$FF
|
LDY #$FF
|
||||||
LDA ESTKL-3,X
|
LDA ESTKL-2,X
|
||||||
BEQ REVCPYLP
|
BEQ REVCPYLP
|
||||||
INC ESTKH-3,X
|
INC ESTKH-2,X
|
||||||
REVCPYLP LDA (SRC),Y
|
REVCPYLP LDA (SRC),Y
|
||||||
STA (DST),Y
|
STA (DST),Y
|
||||||
DEY
|
DEY
|
||||||
@@ -618,9 +616,9 @@ REVCPYLP LDA (SRC),Y
|
|||||||
BNE +
|
BNE +
|
||||||
DEC DSTH
|
DEC DSTH
|
||||||
DEC SRCH
|
DEC SRCH
|
||||||
+ DEC ESTKL-3,X
|
+ DEC ESTKL-2,X
|
||||||
BNE REVCPYLP
|
BNE REVCPYLP
|
||||||
DEC ESTKH-3,X
|
DEC ESTKH-2,X
|
||||||
BNE REVCPYLP
|
BNE REVCPYLP
|
||||||
CPYMEX RTS
|
CPYMEX RTS
|
||||||
end
|
end
|
||||||
@@ -628,9 +626,8 @@ end
|
|||||||
// CHAR OUT
|
// CHAR OUT
|
||||||
// COUT(CHAR)
|
// COUT(CHAR)
|
||||||
//
|
//
|
||||||
asm cout(char)#0
|
asm cout(char)
|
||||||
LDA ESTKL,X
|
LDA ESTKL,X
|
||||||
INX
|
|
||||||
COUT1 BIT $BF98
|
COUT1 BIT $BF98
|
||||||
BMI +
|
BMI +
|
||||||
JSR TOUPR
|
JSR TOUPR
|
||||||
@@ -659,13 +656,12 @@ end
|
|||||||
// PRINT STRING
|
// PRINT STRING
|
||||||
// PRSTR(STR)
|
// PRSTR(STR)
|
||||||
//
|
//
|
||||||
asm prstr(pstr)#0
|
asm prstr(pstr)
|
||||||
LDY #$00
|
LDY #$00
|
||||||
LDA ESTKL,X
|
LDA ESTKL,X
|
||||||
STA SRCL
|
STA SRCL
|
||||||
LDA ESTKH,X
|
LDA ESTKH,X
|
||||||
STA SRCH
|
STA SRCH
|
||||||
INX
|
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
STA TMP
|
STA TMP
|
||||||
BEQ ++
|
BEQ ++
|
||||||
@@ -903,12 +899,12 @@ end
|
|||||||
//
|
//
|
||||||
// Runtime routines
|
// Runtime routines
|
||||||
//
|
//
|
||||||
def home#0
|
def home
|
||||||
call($FC58, 0, 0, 0, 0)
|
return call($FC58, 0, 0, 0, 0)
|
||||||
end
|
end
|
||||||
def gotoxy(x, y)#0
|
def gotoxy(x, y)
|
||||||
^$24 = x + ^$20
|
^$24 = x + ^$20
|
||||||
call($FB5B, y + ^$22, 0, 0, 0)
|
return call($FB5B, y + ^$22, 0, 0, 0)
|
||||||
end
|
end
|
||||||
//
|
//
|
||||||
// ProDOS routines
|
// ProDOS routines
|
||||||
@@ -1171,7 +1167,7 @@ def prword(h)#0
|
|||||||
cout('$')
|
cout('$')
|
||||||
call($F941, h >> 8, h, 0, 0)
|
call($F941, h >> 8, h, 0, 0)
|
||||||
end
|
end
|
||||||
def print(i)#0
|
def print(i)
|
||||||
byte numstr[7]
|
byte numstr[7]
|
||||||
byte place, sign
|
byte place, sign
|
||||||
|
|
||||||
@@ -1194,7 +1190,7 @@ def print(i)#0
|
|||||||
place--
|
place--
|
||||||
fin
|
fin
|
||||||
numstr[place] = 6 - place
|
numstr[place] = 6 - place
|
||||||
prstr(@numstr[place])
|
return prstr(@numstr[place])
|
||||||
end
|
end
|
||||||
def nametostr(namestr, len, strptr)#0
|
def nametostr(namestr, len, strptr)#0
|
||||||
^strptr = len
|
^strptr = len
|
||||||
@@ -2608,14 +2604,14 @@ end
|
|||||||
// Alebraic op to stack op
|
// Alebraic op to stack op
|
||||||
//
|
//
|
||||||
def push_op(op, prec)#0
|
def push_op(op, prec)#0
|
||||||
opsp = opsp + 1
|
opsp++
|
||||||
if opsp == 16; parse_err(@estk_overflw); return; fin
|
if opsp == 16; parse_err(@estk_overflw); return; fin
|
||||||
opstack[opsp] = op
|
opstack[opsp] = op
|
||||||
precstack[opsp] = prec
|
precstack[opsp] = prec
|
||||||
end
|
end
|
||||||
def pop_op
|
def pop_op
|
||||||
if opsp < 0; return parse_err(@estk_underflw); fin
|
if opsp < 0; return parse_err(@estk_underflw); fin
|
||||||
opsp = opsp - 1
|
opsp--
|
||||||
return opstack[opsp + 1]
|
return opstack[opsp + 1]
|
||||||
end
|
end
|
||||||
def tos_op
|
def tos_op
|
||||||
@@ -2631,7 +2627,7 @@ def tos_op_prec(tos)
|
|||||||
return precstack[opsp]
|
return precstack[opsp]
|
||||||
end
|
end
|
||||||
def push_val(value, size, type)#0
|
def push_val(value, size, type)#0
|
||||||
valsp = valsp + 1
|
valsp++
|
||||||
if valsp == 16; parse_err(@estk_overflw); return; fin
|
if valsp == 16; parse_err(@estk_overflw); return; fin
|
||||||
valstack[valsp] = value
|
valstack[valsp] = value
|
||||||
sizestack[valsp] = size
|
sizestack[valsp] = size
|
||||||
@@ -2642,7 +2638,7 @@ def pop_val(valptr, sizeptr, typeptr)
|
|||||||
*valptr = valstack[valsp]
|
*valptr = valstack[valsp]
|
||||||
^sizeptr = sizestack[valsp]
|
^sizeptr = sizestack[valsp]
|
||||||
^typeptr = typestack[valsp]
|
^typeptr = typestack[valsp]
|
||||||
valsp = valsp - 1
|
valsp--
|
||||||
return valsp + 1
|
return valsp + 1
|
||||||
end
|
end
|
||||||
//
|
//
|
||||||
@@ -2685,7 +2681,7 @@ def scan
|
|||||||
// ID, either variable name or reserved word
|
// ID, either variable name or reserved word
|
||||||
//
|
//
|
||||||
repeat
|
repeat
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
until !isalphanum(^scanptr)
|
until !isalphanum(^scanptr)
|
||||||
tknlen = scanptr - tknptr
|
tknlen = scanptr - tknptr
|
||||||
token = keymatch
|
token = keymatch
|
||||||
@@ -2697,7 +2693,7 @@ def scan
|
|||||||
constval = 0
|
constval = 0
|
||||||
repeat
|
repeat
|
||||||
constval = constval * 10 + ^scanptr - '0'
|
constval = constval * 10 + ^scanptr - '0'
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
until !isnum(^scanptr)
|
until !isnum(^scanptr)
|
||||||
else
|
else
|
||||||
//
|
//
|
||||||
@@ -2710,9 +2706,9 @@ def scan
|
|||||||
^scanptr = $00
|
^scanptr = $00
|
||||||
else
|
else
|
||||||
token = DIV_TKN
|
token = DIV_TKN
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
is '='
|
is '='
|
||||||
if ^(scanptr + 1) == '='
|
if ^(scanptr + 1) == '='
|
||||||
token = EQ_TKN
|
token = EQ_TKN
|
||||||
@@ -2722,9 +2718,9 @@ def scan
|
|||||||
scanptr = scanptr + 2
|
scanptr = scanptr + 2
|
||||||
else
|
else
|
||||||
token = SET_TKN
|
token = SET_TKN
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
is '-'
|
is '-'
|
||||||
if ^(scanptr + 1) == '>'
|
if ^(scanptr + 1) == '>'
|
||||||
token = PTRB_TKN
|
token = PTRB_TKN
|
||||||
@@ -2734,19 +2730,19 @@ def scan
|
|||||||
scanptr = scanptr + 2
|
scanptr = scanptr + 2
|
||||||
else
|
else
|
||||||
token = SUB_TKN
|
token = SUB_TKN
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
is '+'
|
is '+'
|
||||||
if ^(scanptr + 1) == '+'
|
if ^(scanptr + 1) == '+'
|
||||||
token = INC_TKN
|
token = INC_TKN
|
||||||
scanptr = scanptr + 2
|
scanptr = scanptr + 2
|
||||||
else
|
else
|
||||||
token = ADD_TKN
|
token = ADD_TKN
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
is '>'
|
is '>'
|
||||||
if ^(scanptr + 1) == '>'
|
if ^(scanptr + 1) == '>'
|
||||||
token = SHR_TKN
|
token = SHR_TKN
|
||||||
scanptr = scanptr + 2
|
scanptr = scanptr + 2
|
||||||
@@ -2755,9 +2751,9 @@ def scan
|
|||||||
scanptr = scanptr + 2
|
scanptr = scanptr + 2
|
||||||
else
|
else
|
||||||
token = GT_TKN
|
token = GT_TKN
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
is '<'
|
is '<'
|
||||||
if ^(scanptr + 1) == '<'
|
if ^(scanptr + 1) == '<'
|
||||||
token = SHL_TKN
|
token = SHL_TKN
|
||||||
@@ -2770,41 +2766,41 @@ def scan
|
|||||||
scanptr = scanptr + 2
|
scanptr = scanptr + 2
|
||||||
else
|
else
|
||||||
token = LT_TKN
|
token = LT_TKN
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
is '$'
|
is '$'
|
||||||
//
|
//
|
||||||
// Hexadecimal constant
|
// Hexadecimal constant
|
||||||
//
|
//
|
||||||
token = INT_TKN
|
token = INT_TKN
|
||||||
constval = 0
|
constval = 0
|
||||||
repeat
|
repeat
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
if ^scanptr >= '0' and ^scanptr <= '9'
|
if ^scanptr >= '0' and ^scanptr <= '9'
|
||||||
constval = (constval << 4) + ^scanptr - '0'
|
constval = (constval << 4) + ^scanptr - '0'
|
||||||
elsif ^scanptr >= 'A' and ^scanptr <= 'F'
|
elsif ^scanptr >= 'A' and ^scanptr <= 'F'
|
||||||
constval = (constval << 4) + ^scanptr - '7'// 'A'-10
|
constval = (constval << 4) + ^scanptr - '7'// 'A'-10
|
||||||
elsif ^scanptr >= 'a' and ^scanptr <= 'f'
|
elsif ^scanptr >= 'a' and ^scanptr <= 'f'
|
||||||
constval = (constval << 4) + ^scanptr - 'W'// 'a'-10
|
constval = (constval << 4) + ^scanptr - 'W'// 'a'-10
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
fin
|
fin
|
||||||
until !^scanptr
|
until !^scanptr
|
||||||
break
|
break
|
||||||
is $27 // '
|
is $27 // '
|
||||||
//
|
//
|
||||||
// Character constant
|
// Character constant
|
||||||
//
|
//
|
||||||
token = CHR_TKN
|
token = CHR_TKN
|
||||||
if ^(scanptr + 1) <> $5C // \
|
if ^(scanptr + 1) <> $5C // \
|
||||||
constval = ^(scanptr + 1)
|
constval = ^(scanptr + 1)
|
||||||
if ^(scanptr + 2) <> $27 // '
|
if ^(scanptr + 2) <> $27 // '
|
||||||
return parse_err(@bad_cnst)
|
return parse_err(@bad_cnst)
|
||||||
fin
|
fin
|
||||||
scanptr = scanptr + 3
|
scanptr = scanptr + 3
|
||||||
else
|
else
|
||||||
when ^(scanptr + 2)
|
when ^(scanptr + 2)
|
||||||
is 'n'
|
is 'n'
|
||||||
constval = $0D; break
|
constval = $0D; break
|
||||||
is 'r'
|
is 'r'
|
||||||
@@ -2819,34 +2815,34 @@ def scan
|
|||||||
fin
|
fin
|
||||||
scanptr = scanptr + 4
|
scanptr = scanptr + 4
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
is '"'
|
is '"'
|
||||||
//
|
//
|
||||||
// String constant
|
// String constant
|
||||||
//
|
//
|
||||||
token = STR_TKN
|
token = STR_TKN
|
||||||
scanptr = scanptr + 1
|
constval = scanptr
|
||||||
constval = scanptr
|
scanptr++
|
||||||
while ^scanptr and ^scanptr <> '"'
|
while ^scanptr and ^scanptr <> '"'
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
loop
|
loop
|
||||||
if !^scanptr
|
if !^scanptr
|
||||||
return parse_err(@bad_cnst)
|
return parse_err(@bad_cnst)
|
||||||
fin
|
fin
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
break
|
break
|
||||||
is 0
|
is 0
|
||||||
is ';'
|
is ';'
|
||||||
if token <> EOF_TKN
|
if token <> EOF_TKN
|
||||||
token = EOL_TKN
|
token = EOL_TKN
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
otherwise
|
otherwise
|
||||||
//
|
//
|
||||||
// Simple single character tokens
|
// Simple single character tokens
|
||||||
//
|
//
|
||||||
token = scanchr | $80
|
token = scanchr | $80
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
wend
|
wend
|
||||||
fin
|
fin
|
||||||
tknlen = scanptr - tknptr
|
tknlen = scanptr - tknptr
|
||||||
@@ -2874,21 +2870,24 @@ end
|
|||||||
//
|
//
|
||||||
def nextln
|
def nextln
|
||||||
if ^scanptr == ';'
|
if ^scanptr == ';'
|
||||||
scanptr = scanptr + 1
|
scanptr++
|
||||||
scan
|
scan
|
||||||
else
|
else
|
||||||
scanptr = inbuff
|
scanptr = inbuff
|
||||||
if lineno < numlines
|
if lineno < numlines
|
||||||
cpyln(strlinbuf:[lineno], instr)
|
cpyln(strlinbuf:[lineno], instr)
|
||||||
lineno = lineno + 1
|
lineno++
|
||||||
if !(lineno & $0F); cout('.'); fin
|
if !(lineno & $0F); cout('.'); fin
|
||||||
//cout('>')
|
print(lineno);cout(':');print(numlines)
|
||||||
//prstr(instr)
|
cout('>')
|
||||||
//crout
|
prstr(instr)
|
||||||
|
crout
|
||||||
scan
|
scan
|
||||||
else
|
else
|
||||||
^instr = 0
|
cout('<')
|
||||||
^inbuff = 0
|
crout
|
||||||
|
^instr = 0
|
||||||
|
^inbuff = 0
|
||||||
token = DONE_TKN
|
token = DONE_TKN
|
||||||
fin
|
fin
|
||||||
fin
|
fin
|
||||||
@@ -3848,6 +3847,7 @@ def parse_var(type)
|
|||||||
byte consttype, constsize, idlen
|
byte consttype, constsize, idlen
|
||||||
word idptr, constval, arraysize, size
|
word idptr, constval, arraysize, size
|
||||||
|
|
||||||
|
cout('T')
|
||||||
idlen = 0
|
idlen = 0
|
||||||
size = 1
|
size = 1
|
||||||
if scan == OPEN_BRACKET_TKN
|
if scan == OPEN_BRACKET_TKN
|
||||||
@@ -3903,15 +3903,16 @@ def parse_struc
|
|||||||
byte type, idlen, struclen, constsize
|
byte type, idlen, struclen, constsize
|
||||||
word size, offset, idstr
|
word size, offset, idstr
|
||||||
|
|
||||||
|
cout('S')
|
||||||
struclen = 0
|
struclen = 0
|
||||||
if scan == ID_TKN
|
if scan == ID_TKN
|
||||||
struclen = tknlen
|
struclen = tknlen
|
||||||
if struclen > 16
|
if struclen > 16
|
||||||
struclen = 16
|
struclen = 16
|
||||||
fin
|
fin
|
||||||
for idlen = 0 to struclen
|
for idlen = 0 to struclen
|
||||||
strucid[idlen] = ^(tknptr + idlen)
|
strucid[idlen] = ^(tknptr + idlen)
|
||||||
next
|
next
|
||||||
fin
|
fin
|
||||||
offset = 0
|
offset = 0
|
||||||
while nextln == BYTE_TKN or token == WORD_TKN
|
while nextln == BYTE_TKN or token == WORD_TKN
|
||||||
@@ -3941,10 +3942,10 @@ def parse_struc
|
|||||||
fin
|
fin
|
||||||
if type & WORD_TYPE
|
if type & WORD_TYPE
|
||||||
size = size * 2
|
size = size * 2
|
||||||
fin
|
fin
|
||||||
if idlen
|
if idlen
|
||||||
idconst_add(idstr, idlen, offset)
|
idconst_add(idstr, idlen, offset)
|
||||||
fin
|
fin
|
||||||
offset = offset + size
|
offset = offset + size
|
||||||
until token <> COMMA_TKN
|
until token <> COMMA_TKN
|
||||||
if token <> EOL_TKN; return FALSE; fin
|
if token <> EOL_TKN; return FALSE; fin
|
||||||
@@ -3958,6 +3959,7 @@ def parse_vars
|
|||||||
byte idlen, type, size
|
byte idlen, type, size
|
||||||
word value, idptr
|
word value, idptr
|
||||||
|
|
||||||
|
cout('V')
|
||||||
when token
|
when token
|
||||||
is CONST_TKN
|
is CONST_TKN
|
||||||
if scan <> ID_TKN
|
if scan <> ID_TKN
|
||||||
@@ -3972,7 +3974,7 @@ def parse_vars
|
|||||||
return parse_err(@bad_cnst)
|
return parse_err(@bad_cnst)
|
||||||
fin
|
fin
|
||||||
idconst_add(idptr, idlen, value)
|
idconst_add(idptr, idlen, value)
|
||||||
break
|
break
|
||||||
is STRUC_TKN
|
is STRUC_TKN
|
||||||
if !parse_struc; parse_err(@bad_struc); fin
|
if !parse_struc; parse_err(@bad_struc); fin
|
||||||
break
|
break
|
||||||
@@ -3988,7 +3990,7 @@ def parse_vars
|
|||||||
return FALSE
|
return FALSE
|
||||||
fin
|
fin
|
||||||
until token <> COMMA_TKN
|
until token <> COMMA_TKN
|
||||||
break
|
break
|
||||||
is PREDEF_TKN
|
is PREDEF_TKN
|
||||||
repeat
|
repeat
|
||||||
if scan == ID_TKN
|
if scan == ID_TKN
|
||||||
@@ -3997,7 +3999,7 @@ def parse_vars
|
|||||||
return parse_err(@bad_decl)
|
return parse_err(@bad_decl)
|
||||||
fin
|
fin
|
||||||
until scan <> COMMA_TKN
|
until scan <> COMMA_TKN
|
||||||
break
|
break
|
||||||
is EOL_TKN
|
is EOL_TKN
|
||||||
break
|
break
|
||||||
otherwise
|
otherwise
|
||||||
@@ -4010,6 +4012,7 @@ def parse_defs
|
|||||||
word func_tag, idptr
|
word func_tag, idptr
|
||||||
|
|
||||||
if token == DEF_TKN
|
if token == DEF_TKN
|
||||||
|
cout('D')
|
||||||
if scan <> ID_TKN; return parse_err(@bad_decl); fin
|
if scan <> ID_TKN; return parse_err(@bad_decl); fin
|
||||||
cfnparms = 0
|
cfnparms = 0
|
||||||
infunc = TRUE
|
infunc = TRUE
|
||||||
@@ -4067,6 +4070,7 @@ def parse_module
|
|||||||
while parse_defs
|
while parse_defs
|
||||||
nextln
|
nextln
|
||||||
loop
|
loop
|
||||||
|
cout('I')
|
||||||
framesize = 0
|
framesize = 0
|
||||||
entrypoint = codeptr
|
entrypoint = codeptr
|
||||||
emit_enter(0)
|
emit_enter(0)
|
||||||
@@ -4076,6 +4080,7 @@ def parse_module
|
|||||||
nextln
|
nextln
|
||||||
loop
|
loop
|
||||||
fin
|
fin
|
||||||
|
cout('!')
|
||||||
if prevstmnt <> RETURN_TKN
|
if prevstmnt <> RETURN_TKN
|
||||||
emit_const(0)
|
emit_const(0)
|
||||||
emit_leave
|
emit_leave
|
||||||
|
Reference in New Issue
Block a user