Вот мой вариант, вроде даже работал. Правда полностью так и не проверил, руки не дошли.
Делал "в лоб", так что вряд ли это самый оптимальный вариант.Код:PutPix: call GetPixAddr lxi B, shltbl add C mov C, A mov A, B aci 0 mov B, A di MAPMEM 0FFh ldax B ora m mov m, A MAPMEM 0FCh ei ret shltbl: 128,64,32,16,8,4,2,1 ; вычисляет адрес видеопамяти ; на входе: ; A - координата Y [0..191] ; C - координата X [0..255] ; на выходе: ; HL - адрес знакоместа ; A - смещение в байте по X [0..7] ; вычисляем по формуле: ; HI(addr) = (y/8)*256 ; LO(addr) = (x & F8)+(y%8) ;(y%8)*32+(x/8) GetPixAddr: mov L, A rar rar rar ani 11111b mov H, A ; H = (Y >> 3) * 256 mov A, L ani 111b mov L, A ; L = Y % 8 mov A, C ani 11111000b add L mov L, A mov A, C ani 111b ret


Ответить с цитированием
wtf