Line 1... |
Line 1... |
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
// LIGHT8080 CORE MICROCODE (V.1 November 1st 2007)
|
// LIGHT8080 CORE MICROCODE (V.2 February 12th 2012)
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
// NOTE: Except for bug fixing, there's no need to tinker with the microcode.
|
// NOTE: Except for bug fixing, there's no need to tinker with the microcode.
|
// Once the microcode table has been generated, this file is is not needed to
|
// Once the microcode table has been generated, this file is is not needed to
|
// synthesize or use the core.
|
// synthesize or use the core.
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
Line 59... |
Line 59... |
// #ei : Set interrupt enable register.
|
// #ei : Set interrupt enable register.
|
// #di : Reset interrupt enable register.
|
// #di : Reset interrupt enable register.
|
// #halt : Jump to microcode address 0x07 without saving return value.
|
// #halt : Jump to microcode address 0x07 without saving return value.
|
//
|
//
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
|
// V.1 November 1st 2007 -- Original version
|
|
// V.2 February 12th 2012 -- Fixed CY/AC clear bug with clr_acy flag
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// RESET ucode: from 0 to 2, but uinst at address 0 is never executed
|
// RESET ucode: from 0 to 2, but uinst at address 0 is never executed
|
__reset
|
__reset
|
|
|
NOP ; NOP
|
NOP ; NOP
|
Line 231... |
Line 235... |
|
|
__code "11100110"
|
__code "11100110"
|
__asm ANI #imm
|
__asm ANI #imm
|
|
|
JSR read_imm
|
JSR read_imm
|
T2 = _a ; _a = AND ; #end, #fp_rc
|
T2 = _a ; _a = AND ; #end, #fp_rc, #clr_acy
|
|
|
__code "11101110"
|
__code "11101110"
|
__asm XRI #imm
|
__asm XRI #imm
|
|
|
JSR read_imm
|
JSR read_imm
|
T2 = _a ; _a = XRL ; #end, #fp_rc
|
T2 = _a ; _a = XRL ; #end, #fp_rc, #clr_acy
|
|
|
|
|
__code "11110110"
|
__code "11110110"
|
__asm ORI #imm
|
__asm ORI #imm
|
|
|
JSR read_imm
|
JSR read_imm
|
T2 = _a ; _a = ORL ; #end, #fp_rc
|
T2 = _a ; _a = ORL ; #end, #fp_rc, #clr_acy
|
|
|
|
|
__code "11111110"
|
__code "11111110"
|
__asm CPI #imm
|
__asm CPI #imm
|
|
|
Line 283... |
Line 287... |
|
|
__code "10100sss"
|
__code "10100sss"
|
__asm ANA {s}
|
__asm ANA {s}
|
|
|
T1 = {s} ; NOP
|
T1 = {s} ; NOP
|
T2 = _a ; _a = AND ; #end, #fp_rc
|
T2 = _a ; _a = AND ; #end, #fp_rc, #clr_acy
|
|
|
__code "10101sss"
|
__code "10101sss"
|
__asm XRA {s}
|
__asm XRA {s}
|
|
|
T1 = {s} ; NOP
|
T1 = {s} ; NOP
|
T2 = _a ; _a = XRL ; #end, #fp_rc
|
T2 = _a ; _a = XRL ; #end, #fp_rc, #clr_acy
|
|
|
__code "10110sss"
|
__code "10110sss"
|
__asm ORA {s}
|
__asm ORA {s}
|
|
|
T1 = {s} ; NOP
|
T1 = {s} ; NOP
|
T2 = _a ; _a = ORL ; #end, #fp_rc
|
T2 = _a ; _a = ORL ; #end, #fp_rc, #clr_acy
|
|
|
__code "10111sss"
|
__code "10111sss"
|
__asm CMP {s}
|
__asm CMP {s}
|
|
|
T1 = {s} ; NOP
|
T1 = {s} ; NOP
|
Line 332... |
Line 336... |
|
|
__code "10100110"
|
__code "10100110"
|
__asm ANA M
|
__asm ANA M
|
|
|
JSR read_m
|
JSR read_m
|
T2 = _a ; _a = AND ; #end, #fp_rc
|
T2 = _a ; _a = AND ; #end, #fp_rc, #clr_acy
|
|
|
__code "10101110"
|
__code "10101110"
|
__asm XRA M
|
__asm XRA M
|
|
|
JSR read_m
|
JSR read_m
|
T2 = _a ; _a = XRL ; #end, #fp_rc
|
T2 = _a ; _a = XRL ; #end, #fp_rc, #clr_acy
|
|
|
__code "10110110"
|
__code "10110110"
|
__asm ORA M
|
__asm ORA M
|
|
|
JSR read_m
|
JSR read_m
|
T2 = _a ; _a = ORL ; #end, #fp_rc
|
T2 = _a ; _a = ORL ; #end, #fp_rc, #clr_acy
|
|
|
|
|
__code "10111110"
|
__code "10111110"
|
__asm CMP M
|
__asm CMP M
|
|
|