6502.org members Bitwise and teamtempest (TT) have helped greatly by adapting both of their assemblers for the 65Org16...
They are the bridge to the success of new 6502-like cores!
Code: Select all
ITC DTC
================================================================================
NEXT: W <= (IP++) -- Ld *Code_Fld ; W <= (IP++) -- Ld *Code_Fld
PC <= ((W)) -- Jump Dbl Indirect; PC <= (W) -- Jump Indirect
================================================================================
ENTER: (RSP--) <= IP -- Push IP on RS ;(RSP--) <= IP -- Push IP on RS
IP <= W + 2 -- => Param_Fld ; IP <= W + 2 -- => Param_Fld
;NEXT
W <= (IP++) -- Ld *Code_Fld ; W <= (IP++) -- Ld *Code_Fld
PC <= ((W)) -- Jump Dbl Indirect; PC <= (W) -- Jump Dbl Ind
================================================================================
EXIT:
IP <= (++RSP) -- Pop IP frm RS ; IP <= (++RSP)-- Pop IP frm RS
;NEXT
W <= (IP++) -- Ld *Code_Fld ; W <= (IP++) -- Ld *Code_Fld
PC <= ((W)) -- Jump Dbl Indirect; PC <= (W) -- Jump Dbl Ind
================================================================================
Code: Select all
ITC-NEXT: LDX ,Y++ ; (8) (IP)->W, increment IP
JMP [,X] ; (6) (W)->temp, jump to adrs in temp
Code: Select all
DTC-NEXT: JMP [,Y++] ; (9) (IP)->temp, increment IP, jump to adrs in temp
; ("temp" is internal to the 6809)
Code: Select all
ITC DTC
================================================================================
NEXT: W <= (IP++) -- Ld *Code_Fld ; W <= (IP++) -- Ld *Code_Fld
PC <= (W) -- Jump Dbl Indirect; PC <= W -- Jump Indirect
================================================================================
ENTER: (RSP--) <= IP -- Push IP on RS ;(RSP--) <= IP -- Push IP on RS
IP <= W + 2 -- => Param_Fld ; IP <= W + 2 -- => Param_Fld
;NEXT
W <= (IP++) -- Ld *Code_Fld ; W <= (IP++) -- Ld *Code_Fld
PC <= (W) -- Jump Dbl Indirect; PC <= W -- Jump Dbl Ind
================================================================================
EXIT:
IP <= (++RSP) -- Pop IP frm RS ; IP <= (++RSP)-- Pop IP frm RS
;NEXT
W <= (IP++) -- Ld *Code_Fld ; W <= (IP++) -- Ld *Code_Fld
PC <= (W) -- Jump Dbl Indirect; PC <= W -- Jump Dbl Ind
================================================================================
Code: Select all
OSY LDY #imm => (3) LDS #imm | (4) OSY IND LDY #imm => LDS #imm
OSY CPY #imm => (3) CPS #imm | (4) OSY IND CPY #imm => CPS #imm
OSY STY zp => (4) STS zp | (7) OSY IND STY zp => STS (zp)
OSY STY zp,X => (4) STS zp,X | (7) OSY IND STY zp,X => STS (zp,X)
OSY LDY zp => (4) LDS zp | (7) OSY IND LDY zp => LDS (zp)
OSY LDY zp,X => (4) LDS zp,X | (7) OSY IND LDY zp,X => LDS (zp,X)
OSY CPY zp => (4) CPS zp | (7) OSY IND CPY zp => CPS (zp)
OSY DEY => (2) DES | (3) OSY IND DEY => DES
OSY TAY => (2) TAS | (3) OSY IND TAY => TAS
OSY INY => (2) INS | (3) OSY IND INY => INS
OSY PLY => (2) PLS | (3) OSY IND PLY => PLS
OSY TXS => (2) TXY | (3) OSY IND TXS => TXY
OSY STY abs => (5) STS abs | (8) OSY IND STY abs => STS (abs)
OSY LDY abs => (5) LDS abs | (8) OSY IND LDY abs => LDS (abs)
OSY CPY abs => (5) CPS abs | (8) OSY IND CPY abs => CPS (abs)
Code: Select all
fetch: lda 0,a
NEXT
Code: Select all
Core: M65C02A (2.1.0) M65C02A (2.3.0)
Number of Slice FFs: 125 131
Number of 4-input LUTs: 482 597
Number of Occupied Slices: 346 407
Number of BUFGMUXs: 1 1
Number of RAMB16BWEs 2 2
Best Case Achievable: 22.312 (1) 31.250 (2)
Notes:
(1) Single cycle memory operation, and single cycle BCD math operations.
(2) Part of a complete microcomputer implementation composed of 28 kB
of on-chip program/data memory, 16 channel vectored interrupt
handler, Kernel/User mode 4kB page MMU, 2 UARTs with 16 byte FIFOs,
and 1 SPI Master I/F with 16 byte FIFOs.