Actually I haven't had much time today , either, but I have finished the CP1610 version of the URM Interpreter - the advantage of a RISC type machine which only has two instruction formats is that it's fairly easy to code - 100 lines of C or Java, 2-300 of Assembler.
Initial tests of the most simple instructions (mov r0,#0) suggests it executes in 26 machine instruction cycles, about 1,000 instructions per second.
The slowest (outside things like delay instructions !) would be addpl 1(r0),2(r0). This is (in C) if (lastResult >= 0) Memory[Memory[0]+1] = Memory[Memory[0]+2] with tracking of carry, sign and zero of the result.
I haven't single stepped it but on current code takes 15 more instructions to evaluate the pl condition, 10 more instructions to calculate the RHS (2(r0)) and 8 more instructions to calculate the indexed indirection on the left hand side, i.e. 33 instructions, about 450 instructions per second. Though this is an unusual case, the worst case scenario on everything.
Branch/Branch Link and their psuedo operations ret and sys are quicker because the address decoding is much simpler.
Hi Paul,
ReplyDeleteThis is great to see that you are still around and programming new emulators like the Unisonic Champion 2711. Since you are coding this emulator based on all the infos that can be found on the Gimini Programmable 8800 (not 8950 like the old databooks), i was wondering if you got the zip file (this one: http://www.ccjvq.com/slydc/index/faq/2711/datafiles/datas/gimicro.rar ) from my web site.
Those files comes from Joe "intvnut" Zbiciak (author of the jzIntv emulator and SDK-1600 developpement kit). If you didn't got those files, then i hope they will help you out.
If there is anything else, don't hesitate to contact me at: slydc#yahoo.ca
Keep up the great work! :)
--- Sly DC ---
Hi Sly !
ReplyDeleteYes I did get a lot from your FAQ. I'd actually found it earlier but I didn't realise there was an actual machine based arund it.