1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2025-02-09 04:30:37 +00:00

increse DHCP timeout and add consts for 16 bit JIT ZP values

This commit is contained in:
David Schmenk 2018-07-21 15:56:49 -07:00
parent 4039c6a3ad
commit 1527eaac24
3 changed files with 51 additions and 47 deletions

View File

@ -22,11 +22,15 @@ const estkh8 = $C000
const estkh = $00C0
const estkl8 = $D000
const estkl = $00D0
const ifp16 = $E000
const ifpl8 = $E000
const ifph8 = $E100
const jmptmp = $00E6
const tmp16 = $E700
const tmpl8 = $E700
const tmph8 = $E800
const fetchop = $00F1
const ip16 = $00F2
//
// Bytecode interpreter entrypoints
//

View File

@ -213,7 +213,7 @@ repeat
fin
next
retry++
until retry > 4 or optsOP.2 == DHCP_ACK
until retry > 16 or optsOP.2 == DHCP_ACK
iNet:closeUDP(portDHCP)
iNet:setInterfaceIP(@localip, @localnet, @localgw)
puts("Apple II bound to:\n");putip(@localip);putc('/');putip(@localnet);putln

View File

@ -276,7 +276,7 @@ def compiler(defptr)#0
^codeptr = $48; codeptr++ // PHA
fin
if not X_IS_IFP
*codeptr = $E0A6 // LDX IFP
*codeptr = ifp16+$A6 // LDX IFP
codeptr = codeptr + 2
X_IS_IFP = TRUE
fin
@ -450,9 +450,9 @@ def compiler(defptr)#0
fin
codeptr->0 = $A0 // LDY #$0000
codeptr=>1 = $0000
codeptr=>3 = $E785 // STA TMP
codeptr=>3 = tmp16+$85 // STA TMP
codeptr=>5 = $3868 // PLA; SEC
codeptr=>7 = $E7E5 // SBC TMP
codeptr=>7 = tmp16+$E5 // SBC TMP
codeptr=>9 = $0350 // BVC +3
codeptr->11 = $49 // EOR #$8000
codeptr=>12 = $8000
@ -565,7 +565,7 @@ def compiler(defptr)#0
codeptr=>5 = $F285 // STA IP
codeptr=>7 = $00A0 // LDY #$00
codeptr->9 = $4C // JMP FETCHOP
codeptr=>10 = $00F1 // FETCHOP
codeptr=>10 = fetchop // FETCHOP
codeptr->12 = opcode // OP
when opcode
is $54 // CALL
@ -611,9 +611,9 @@ def compiler(defptr)#0
if not A_IS_TOS
^codeptr = $68; codeptr++ // PLA
fin
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr=>2 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM
codeptr=>4 = $E7B2 // LDA (TMP)
codeptr=>4 = tmp16+$B2 // LDA (TMP)
codeptr=>6 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM
codeptr->8 = $29 // AND #$00FF
codeptr=>9 = $00FF
@ -625,8 +625,8 @@ def compiler(defptr)#0
if not A_IS_TOS
^codeptr = $68; codeptr++ // PLA
fin
codeptr=>0 = $E785 // STA TMP
codeptr=>2 = $E7B2 // LDA (TMP)
codeptr=>0 = tmp16+$85 // STA TMP
codeptr=>2 = tmp16+$B2 // LDA (TMP)
codeptr = codeptr + 4
A_IS_TOS = TRUE // PHA
break
@ -638,7 +638,7 @@ def compiler(defptr)#0
^codeptr = $48; codeptr++ // PHA
fin
if not X_IS_IFP
*codeptr = $E0A6 // LDX IFP
*codeptr = ifp16+$A6 // LDX IFP
codeptr = codeptr + 2
X_IS_IFP = TRUE
fin
@ -656,7 +656,7 @@ def compiler(defptr)#0
^codeptr = $48; codeptr++ // PHA
fin
if not X_IS_IFP
*codeptr = $E0A6 // LDX IFP
*codeptr = ifp16+$A6 // LDX IFP
codeptr = codeptr + 2
X_IS_IFP = TRUE
fin
@ -675,21 +675,21 @@ def compiler(defptr)#0
//
// Ensure we only do byte sized accesses to H/W
//
codeptr=>0 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM
codeptr->2 = $AD // LDA abs
codeptr=>0 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM
codeptr->2 = $AD // LDA abs
codeptr=>3 = dest
codeptr=>5 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM
codeptr->7 = $29 // AND #$00FF
codeptr=>5 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM
codeptr->7 = $29 // AND #$00FF
codeptr=>8 = $00FF
codeptr = codeptr + 10
else
codeptr->0 = $AD // LDA abs
codeptr->0 = $AD // LDA abs
codeptr=>1 = dest
codeptr->3 = $29 // AND #$00FF
codeptr->3 = $29 // AND #$00FF
codeptr=>4 = $00FF
codeptr = codeptr + 6
fin
A_IS_TOS = TRUE // PHA
A_IS_TOS = TRUE // PHA
break
is $6A // LAW
dest = *(bytecode+i+1)
@ -711,7 +711,7 @@ def compiler(defptr)#0
^codeptr = $68; codeptr++ // PLA
fin
if not X_IS_IFP
*codeptr = $E0A6 // LDX IFP
*codeptr = ifp16+$A6 // LDX IFP
codeptr = codeptr + 2
X_IS_IFP = TRUE
fin
@ -738,7 +738,7 @@ def compiler(defptr)#0
^codeptr = $68; codeptr++ // PLA
fin
if not X_IS_IFP
*codeptr = $E0A6 // LDX IFP
*codeptr = ifp16+$A6 // LDX IFP
codeptr = codeptr + 2
X_IS_IFP = TRUE
fin
@ -757,10 +757,10 @@ def compiler(defptr)#0
if not A_IS_TOS
^codeptr = $68; codeptr++ // PLA
fin
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr->2 = $68 // PLA
codeptr=>3 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM
codeptr=>5 = $E792 // STA (TMP)
codeptr=>5 = tmp16+$92 // STA (TMP)
codeptr=>7 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM
codeptr = codeptr + 9
A_IS_TOS = FALSE
@ -770,9 +770,9 @@ def compiler(defptr)#0
if not A_IS_TOS
^codeptr = $68; codeptr++ // PLA
fin
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr->2 = $68 // PLA
codeptr=>3 = $E792 // STA (TMP)
codeptr=>3 = tmp16+$92 // STA (TMP)
codeptr = codeptr + 5
A_IS_TOS = FALSE
break
@ -848,9 +848,9 @@ def compiler(defptr)#0
if not A_IS_TOS
^codeptr = $68; codeptr++ // PLA
fin
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr=>2 = $3868 // PLA; SEC
codeptr=>4 = $E7E5 // SBC TMP
codeptr=>4 = tmp16+$E5 // SBC TMP
codeptr = codeptr + 6
A_IS_TOS = TRUE
break
@ -881,10 +881,10 @@ def compiler(defptr)#0
codeptr=>0 = $10E2 // SEP #$10 -> 8 BIT X/Y
codeptr->2 = $A9 // LDA #imm
codeptr=>3 = codeptr + 12
codeptr=>5 = $F285 // STA IP
codeptr=>5 = ip16+$85 // STA IP
codeptr=>7 = $00A0 // LDY #$00
codeptr->9 = $4C // JMP FETCHOP
codeptr=>10 = $00F1 // FETCHOP
codeptr=>10 = fetchop // FETCHOP
codeptr=>12 = $C000+opcode // OPCODE; NATV CODE
codeptr = codeptr + 14
X_IS_IFP = FALSE
@ -1076,10 +1076,10 @@ def compiler(defptr)#0
// SUB
//
//puts("SUBBRGE "); puti(dest)
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr=>2 = $A3+(TOS<<8) // LDA S,TOS
codeptr->4 = $68 // SEC
codeptr=>5 = $E7E5 // SBC TMP
codeptr=>5 = tmp16+$E5 // SBC TMP
codeptr=>7 = $83+(TOS<<8) // STA S,TOS
codeptr = codeptr + 9
fin
@ -1133,16 +1133,16 @@ def compiler(defptr)#0
^codeptr = $68; codeptr++ // PLA
fin
if not X_IS_IFP
*codeptr = $E0A6 // LDX IFP
*codeptr = ifp16+$A6 // LDX IFP
codeptr = codeptr + 2
X_IS_IFP = TRUE
fin
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr=>2 = $B5+(j<<8) // LDA dp,X
codeptr->4 = $29 // AND #$00FF
codeptr=>5 = $00FF
codeptr->7 = $18 // CLC
codeptr=>8 = $E765 // ADC TMP
codeptr=>8 = tmp16+$65 // ADC TMP
codeptr = codeptr + 10
A_IS_TOS = TRUE // PHA
break
@ -1154,7 +1154,7 @@ def compiler(defptr)#0
^codeptr = $68; codeptr++ // PLA
fin
if not X_IS_IFP
*codeptr = $E0A6 // LDX IFP
*codeptr = ifp16+$A6 // LDX IFP
codeptr = codeptr + 2
X_IS_IFP = TRUE
fin
@ -1174,7 +1174,7 @@ def compiler(defptr)#0
//
// Ensure only byte sized accesses to H/W addresses
//
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr=>2 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM
codeptr->4 = $AD // LDA abs
codeptr=>5 = dest
@ -1182,16 +1182,16 @@ def compiler(defptr)#0
codeptr->9 = $29 // AND #$00FF
codeptr=>10 = $00FF
codeptr->12 = $18 // CLC
codeptr=>13 = $E765 // ADC TMP
codeptr=>13 = tmp16+$65 // ADC TMP
codeptr = codeptr + 15
else
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr->2 = $AD // LDA abs
codeptr=>3 = dest
codeptr->5 = $29 // AND #$00FF
codeptr=>6 = $00FF
codeptr->8 = $18 // CLC
codeptr=>9 = $E765 // ADC TMP
codeptr=>9 = tmp16+$65 // ADC TMP
codeptr = codeptr + 11
fin
A_IS_TOS = TRUE // PHA
@ -1215,16 +1215,16 @@ def compiler(defptr)#0
^codeptr = $68; codeptr++ // PLA
fin
if not X_IS_IFP
*codeptr = $E0A6 // LDX IFP
*codeptr = ifp16+$A6 // LDX IFP
codeptr = codeptr + 2
X_IS_IFP = TRUE
fin
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr=>2 = $B5+(j<<8) // LDA dp,X
codeptr->4 = $29 // AND #$00FF
codeptr=>5 = $00FF
codeptr->7 = $0A // ASL
codeptr=>8 = $E765 // ADC TMP
codeptr=>8 = tmp16+$65 // ADC TMP
codeptr = codeptr + 10
A_IS_TOS = TRUE // PHA
break
@ -1236,7 +1236,7 @@ def compiler(defptr)#0
^codeptr = $68; codeptr++ // PLA
fin
if not X_IS_IFP
*codeptr = $E0A6 // LDX IFP
*codeptr = ifp16+$A6 // LDX IFP
codeptr = codeptr + 2
X_IS_IFP = TRUE
fin
@ -1258,7 +1258,7 @@ def compiler(defptr)#0
//
// Ensure only byte sized accesses to H/W addresses
//
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr=>2 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM
codeptr->4 = $AD // LDA abs
codeptr=>5 = dest
@ -1266,16 +1266,16 @@ def compiler(defptr)#0
codeptr->9 = $29 // AND #$00FF
codeptr=>10 = $00FF
codeptr->12 = $0A // ASL
codeptr=>13 = $E765 // ADC TMP
codeptr=>13 = tmp16+$65 // ADC TMP
codeptr = codeptr + 15
else
codeptr=>0 = $E785 // STA TMP
codeptr=>0 = tmp16+$85 // STA TMP
codeptr->2 = $AD // LDA abs
codeptr=>3 = dest
codeptr->5 = $29 // AND #$00FF
codeptr=>6 = $00FF
codeptr->8 = $0A // ASL
codeptr=>9 = $E765 // ADC TMP
codeptr=>9 = tmp16+$65 // ADC TMP
codeptr = codeptr + 11
fin
A_IS_TOS = TRUE // PHA
@ -1292,7 +1292,7 @@ def compiler(defptr)#0
codeptr=>4 = $6D18 // CLC; ADC abs
codeptr=>6 = dest
codeptr = codeptr + 8
A_IS_TOS = TRUE // PHA
A_IS_TOS = TRUE // PHA
break
is $FE // NOPed out earlier by SELect
break