Simple 16Bit Accumulator Computer author Neil Franklin, last modification 2000.08.27 Memory Space 64k Addresses = 32Pages*2kWords*16Bits Register Set A Accumulator I Instruction Pointer (Load=Jump) B0 ev. Address Base 0 B1 " 1 Instruction Set OOOOIAAAAAAAAAAA OOOO=D SSSSDDDDFFFF OOOO=E ICCCCCCCCCCC OOOO=F I??????????? OOOO Operation Code 0=ORA/1=AND/2=XOR/3=TST A = A OOOO Mem(Addr) 4=ADD/5=SUB/6=???/7=CMP A = A OOOO Mem(Addr) 8=LDA, A = Mem(Addr) 9=STA, Mem(Addr) = A A=JMP, I = Addr B=JSR, A = I, I = Addr C=JAZ (Jump Acc Zero), I = Addr if A = 0 D=IOT? (In Out Transfer) E=LAI? (Load Acc Immediate), A = Const F=OOR (Operate On Registers) I Indirect, use Mem(Addr) for Addr AAAAAAAAAAA Direct Address 2kWords I? Addit Addr modes post-incr/pre-decr Mem(Addr) I? Addit Addr mode for Immediate BB? Address Base 0=zero-rel/1=I-rel or 0=I-rel/1=B-rel or additional 10=B0-rel, 11=B1-rel SSSS SlotID=0..F, F=CPU CCC Chip on card=0..7 FFFFF Function on Chip=0..1F TT? IO cycle type information I Invert Const before loading CCCCCCCCCCC Constant to be loaded I Invert Data to Acc ??????????? cla, shift/rot, etc. Virtual Memory Management (Table in CPU) 32Pages->512Pages * 2kWords Table Format: 32Entries*11Bits, bits as: 15..14 rw, 13..9 software use, 8..0 pageno Suggested Memory Layout (RAM only, boot via auto-DMA) 0000..FFFF 64kWords Data/Prog/OS RAM Suggested Memory Layout (with ROMs) 0000..7FFF 32kWords Data/Prog/OS RAM 8000..BFFF 16kWords Data/Prog/OS RAM or Prog/OS ROM C000..EFFF 12kWords Data/Prog/OS RAM or Prog/OS ROM Fs00..FsFF 16Slots*256Words OS/Driver ROMs [s=SlotID=0..F, F=CPU]