// 0000001111000000 // 960 // 0000111111110000 // 4080 // 0011100000011100 // 14364 // 0011111111111100 // 16380 // 0011100000011100 // 14364 // 0011100000011100 // 14364 // 0000011111111100 // 2044 // 0011111111111100 // 16380 // 0011110000111100 // 15420 // 0000111111111100 // 4092 // 0000111100111100 // 3900 // 0011110000111100 // 15420 // 0000111111110000 // 4080 // 0000001111000000 // 960 // 0000001111000000 // 0000001111000000 // 0000001111000000 // 0000111111110000 // 4080 //A @960 D=A @1000 M=D @4080 D=A @1001 M=D @14364 D=A @1002 M=D @16380 D=A @1003 M=D @14364 D=A @1004 M=D @14364 D=A @1005 M=D //R @2044 D=A @1006 M=D @16380 D=A @1007 M=D @15420 D=A @1008 M=D @4092 D=A @1009 M=D @3900 D=A @1010 M=D @15420 D=A @1011 M=D //I @4080 D=A @1012 M=D @960 D=A @1013 M=D @960 D=A @1014 M=D @960 D=A @1015 M=D @960 D=A @1016 M=D @4080 D=A @1017 M=D @SCREEN // Osoite määritellään alussa näytön vasemmaksi yläkulmaksi (tallennetaan A rekisteriin) D=A // siirretään D rekisteriin @address // Tehdään muuttuja RAM muistiin jossa ylläpidetään näytön kohtaa johon piirretään M=D // Alustetaan address muuttuja D rekisterin arvolla (näytön vasen ylänurkka (SCREEN = 16384)) @seuraava M=0 (ALKU) // kuunnellaan näppäintä @24576 D=M @ALKU D;JEQ // kuuntele näppäintä // näppäintä painettu @nappain // tallennetaan mikä näppäin M=D @nappain // tutkitaan oliko A D=M @65 D=D-A @DRAW_A D;JEQ @nappain // tutkitaan oliko R D=M @82 D=D-A @DRAW_R D;JEQ @nappain // tutkitaan oliko I D=M @73 D=D-A @DRAW_I D;JEQ @ALKU 0;JMP (DRAW_A) @1000 D=A @piirto // tallennetaan muistipaikka piirtofunktiolle M=D @PIIRTO_OSA 0;JMP (DRAW_R) @1006 D=A @piirto // tallennetaan muistipaikka piirtofunktiolle M=D @PIIRTO_OSA 0;JMP (DRAW_I) @1012 D=A @piirto // tallennetaan muistipaikka piirtofunktiolle M=D (PIIRTO_OSA) // päivitetään piirtopaikka @SCREEN D=A @seuraava D=D+M @address M=D @seuraava // yksi piirtopaikka oikealla seuraava kirjain M=M+1 // päivitetään seuraavan kirjaimen paikkaa @i M=0 // alustetaan indexi (LOOP) @6 // jos i == 6 ollaan piirretty kaikki D=A @i D=D-M @ALKU D;JEQ // aliohjelman paluuosoite, joka tallennetaan takaisin -muuttujaan @PALUUOSOITE D=A @takaisin M=D @ALIOHJELMA 0;JMP (PALUUOSOITE) // kasvatetaan indeksiä @i M=M+1 @LOOP 0;JMP (ALIOHJELMA) // haetaan piirroksen ensimmäinen muistipaikka @piirto D=M // haetaan indeksi jolla siirrytään piirroksen seuraavalle riville @i A=D+M D=M // D rekisterissä on piirrettävät 16 bittiä // Draw @address A=M M=D // siirry näytön seuraavalle riville @32 D=A @address M=M+D // hypätään pois aliohjelmasta @takaisin A=M 0;JMP (INFINITE_LOOP) @INFINITE_LOOP 0;JMP // ......111111111. // ...111111111111. // ...1111....1111. // .....1111111111. // .....1111..1111. // ...1111....1111. // ......1111...... // ....11111111.... // .1111......1111. // .11111111111111. // .1111......1111. // .1111......1111. // ......1111...... // ......1111...... // ......1111...... // ......1111...... // ......1111...... // ......1111......