hyperspace85 . jmg 62 / NOTE: the original source has been discovered since the disassembly was made. / Please refer to http://www.masswerk.at/sources/hyperspace85.txt / (This attempt to reconstruct the source is just kept for a good laugh.) / hyperspace patch for spacewar 2b / reconstructed Macro source code based on disassembly / http://www.masswerk.at/sources/hyperspace85_disassembly.txt / reconstruction by Norbert Landsteiner, 2014 / this source has been proven to produce identical results with macro1.c / this is not an authentic source file / patched location in main program (spacewar 2b) 1456/ / a1-1 jmp hq4 1525/ / mg1-2 jda hq5 1642/ / mq1 jsp hti 2341/ / sr5 jmp hq3 / symbols of spacewar 2b used by the patch ml1=1540 mb1=1637 mx1=1567 my1=1577 mco=2254 mh1=2665 /\mh1 (variable) mh2=2666 /\mh2 (variable) mh3=2667 /\mh3 (variable) scw=2673 /\scw (variable) sr5=2341 ran=2654 /\ran (variable) nb1=3243 / macros used define initialize A,B law B dap A term define index A,B,C idx A sas B jmp C term define swap rcl 9s rcl 9s term define setup A,B law i B dac A term define count A,B isp A jmp B term / macro random using constants like spacewar 2b, but local to the patch define hrandom lac ran rar 1s xor hc6 /(335671 add hc6 /(335671 dac ran term / start of minskytron hyperspace patch / hyperspace85 by j.m. graetz 1962 for spacewar 2b 5240/ hp1, dap hpx / count up hr1, count ., hp2 dzm i hr1 jmp hpx hp2, lio i mx1 / pos x hr3, dio . lio i my1 / pos y hr2, dio . lac i ml1 / 1st control word hr5, dap . / save a copy hrandom add i mx1 / add x to ran and save dac i mx1 add i my1 / add y to ran + x and save dac i my1 law 364 dac i mb1 / count of instructions law i 20 hr4, dac . lio hc1 dio i mh1 lio hc2 dio i mh2 lio hc3 dio i mh3 initialize i ml1, hp3 jmp hp4 / this was presumingly a macro / this macro loads the contents of the address provided in A, / and deposits the lower 9 bits (9..17) bits in B / and the higher 9 bits (0..9) in B+1 define split A,B lac i A scr 9s sal 9s dac B dio B 1 term hp3, dap hpx law 325 dac i mb1 / count of instructions hp4, setup hn6, 4 split mh1, hs1 split mh2, hs2 split mh3, hs3 / calc and display arcs hp5, lac hs1 add hs2 sar 5s add hs1 1 dac hs1 1 sub hs2 1 sar 5s cma add hs1 dac hs1 lac hs2 add hs3 sar 8s add hs2 1 dac hs2 1 sub hs3 1 sar 4s cma add hs2 dac hs2 lac hs2 1 add i hr2 swap lac hs2 add i hr3 dpy-i lac hs3 add hs1 sar 1s add hs3 1 dac hs3 1 sub hs1 1 sar 6s cma add hs3 dac hs3 lac hs3 1 add i hr2 swap lac hs3 add i hr3 dpy-i count hn6, hp5 lac hs1 lio hs1 1 sar 9s scl 9s dac i mh1 lac hs2 lio hs2 1 sar 9s scl 9s dac i mh2 lac hs3 lio hs3 1 sar 9s scl 9s dac i mh3 count i hr4, hpx setup i hr4, 100 initialize i ml1, hr6 law 12 dac i mb1 hpx, jmp . hr6, dap hpx count i hr4, hpx lac i hr5 dap i ml1 law 2000 dac i mb1 lac hc7 dac i hq3 law i 500 dac i hr4 jmp hpx hp6, count i hr4, hq1 lac hc5 /(760000 dac i hq3 jmp hq1 hc1, 6 hc2, 10765 hc3, 767765 /-10012 / table of objects htb, 0 . 22/ / this might have been produced by a "constants" pseudo instruction, / but does not work in macro1.c (since "hc5" is used after the "constants" keyword) hc4, dzm hn5 hc5, opr hc6, 335671 hc7, jmp hp6 0 hq5, 0 hq6, dap hqx lac hq5 dac nb1 1 initialize hq7, htb hq7, dzm index hq7, hc4, hq7 setup htb, 4 dac htb 1 lac hc5 /(760000 dac hn3 dac hn3 1 hqx, jmp . / return / init table of objects hq4, law htb dap hr1 hn1=htb 2 law hn1 dap hr3 hn2=hn1 2 law hn2 dap hr2 hn3=hn2 2 law hn3 dap hq3 hn4=hn3 2 law hn4 dap hr4 hn5=hn4 2 law hn5 dap hr5 hn6=hn5 2 hs1=hn6 1 hs2=hs1 2 hs3=hs2 2 jmp ml1 / resume main /jmp rs0 / patched for auto-restart hq3, xct . / check for hyperbutton active lac scw cma and i mco sma jmp hq1 ral 1s spa jsp hp1 hq1, lio scw jmp sr5+1 / return to main . 10/ /space for patches(?) hti, dap htx / here from end of comparison and display loop idx mx1 idx hr1 idx hr3 idx hr2 idx hq3 idx hr4 idx hr5 htx, jmp . / return start