; Tuomas Tynkkynen 2012-05-20 ; Piirtaa tekstia ruudulle. Koko ASCII toteutettu. ; Kaantamiseen menee ns. kauan. Piirtaminen on tosin sitten varsin nopeaa. ; Luultavasti pisin olemassaoleva titokone-ohjelma. main load r0, =4095 reset load r1, =33 loop call sp, putchar add r1, =1 comp r1, =127 jequ sp, reset jump sp, loop end svc sp, =halt ;;;;;;;;; putchar ;;;;;;;; ; put character to screen ; R0 = color ; R1 = ASCII character ; R2, R3 = scratch putchar load r2, cursor load r3, r2 mod r3, =160 ; (1) comp r3, =155 jles r0, @font_switch_0(r1) sub r2, =-1121(r3) jump r0, @font_switch_0(r1) ; assumes we still have r3 from (1) newline sub r2, =-1121(r3) store r2, cursor exit sp, =0 space add r2, =4 store r2, cursor exit sp, =0 cursor dc 8161 ; pointer to upper left corner pixel of the next character MINUS 32 bytes. ;;;;; font data starts ;;;;; x1_62 store r0, 672(r2) jump sp, x1_46 x1_46 store r0, 192(r2) store r0, 512(r2) jump sp, x1_36 x1_52 store r0, 672(r2) jump sp, x1_36 x1_36 store r0, 352(r2) store r0, 832(r2) add r2, =2 store r2, cursor exit sp, =0 x2_3756 store r0, 193(r2) store r0, 833(r2) jump sp, x2_1700 x2_3840 store r0, 672(r2) store r0, 833(r2) jump sp, x2_1536 x2_3900 store r0, 672(r2) store r0, 833(r2) jump sp, x2_1596 x2_156 store r0, 192(r2) store r0, 513(r2) jump sp, x2_24 x2_2392 store r0, 512(r2) store r0, 672(r2) store r0, 833(r2) jump sp, x2_24 x2_1536 store r0, 673(r2) store r0, 832(r2) add r2, =3 store r2, cursor exit sp, =0 x2_1596 store r0, 193(r2) store r0, 352(r2) jump sp, x2_1572 x2_24 store r0, 352(r2) jump sp, x2_8 x2_1728 store r0, 512(r2) store r0, 513(r2) jump sp, x2_1536 x2_8 store r0, 193(r2) add r2, =3 store r2, cursor exit sp, =0 x2_108 store r0, 192(r2) store r0, 353(r2) store r0, 512(r2) jump sp, x2_8 x2_3420 store r0, 192(r2) store r0, 832(r2) jump sp, x2_2392 x2_1700 store r0, 513(r2) jump sp, x2_1572 x2_1572 store r0, 192(r2) store r0, 353(r2) jump sp, x2_1536 x3_140360 store r0, 352(r2) store r0, 673(r2) store r0, 834(r2) jump sp, x3_1032 x3_185928 store r0, 834(r2) jump sp, x3_54856 x3_47808 store r0, 353(r2) jump sp, x3_47680 x3_139936 store r0, 194(r2) store r0, 512(r2) store r0, 834(r2) jump sp, x3_8320 x3_202000 store r0, 193(r2) store r0, 833(r2) jump sp, x3_136448 x3_33840 store r0, 193(r2) store r0, 194(r2) store r0, 832(r2) jump sp, x3_1024 x3_3584 store r0, 513(r2) jump sp, x3_2560 x3_234944 store r0, 353(r2) store r0, 833(r2) jump sp, x3_169280 x3_360 store r0, 192(r2) store r0, 194(r2) jump sp, x3_320 x3_233016 store r0, 833(r2) store r0, 834(r2) jump sp, x3_36408 x3_234808 store r0, 192(r2) store r0, 194(r2) store r0, 832(r2) jump sp, x3_202000 x3_186200 store r0, 192(r2) jump sp, x3_186192 x3_158592 store r0, 354(r2) store r0, 673(r2) store r0, 834(r2) jump sp, x3_19072 x3_88912 store r0, 193(r2) jump sp, x3_88896 x3_64 store r0, 352(r2) add r2, =4 store r2, cursor exit sp, =0 x3_201600 store r0, 353(r2) store r0, 354(r2) jump sp, x3_201216 x3_238744 store r0, 832(r2) store r0, 834(r2) jump sp, x3_74904 x3_252736 store r0, 832(r2) store r0, 834(r2) jump sp, x3_88896 x3_201216 store r0, 512(r2) store r0, 834(r2) jump sp, x3_69632 x3_233080 store r0, 352(r2) jump sp, x3_233016 x3_249720 store r0, 354(r2) jump sp, x3_249464 x3_88704 store r0, 672(r2) store r0, 833(r2) jump sp, x3_19072 x3_88096 store r0, 194(r2) store r0, 674(r2) jump sp, x3_71680 x3_178760 store r0, 192(r2) store r0, 834(r2) jump sp, x3_47680 x3_219760 store r0, 514(r2) store r0, 674(r2) jump sp, x3_201328 x3_19072 store r0, 353(r2) store r0, 674(r2) jump sp, x3_2560 x3_74904 store r0, 192(r2) store r0, 833(r2) jump sp, x3_9360 x3_43840 store r0, 354(r2) jump sp, x3_43584 x3_220432 store r0, 514(r2) store r0, 674(r2) jump sp, x3_202000 x3_19304 store r0, 512(r2) jump sp, x3_18792 x3_88936 store r0, 833(r2) jump sp, x3_23400 x3_4096 store r0, 672(r2) add r2, =4 store r2, cursor exit sp, =0 x3_151400 store r0, 513(r2) store r0, 834(r2) jump sp, x3_19304 x3_2560 store r0, 512(r2) store r0, 514(r2) add r2, =4 store r2, cursor exit sp, =0 x3_8320 store r0, 353(r2) store r0, 673(r2) add r2, =4 store r2, cursor exit sp, =0 x3_229376 store r0, 832(r2) store r0, 833(r2) store r0, 834(r2) add r2, =4 store r2, cursor exit sp, =0 x3_43144 store r0, 192(r2) store r0, 514(r2) store r0, 832(r2) jump sp, x3_8320 x3_23400 store r0, 672(r2) jump sp, x3_19304 x3_11904 store r0, 353(r2) store r0, 673(r2) jump sp, x3_3584 x3_249464 store r0, 674(r2) jump sp, x3_233080 x3_336 store r0, 193(r2) jump sp, x3_320 x3_69632 store r0, 833(r2) jump sp, x3_4096 x3_220960 store r0, 194(r2) store r0, 674(r2) jump sp, x3_204544 x3_238776 store r0, 194(r2) jump sp, x3_238744 x3_234056 store r0, 833(r2) store r0, 834(r2) jump sp, x3_37448 x3_18792 store r0, 514(r2) store r0, 674(r2) jump sp, x3_360 x3_185704 store r0, 192(r2) store r0, 194(r2) jump sp, x3_185664 x3_149880 store r0, 193(r2) store r0, 834(r2) jump sp, x3_18792 x3_120664 store r0, 513(r2) jump sp, x3_119640 x3_204624 store r0, 193(r2) store r0, 352(r2) jump sp, x3_204544 x3_115824 store r0, 352(r2) store r0, 674(r2) store r0, 833(r2) jump sp, x3_33840 x3_54856 store r0, 513(r2) store r0, 674(r2) jump sp, x3_37448 x3_237368 store r0, 672(r2) jump sp, x3_233272 x3_88896 store r0, 352(r2) store r0, 674(r2) jump sp, x3_72448 x3_169280 store r0, 352(r2) store r0, 832(r2) jump sp, x3_136448 x3_36408 store r0, 192(r2) store r0, 512(r2) store r0, 514(r2) jump sp, x3_33840 x3_320 store r0, 354(r2) jump sp, x3_64 x3_252776 store r0, 833(r2) jump sp, x3_187240 x3_237176 store r0, 672(r2) jump sp, x3_233080 x3_249656 store r0, 674(r2) jump sp, x3_233272 x3_253560 store r0, 674(r2) jump sp, x3_237176 x3_119640 store r0, 674(r2) store r0, 833(r2) jump sp, x3_37720 x3_40568 store r0, 352(r2) store r0, 672(r2) jump sp, x3_36408 x3_188240 store r0, 514(r2) jump sp, x3_186192 x3_74936 store r0, 194(r2) jump sp, x3_74904 x3_233272 store r0, 354(r2) jump sp, x3_233016 x3_88352 store r0, 354(r2) jump sp, x3_88096 x3_205488 store r0, 193(r2) store r0, 833(r2) jump sp, x3_139936 x3_1032 store r0, 192(r2) jump sp, x3_1024 x3_252792 store r0, 193(r2) jump sp, x3_252776 x3_37720 store r0, 193(r2) store r0, 354(r2) jump sp, x3_37448 x3_9360 store r0, 193(r2) store r0, 513(r2) jump sp, x3_8320 x3_33344 store r0, 512(r2) store r0, 832(r2) jump sp, x3_64 x3_140752 store r0, 352(r2) store r0, 354(r2) store r0, 834(r2) jump sp, x3_9360 x3_77472 store r0, 194(r2) store r0, 833(r2) jump sp, x3_11904 x3_72448 store r0, 354(r2) store r0, 512(r2) jump sp, x3_71680 x3_108696 store r0, 193(r2) store r0, 833(r2) jump sp, x3_43144 x3_122440 store r0, 514(r2) store r0, 833(r2) jump sp, x3_54856 x3_37448 store r0, 192(r2) store r0, 672(r2) jump sp, x3_33344 x3_66840 store r0, 193(r2) store r0, 354(r2) store r0, 833(r2) jump sp, x3_1032 x3_204544 store r0, 513(r2) store r0, 834(r2) jump sp, x3_72448 x3_47680 store r0, 672(r2) jump sp, x3_43584 x3_186192 store r0, 193(r2) store r0, 512(r2) jump sp, x3_185664 x3_201328 store r0, 193(r2) store r0, 194(r2) store r0, 352(r2) jump sp, x3_201216 x3_1024 store r0, 513(r2) add r2, =4 store r2, cursor exit sp, =0 x3_29120 store r0, 352(r2) store r0, 354(r2) store r0, 672(r2) store r0, 674(r2) jump sp, x3_8320 x3_38744 store r0, 513(r2) jump sp, x3_37720 x3_43584 store r0, 514(r2) store r0, 673(r2) jump sp, x3_33344 x3_136448 store r0, 354(r2) store r0, 513(r2) store r0, 834(r2) jump sp, x3_4096 x3_187240 store r0, 832(r2) store r0, 834(r2) jump sp, x3_23400 x3_185664 store r0, 674(r2) jump sp, x3_169280 x3_71680 store r0, 514(r2) jump sp, x3_69632 x3_75112 store r0, 513(r2) store r0, 673(r2) store r0, 833(r2) jump sp, x3_360 x3_188264 store r0, 513(r2) jump sp, x3_187240 x3_121688 store r0, 514(r2) jump sp, x3_119640 x3_253816 store r0, 672(r2) jump sp, x3_249720 x3_118128 store r0, 354(r2) store r0, 514(r2) jump sp, x3_115824 x4_11871520 store r0, 193(r2) store r0, 674(r2) store r0, 833(r2) store r0, 835(r2) jump sp, x4_1123584 x4_73728 store r0, 513(r2) store r0, 672(r2) add r2, =5 store r2, cursor exit sp, =0 x4_1123584 store r0, 352(r2) store r0, 354(r2) store r0, 832(r2) jump sp, x4_73728 x4_1198080 store r0, 355(r2) store r0, 514(r2) store r0, 673(r2) store r0, 832(r2) add r2, =5 store r2, cursor exit sp, =0 x4_1127680 store r0, 512(r2) jump sp, x4_1123584 x4_368640 store r0, 515(r2) store r0, 674(r2) jump sp, x4_73728 x4_9516288 store r0, 835(r2) jump sp, x4_1127680 x4_1129728 store r0, 355(r2) jump sp, x4_1127680 x4_9778576 store r0, 192(r2) store r0, 195(r2) store r0, 674(r2) jump sp, x4_9516288 x4_9586944 store r0, 352(r2) store r0, 835(r2) jump sp, x4_1198080 x4_10073344 store r0, 515(r2) store r0, 675(r2) jump sp, x4_9516288 x5_727362560 store r0, 355(r2) store r0, 674(r2) store r0, 834(r2) jump sp, x5_588942336 x5_368409920 store r0, 353(r2) store r0, 355(r2) store r0, 356(r2) store r0, 672(r2) store r0, 673(r2) store r0, 675(r2) jump sp, x5_356848960 x5_358269952 store r0, 356(r2) store r0, 674(r2) store r0, 833(r2) store r0, 835(r2) jump sp, x5_18514944 x5_588967456 store r0, 355(r2) jump sp, x5_588959264 x5_597347872 store r0, 675(r2) jump sp, x5_588959264 x5_1703936 store r0, 514(r2) store r0, 516(r2) store r0, 672(r2) add r2, =6 store r2, cursor exit sp, =0 x5_358274592 store r0, 192(r2) store r0, 196(r2) store r0, 354(r2) jump sp, x5_358269952 x5_748340672 store r0, 352(r2) store r0, 512(r2) store r0, 836(r2) jump sp, x5_211435968 x5_22500352 store r0, 356(r2) store r0, 514(r2) store r0, 672(r2) jump sp, x5_21304320 x5_21304320 store r0, 352(r2) store r0, 354(r2) store r0, 513(r2) store r0, 515(r2) store r0, 674(r2) store r0, 676(r2) add r2, =6 store r2, cursor exit sp, =0 x5_524752832 store r0, 194(r2) store r0, 196(r2) store r0, 514(r2) store r0, 832(r2) store r0, 834(r2) jump sp, x5_356848960 x5_588959264 store r0, 192(r2) store r0, 196(r2) store r0, 356(r2) jump sp, x5_588942336 x5_356848960 store r0, 193(r2) store r0, 195(r2) store r0, 833(r2) store r0, 835(r2) jump sp, x5_21304320 x5_496714176 store r0, 513(r2) store r0, 676(r2) store r0, 835(r2) jump sp, x5_211435968 x5_588942336 store r0, 353(r2) store r0, 832(r2) store r0, 836(r2) jump sp, x5_18514944 x5_18514944 store r0, 352(r2) store r0, 512(r2) store r0, 676(r2) jump sp, x5_1703936 x5_211435968 store r0, 193(r2) store r0, 194(r2) store r0, 195(r2) store r0, 356(r2) store r0, 675(r2) store r0, 833(r2) store r0, 834(r2) jump sp, x5_1703936 font_switch_0 nop r0, =space font_switch_1 nop r0, =space font_switch_2 nop r0, =space font_switch_3 nop r0, =space font_switch_4 nop r0, =space font_switch_5 nop r0, =space font_switch_6 nop r0, =space font_switch_7 nop r0, =space font_switch_8 nop r0, =space font_switch_9 nop r0, =space font_switch_10 nop r0, =newline font_switch_11 nop r0, =space font_switch_12 nop r0, =space font_switch_13 nop r0, =space font_switch_14 nop r0, =space font_switch_15 nop r0, =space font_switch_16 nop r0, =space font_switch_17 nop r0, =space font_switch_18 nop r0, =space font_switch_19 nop r0, =space font_switch_20 nop r0, =space font_switch_21 nop r0, =space font_switch_22 nop r0, =space font_switch_23 nop r0, =space font_switch_24 nop r0, =space font_switch_25 nop r0, =space font_switch_26 nop r0, =space font_switch_27 nop r0, =space font_switch_28 nop r0, =space font_switch_29 nop r0, =space font_switch_30 nop r0, =space font_switch_31 nop r0, =space font_switch_32 nop r0, =space font_switch_33 nop r0, =x1_46 font_switch_34 nop r0, =x3_360 font_switch_35 nop r0, =x5_368409920 font_switch_36 nop r0, =x5_524752832 font_switch_37 nop r0, =x4_9586944 font_switch_38 nop r0, =x4_11871520 font_switch_39 nop r0, =x2_108 font_switch_40 nop r0, =x2_2392 font_switch_41 nop r0, =x2_1700 font_switch_42 nop r0, =x5_22500352 font_switch_43 nop r0, =x3_11904 font_switch_44 nop r0, =x2_1728 font_switch_45 nop r0, =x3_3584 font_switch_46 nop r0, =x2_3840 font_switch_47 nop r0, =x4_1198080 font_switch_48 nop r0, =x3_252792 font_switch_49 nop r0, =x1_62 font_switch_50 nop r0, =x3_237368 font_switch_51 nop r0, =x3_249656 font_switch_52 nop r0, =x3_151400 font_switch_53 nop r0, =x3_249464 font_switch_54 nop r0, =x3_253560 font_switch_55 nop r0, =x3_149880 font_switch_56 nop r0, =x3_253816 font_switch_57 nop r0, =x3_249720 font_switch_58 nop r0, =x2_3900 font_switch_59 nop r0, =x2_1596 font_switch_60 nop r0, =x3_139936 font_switch_61 nop r0, =x3_29120 font_switch_62 nop r0, =x3_43144 font_switch_63 nop r0, =x3_66840 font_switch_64 nop r0, =x5_496714176 font_switch_65 nop r0, =x3_188240 font_switch_66 nop r0, =x3_120664 font_switch_67 nop r0, =x3_201328 font_switch_68 nop r0, =x3_121688 font_switch_69 nop r0, =x3_237176 font_switch_70 nop r0, =x3_40568 font_switch_71 nop r0, =x3_219760 font_switch_72 nop r0, =x3_188264 font_switch_73 nop r0, =x3_238776 font_switch_74 nop r0, =x3_88352 font_switch_75 nop r0, =x4_9778576 font_switch_76 nop r0, =x3_234056 font_switch_77 nop r0, =x5_588967456 font_switch_78 nop r0, =x5_597347872 font_switch_79 nop r0, =x3_88912 font_switch_80 nop r0, =x3_38744 font_switch_81 nop r0, =x5_748340672 font_switch_82 nop r0, =x3_186200 font_switch_83 nop r0, =x3_115824 font_switch_84 nop r0, =x3_74936 font_switch_85 nop r0, =x3_252776 font_switch_86 nop r0, =x3_88936 font_switch_87 nop r0, =x5_358274592 font_switch_88 nop r0, =x3_185704 font_switch_89 nop r0, =x3_75112 font_switch_90 nop r0, =x3_234808 font_switch_91 nop r0, =x2_3420 font_switch_92 nop r0, =x3_140360 font_switch_93 nop r0, =x2_3756 font_switch_94 nop r0, =x3_336 font_switch_95 nop r0, =x3_229376 font_switch_96 nop r0, =x2_156 font_switch_97 nop r0, =x3_220432 font_switch_98 nop r0, =x3_122440 font_switch_99 nop r0, =x3_201600 font_switch_100 nop r0, =x3_220960 font_switch_101 nop r0, =x3_204624 font_switch_102 nop r0, =x3_77472 font_switch_103 nop r0, =x3_118128 font_switch_104 nop r0, =x3_185928 font_switch_105 nop r0, =x1_52 font_switch_106 nop r0, =x3_88096 font_switch_107 nop r0, =x3_178760 font_switch_108 nop r0, =x3_238744 font_switch_109 nop r0, =x5_727362560 font_switch_110 nop r0, =x4_10073344 font_switch_111 nop r0, =x3_88704 font_switch_112 nop r0, =x3_47808 font_switch_113 nop r0, =x3_158592 font_switch_114 nop r0, =x4_1129728 font_switch_115 nop r0, =x3_115824 font_switch_116 nop r0, =x3_140752 font_switch_117 nop r0, =x3_252736 font_switch_118 nop r0, =x3_88896 font_switch_119 nop r0, =x5_358269952 font_switch_120 nop r0, =x3_185664 font_switch_121 nop r0, =x3_43840 font_switch_122 nop r0, =x3_234944 font_switch_123 nop r0, =x3_205488 font_switch_124 nop r0, =x1_62 font_switch_125 nop r0, =x3_108696 font_switch_126 nop r0, =x4_368640