// 0000001111000000 // 960 // 0000001111000000 // 1111111111111111 // 1111111111111111 // 0000001111000000 // 0000001111000000 // 0000000000000000 // 0000000000000000 // 1111111111111111 // 1111111111111111 // 0000000000000000 // 0000000000000000 @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)) @100 D=A @raja M=D (ALKU) @24576 D=M //@0 //D=D+A // x86 assemblyssä tehtäisiin jotenkin näin (ja D ja A pitäisi vaihtaa x86 arkkitehtuurin rekistereiksi): ADD D,A,D @ALKU D;JEQ // kuuntele näppäintä // Jos näppäintä painettu niin suoritetaan ao. koodi @raja // A=M D=D-A @DRAW_MINUS D;JLT // if negative, jump to draw minus sign (DRAW_PLUS) @960 // ensimmäisen rivin bitit A rekisteriin D=A // siirretään ne D rekisteriin @address // Osoite määritelty alussa näytön vasemmaksi yläkulmaksi A=M // Haetaan näytön osoite M=D // kirjoitetaan näytön osoitteeseen D rekisterin arvo (ensimmäisen rivin bitit) @address // Asetetaan A rekisteriin näytön osoite, päivittämistä varten D=M // siirretään se D rekisteriin @32 // asetetaan A rekisteriin luku 32 (yhdellä rivillä 32 sanaa (32*16=512 bittiä)) D=D+A // hypätään seuraavalle riville näytöllä (piirretään vain näytön vasempaan reunaan) @address // A rekisteriin näytön osoitteen muistipaikka M=D // Tallennetaan uusi piirtoosoite adress muuttujaan @960 D=A @address A=M M=D @address D=M @32 D=D+A @address M=D D=-1 @address A=M M=D @address D=M @32 D=D+A @address M=D D=-1 @address A=M M=D @address D=M @32 D=D+A @address M=D @960 D=A @address A=M M=D @address D=M @32 D=D+A @address M=D @960 D=A @address A=M M=D @address D=M @32 D=D+A @address M=D @ALKU 0;JMP (DRAW_MINUS) // do nothing, blank line - only move to next line (miinus -bittikartan piirrossa on tyhjiä rivejä (eli valkoisia rivejä) @address D=M @32 D=D+A @address M=D // same effect as above, just with less commands @32 D=A @address M=M+D D=-1 @address A=M M=D @address D=M @32 D=D+A @address M=D D=-1 @address A=M M=D @address D=M @32 D=D+A @address M=D // do nothing, blank line - only move to next line @address D=M @32 D=D+A @address M=D // do nothing, blank line - only move to next line @address D=M @32 D=D+A @address M=D @ALKU 0;JMP (INFINITE_LOOP) @INFINITE_LOOP 0;JMP // Alla bittikartat, jossa nollat korvattu pisteillä, jotta kuvat paremmin visualisoituna // ......1111...... // ......1111...... // 1111111111111111 // 1111111111111111 // ......1111...... // ......1111...... // ................ // ................ // 1111111111111111 // 1111111111111111 // ................ // ................