mirror of https://github.com/stid/woz64.git
Play with pseudo (mimic 65c02)
This commit is contained in:
parent
c8ba619d33
commit
440d3caa67
|
@ -5,6 +5,7 @@
|
|||
#import "../libs/print.asm"
|
||||
#import "../core/keyboard.asm"
|
||||
#import "../core/screen.asm"
|
||||
#import "../core/pseudo.asm"
|
||||
#import "../libs/module.asm"
|
||||
#import "../progs/woz_shell.asm"
|
||||
|
||||
|
@ -23,13 +24,14 @@
|
|||
// --------------------------------------------------------
|
||||
init: {
|
||||
// Init All Modules
|
||||
jsr Pseudo.init
|
||||
jsr Module.init
|
||||
jsr Memory.init
|
||||
jsr Math.init
|
||||
jsr Print.init
|
||||
jsr Keyboard.init
|
||||
jsr Screen.init
|
||||
jsr WozShell.init
|
||||
jsr Module.init
|
||||
rts
|
||||
}
|
||||
|
||||
|
@ -42,6 +44,7 @@ toDebug: {
|
|||
ModuleToDebug(module_type, module_name, version)
|
||||
jsr Keyboard.toDebug
|
||||
jsr Screen.toDebug
|
||||
jsr Pseudo.toDebug
|
||||
jsr Module.toDebug
|
||||
jsr Memory.toDebug
|
||||
jsr Print.toDebug
|
||||
|
|
|
@ -1,17 +1,25 @@
|
|||
.filenamespace MemMap
|
||||
#importonce
|
||||
|
||||
.const SHELL_BUGGER_ADDR = $3000
|
||||
.const XSTACK_ADDRESS = $3100
|
||||
.const YSTACK_ADDRESS = $3200
|
||||
|
||||
*=$2 "ZERO PAGE" virtual
|
||||
|
||||
.namespace CORE {
|
||||
yStackOffset: .byte 0
|
||||
xStackOffset: .byte 0
|
||||
|
||||
.label XStack = XSTACK_ADDRESS // 256 bytes
|
||||
.label YStack = YSTACK_ADDRESS // 256 bytes
|
||||
}
|
||||
|
||||
.namespace SCREEN {
|
||||
TempVideoPointer: .word 0
|
||||
TempStringPointer: .word 0
|
||||
CursorCol: .byte 0
|
||||
CursorRow: .byte 0
|
||||
tempY: .byte 0
|
||||
tempX: .byte 0
|
||||
PrintPetCharY: .byte 0
|
||||
PrintPetCharX: .byte 0
|
||||
ScrollUpTriggered: .byte 0
|
||||
}
|
||||
|
||||
|
@ -38,15 +46,12 @@
|
|||
from: .word 0
|
||||
dest: .word 0
|
||||
size: .word 0
|
||||
tmpX: .byte 0
|
||||
tmpY: .byte 0
|
||||
}
|
||||
|
||||
.namespace MODULE {
|
||||
versionPtr: .word 0
|
||||
versionPtr: .word 0
|
||||
}
|
||||
|
||||
|
||||
.namespace SHELL {
|
||||
pos: .byte 0
|
||||
MODE: .byte 0
|
||||
|
@ -58,6 +63,8 @@
|
|||
XAML: .byte 0
|
||||
XAMH: .byte 0
|
||||
|
||||
.label buffer = $3000 // 256 bytes
|
||||
.label buffer = SHELL_BUGGER_ADDR // 256 bytes
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,131 @@
|
|||
#importonce
|
||||
#import "../core/mem_map.asm"
|
||||
#import "../libs/module.asm"
|
||||
|
||||
|
||||
// ========================================================
|
||||
// ////// PSEUDO COMMANDS /////////////////////////////////
|
||||
// ========================================================
|
||||
|
||||
.pseudocommand phy {
|
||||
jsr Pseudo._phy
|
||||
}
|
||||
|
||||
.pseudocommand ply {
|
||||
jsr Pseudo._ply
|
||||
}
|
||||
|
||||
.pseudocommand phx {
|
||||
jsr Pseudo._phx
|
||||
}
|
||||
|
||||
.pseudocommand plx {
|
||||
jsr Pseudo._plx
|
||||
}
|
||||
|
||||
.pseudocommand phr {
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
}
|
||||
|
||||
.pseudocommand plr {
|
||||
plx
|
||||
ply
|
||||
pla
|
||||
}
|
||||
|
||||
.filenamespace Pseudo
|
||||
// ========================================================
|
||||
// ////// METHODS /////////////////////////////////////////
|
||||
// ========================================================
|
||||
|
||||
* = * "Pseudo Commands"
|
||||
|
||||
// --------------------------------------------------------
|
||||
// init -
|
||||
// Module Init.
|
||||
// --------------------------------------------------------
|
||||
init: {
|
||||
lda #$00
|
||||
sta MemMap.CORE.xStackOffset
|
||||
sta MemMap.CORE.yStackOffset
|
||||
rts
|
||||
}
|
||||
|
||||
// --------------------------------------------------------
|
||||
// toDebug -
|
||||
// Print debug info.
|
||||
// --------------------------------------------------------
|
||||
toDebug: {
|
||||
ModuleToDebug(module_type, module_name, version)
|
||||
rts
|
||||
}
|
||||
|
||||
_phx: {
|
||||
pha // Save A
|
||||
tya // Tansfer Y in A
|
||||
pha // Save Y as A
|
||||
inc MemMap.CORE.xStackOffset // Increment Stack offset
|
||||
ldy MemMap.CORE.xStackOffset // Load new Stack offset in Y
|
||||
txa // Move X in A
|
||||
sta MemMap.CORE.XStack, y // Save X (as A) in YStack + offset (y)
|
||||
pla // Load saved A (was Y)
|
||||
tay // restore Y from A
|
||||
pla // restore A
|
||||
rts
|
||||
}
|
||||
|
||||
_plx: {
|
||||
pha // Save A
|
||||
tya // Tansfer X in A
|
||||
pha // Save X as A
|
||||
ldx MemMap.CORE.xStackOffset // Load Stack offset
|
||||
lda MemMap.CORE.XStack, x // Load Y from stack
|
||||
tax
|
||||
dec MemMap.CORE.xStackOffset // Dcrement stack offset
|
||||
pla // Load saved A (was X)
|
||||
tay // restore X from A
|
||||
pla
|
||||
rts
|
||||
}
|
||||
|
||||
_phy: {
|
||||
pha // Save A
|
||||
txa // Tansfer X in A
|
||||
pha // Save X as A
|
||||
inc MemMap.CORE.yStackOffset // Increment Stack offset
|
||||
ldx MemMap.CORE.yStackOffset // Load new Stack offset in X
|
||||
tya // Move Y in A
|
||||
sta MemMap.CORE.YStack, x // Save Y (as A) in XStack + offset (x)
|
||||
pla // Load saved A (was X)
|
||||
tax // restore X from A
|
||||
pla // restore A
|
||||
rts
|
||||
}
|
||||
|
||||
_ply: {
|
||||
pha // Save A
|
||||
txa // Tansfer X in A
|
||||
pha // Save X as A
|
||||
ldx MemMap.CORE.yStackOffset // Load Stack offset
|
||||
ldy MemMap.CORE.YStack, x // Load Y from stack
|
||||
dec MemMap.CORE.yStackOffset // Dcrement stack offset
|
||||
pla // Load saved A (was X)
|
||||
tax // restore X from A
|
||||
pla // restore A
|
||||
rts
|
||||
}
|
||||
|
||||
// ========================================================
|
||||
// ////// DATA ////////////////////////////////////////////
|
||||
// ========================================================
|
||||
|
||||
* = * "Pseudo Data"
|
||||
module_type: .byte Module.TYPES.CORE
|
||||
version: .byte 1, 0, 0
|
||||
|
||||
.encoding "screencode_mixed"
|
||||
module_name:
|
||||
.text "pseudo"
|
||||
.byte 0
|
|
@ -2,6 +2,7 @@
|
|||
#import "../libs/math.asm"
|
||||
#import "../libs/memory.asm"
|
||||
#import "../libs/module.asm"
|
||||
#import "../core/pseudo.asm"
|
||||
|
||||
|
||||
// ========================================================
|
||||
|
@ -184,7 +185,7 @@ scrollUp: {
|
|||
// --------------------------------------------------------
|
||||
sendChar: {
|
||||
sei
|
||||
stx MemMap.SCREEN.tempX
|
||||
phx
|
||||
cmp #CR
|
||||
bne.r !+
|
||||
jsr screenNewLine
|
||||
|
@ -205,7 +206,7 @@ sendChar: {
|
|||
stx MemMap.SCREEN.TempVideoPointer+1
|
||||
|
||||
// Temp Save Y
|
||||
sty MemMap.SCREEN.tempY
|
||||
phy
|
||||
|
||||
// CursorRow * 40
|
||||
ldy MemMap.SCREEN.CursorRow
|
||||
|
@ -256,12 +257,12 @@ sendChar: {
|
|||
!:
|
||||
// insert into screen
|
||||
sta (MemMap.SCREEN.TempVideoPointer), y
|
||||
ldy MemMap.SCREEN.tempY
|
||||
ply
|
||||
iny
|
||||
inc MemMap.SCREEN.CursorCol
|
||||
|
||||
exit:
|
||||
ldx MemMap.SCREEN.tempX
|
||||
plx
|
||||
cli
|
||||
rts
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#importonce
|
||||
#import "../libs/module.asm"
|
||||
#import "../libs/module.asm"
|
||||
#import "../core/pseudo.asm"
|
||||
|
||||
|
||||
// ========================================================
|
||||
|
@ -123,8 +124,7 @@ toDebug: {
|
|||
// copy
|
||||
// --------------------------------------------------------
|
||||
clone: {
|
||||
stx MemMap.MEMORY.tmpX
|
||||
sty MemMap.MEMORY.tmpY
|
||||
phr
|
||||
sei
|
||||
ldy #0
|
||||
ldx MemMap.MEMORY.size
|
||||
|
@ -146,8 +146,7 @@ clone: {
|
|||
bne md3
|
||||
cli
|
||||
md4:
|
||||
ldx MemMap.MEMORY.tmpX
|
||||
ldy MemMap.MEMORY.tmpY
|
||||
plr
|
||||
rts
|
||||
}
|
||||
|
||||
|
@ -163,8 +162,7 @@ clone: {
|
|||
// A = The byte to fill memory with
|
||||
// --------------------------------------------------------
|
||||
fill: {
|
||||
stx MemMap.MEMORY.tmpX
|
||||
sty MemMap.MEMORY.tmpY
|
||||
phr
|
||||
sei
|
||||
ldy #0
|
||||
ldx MemMap.MEMORY.size
|
||||
|
@ -185,8 +183,7 @@ fill: {
|
|||
bne md3
|
||||
cli
|
||||
md4:
|
||||
ldx MemMap.MEMORY.tmpX
|
||||
ldy MemMap.MEMORY.tmpY
|
||||
plr
|
||||
rts
|
||||
}
|
||||
|
||||
|
|
|
@ -58,14 +58,10 @@ toDebug: {
|
|||
// A = PET ASCII char to print
|
||||
// --------------------------------------------------------
|
||||
printPetChar: {
|
||||
pha
|
||||
stx MemMap.SCREEN.PrintPetCharX
|
||||
sty MemMap.SCREEN.PrintPetCharY
|
||||
phr
|
||||
jsr Print.petCharToScreenChar
|
||||
jsr Screen.sendChar
|
||||
ldy MemMap.SCREEN.PrintPetCharY
|
||||
ldx MemMap.SCREEN.PrintPetCharX
|
||||
pla
|
||||
plr
|
||||
rts
|
||||
}
|
||||
|
||||
|
|
1
main.asm
1
main.asm
|
@ -5,7 +5,6 @@
|
|||
|
||||
* = $8000 "Main"
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
.const MAIN_COLOR = $03
|
||||
.const BORDER_COLOR = $05
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#import "../libs/print.asm"
|
||||
#import "../libs/module.asm"
|
||||
#import "../core/init.asm"
|
||||
#import "../core/pseudo.asm"
|
||||
|
||||
.filenamespace WozShell
|
||||
|
||||
|
@ -11,8 +12,8 @@
|
|||
// ////// CONSTANTS ///////////////////////////////////////
|
||||
// ========================================================
|
||||
|
||||
.const CR = $0d
|
||||
.const R = $52
|
||||
.const CR = $0d
|
||||
.const R = $52
|
||||
|
||||
|
||||
// ========================================================
|
||||
|
@ -190,7 +191,8 @@ wozExec: {
|
|||
// We're in XAM mode now
|
||||
|
||||
ldx #2 // Copy 2 bytes
|
||||
SETADR: lda MemMap.SHELL.L-1,X // Copy hex data to
|
||||
SETADR:
|
||||
lda MemMap.SHELL.L-1,X // Copy hex data to
|
||||
sta MemMap.SHELL.STL-1,X // 'store index'
|
||||
sta MemMap.SHELL.XAML-1,X // and to 'XAM index'
|
||||
dex // Next of 2 bytes
|
||||
|
|
Loading…
Reference in New Issue