mirror of
https://github.com/dschmenk/PLASMA.git
synced 2026-04-21 07:17:03 +00:00
Add keepflags option to module return value
This commit is contained in:
Binary file not shown.
@@ -37,6 +37,7 @@ import cmdsys
|
||||
//
|
||||
// Module don't free memory
|
||||
//
|
||||
const modflagkeep = $1000
|
||||
const modkeep = $2000
|
||||
const modinitkeep = $4000
|
||||
//
|
||||
|
||||
@@ -171,7 +171,7 @@ def strnum(strptr)
|
||||
return num
|
||||
end
|
||||
|
||||
def prfiles(optpath)
|
||||
def catalog(optpath)
|
||||
byte path[64]
|
||||
byte refnum
|
||||
byte firstblk
|
||||
@@ -303,7 +303,7 @@ def getCmd#1
|
||||
^cmdstr--
|
||||
memcpy(cmdstr + 1, cmdstr + 2, ^cmdstr)
|
||||
until ^cmdstr == 0 or ^(cmdstr + 1) <> ' '
|
||||
prfiles(cmdstr)
|
||||
catalog(cmdstr)
|
||||
break
|
||||
is 'Q'
|
||||
if modified
|
||||
@@ -395,6 +395,8 @@ def dcgrTestView(bounce)#0
|
||||
j = 96-24; incj = bounce
|
||||
grMode(grOff)
|
||||
dcgrMode(0)
|
||||
dcgrColor(clrCursor)
|
||||
dcgrClearBl7(0, 0, SCR_WIDTH7, SCR_HEIGHT)
|
||||
while ^$C000 < 128
|
||||
dcgrPixMap(i, j, 40, 48, @dcgrSprite)
|
||||
i = i + inci
|
||||
|
||||
@@ -11,7 +11,7 @@ arg = argNext(argFirst)
|
||||
if ^arg
|
||||
if arg->1 >= '1' and arg->1 <= '7'
|
||||
call($C000 + ((arg->1 - '0') << 8), 0, 0, 0, 0)
|
||||
return modkeep
|
||||
return modflagkeep
|
||||
fin
|
||||
fin
|
||||
puts("Usage: INITSLOT [SLOT NUMBER 1-7]\n")
|
||||
|
||||
@@ -15,8 +15,9 @@ const resxhgr2 = $0080
|
||||
//
|
||||
// Module don't free memory
|
||||
//
|
||||
const modkeep = $1000
|
||||
const modinitkeep = $2000
|
||||
const modflagkeep = $1000
|
||||
const modkeep = $2000
|
||||
const modinitkeep = $4000
|
||||
//
|
||||
// CFFA1 addresses.
|
||||
//
|
||||
@@ -1141,18 +1142,21 @@ def parsecmd(strptr)#1
|
||||
end
|
||||
def execmod(modfile)#1
|
||||
byte moddci[63]
|
||||
word saveheap, savesym, saveflags
|
||||
word keep, saveheap, savesym, saveflags
|
||||
|
||||
perr = 1
|
||||
if stodci(modfile, @moddci)
|
||||
saveheap = heap
|
||||
savesym = lastsym
|
||||
saveflags = systemflags
|
||||
if loadmod(@moddci) < modkeep
|
||||
systemflags = saveflags
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
^lastsym = 0
|
||||
keep = loadmod(@moddci)
|
||||
if keep < modkeep
|
||||
if not (keep & modflagkeep)
|
||||
systemflags = saveflags
|
||||
fin
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
^lastsym = 0
|
||||
fin
|
||||
fin
|
||||
return -perr
|
||||
|
||||
+10
-6
@@ -19,6 +19,7 @@ const resxhgr2 = $0080
|
||||
//
|
||||
// Module don't free memory
|
||||
//
|
||||
const modflagkeep = $1000
|
||||
const modkeep = $2000
|
||||
const modinitkeep = $4000
|
||||
//
|
||||
@@ -1304,18 +1305,21 @@ def execsys(sysfile)#0
|
||||
end
|
||||
def execmod(modfile)#1
|
||||
byte moddci[63]
|
||||
word saveheap, savesym, saveflags
|
||||
word keep, saveheap, savesym, saveflags
|
||||
|
||||
perr = 1
|
||||
if stodci(modfile, @moddci)
|
||||
saveheap = heap
|
||||
savesym = lastsym
|
||||
saveflags = systemflags
|
||||
if loadmod(@moddci) < modkeep
|
||||
systemflags = saveflags
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
^lastsym = 0
|
||||
keep = loadmod(@moddci)
|
||||
if keep < modkeep
|
||||
if not (keep & modflagkeep)
|
||||
systemflags = saveflags
|
||||
fin
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
^lastsym = 0
|
||||
fin
|
||||
fin
|
||||
return -perr
|
||||
|
||||
@@ -19,6 +19,7 @@ const nojitc = $0100
|
||||
//
|
||||
// Module don't free memory
|
||||
//
|
||||
const modflagkeep = $1000
|
||||
const modkeep = $2000
|
||||
const modinitkeep = $4000
|
||||
//
|
||||
@@ -1381,7 +1382,7 @@ def execsys(sysfile)#0
|
||||
end
|
||||
def execmod(modfile)#1
|
||||
byte moddci[63]
|
||||
word saveheap, savexheap, savesym, saveflags
|
||||
word keep, saveheap, savexheap, savesym, saveflags
|
||||
|
||||
perr = 1
|
||||
if stodci(modfile, @moddci)
|
||||
@@ -1389,12 +1390,15 @@ def execmod(modfile)#1
|
||||
savexheap = xheap
|
||||
savesym = lastsym
|
||||
saveflags = systemflags
|
||||
if loadmod(@moddci) < modkeep
|
||||
systemflags = saveflags
|
||||
xheap = savexheap
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
^lastsym = 0
|
||||
keep = loadmod(@moddci)
|
||||
if keep < modkeep
|
||||
if not (keep & modflagkeep)
|
||||
systemflags = saveflags
|
||||
fin
|
||||
xheap = savexheap
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
^lastsym = 0
|
||||
fin
|
||||
fin
|
||||
return -perr
|
||||
|
||||
@@ -14,6 +14,7 @@ const resxhgr2 = $0080
|
||||
//
|
||||
// Module don't free memory
|
||||
//
|
||||
const modflagkeep = $1000
|
||||
const modkeep = $2000
|
||||
const modinitkeep = $4000
|
||||
//
|
||||
@@ -1242,7 +1243,7 @@ def loadmod(mod)#1
|
||||
end
|
||||
def execmod(modfile)#1
|
||||
byte moddci[63]
|
||||
word saveheap, savesym, saveflags, savemodid
|
||||
word keep, saveheap, savesym, saveflags, savemodid
|
||||
|
||||
perr = 1
|
||||
if stodci(modfile, @moddci)
|
||||
@@ -1250,14 +1251,17 @@ def execmod(modfile)#1
|
||||
savesym = lastsym
|
||||
saveflags = systemflags
|
||||
savemodid = modid
|
||||
if loadmod(@moddci) < modkeep
|
||||
keep = loadmod(@moddci)
|
||||
if keep < modkeep
|
||||
if not (keep & modflagkeep)
|
||||
systemflags = saveflags
|
||||
fin
|
||||
while modid > savemodid
|
||||
modid--
|
||||
seg_release(modseg[modid])
|
||||
loop
|
||||
systemflags = saveflags
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
xpokeb(symtbl.0, lastsym, 0)
|
||||
fin
|
||||
fin
|
||||
|
||||
@@ -15,6 +15,7 @@ const nojitc = $0100
|
||||
//
|
||||
// Module don't free memory
|
||||
//
|
||||
const modflagkeep = $1000
|
||||
const modkeep = $2000
|
||||
const modinitkeep = $4000
|
||||
//
|
||||
@@ -1265,7 +1266,7 @@ def loadmod(mod)#1
|
||||
end
|
||||
def execmod(modfile)#1
|
||||
byte moddci[63]
|
||||
word saveheap, savesym, saveflags, savemodid
|
||||
word keep, saveheap, savesym, saveflags, savemodid
|
||||
|
||||
perr = 1
|
||||
if stodci(modfile, @moddci)
|
||||
@@ -1273,14 +1274,17 @@ def execmod(modfile)#1
|
||||
savesym = lastsym
|
||||
saveflags = systemflags
|
||||
savemodid = modid
|
||||
if loadmod(@moddci) < modkeep
|
||||
keep = loadmod(@moddci)
|
||||
if keep < modkeep
|
||||
if not (keep & modflagkeep)
|
||||
systemflags = saveflags
|
||||
fin
|
||||
while modid > savemodid
|
||||
modid--
|
||||
seg_release(modseg[modid])
|
||||
loop
|
||||
systemflags = saveflags
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
heap = saveheap
|
||||
lastsym = savesym
|
||||
xpokeb(symtbl.0, lastsym, 0)
|
||||
fin
|
||||
fin
|
||||
|
||||
Reference in New Issue
Block a user