Hacker
#07
10 марта 1997 |
|
Мелочи жизни... - процедуры на все случае жизни.
Мелочи жизни... .BIG BRAIN CRAZY ALEX & ANDY Inc. Hi наши дорогие читатели, как известно из мелочей состоит наша жизнь. Опишем мы, как работают разные мелочи, которые постоянно вылетают из башки. ---------------------------------------------------------------- ; запись значения в порт. LD ВС, адрес порта (полный) LD А, данные 0UT (С),А ---------------------------------------------------------------- ; переброска кусков памяти LD HL, откуда (адрес) LD DE, куда (адрес) LD ВС, сколько (длинна) LDIR ---------------------------------------------------------------- ; переключение сегментов памяти LD А, номер сегмента + 1б LD ВС,327б5 0UT (С),А сегментов всего в SPECCY - 8, каждый по 1б кб. 2 - сегмент - это область с адреса 327б8 длинной в 1б384 5 - сегмент - это область с адреса 1б384 длинной в 1б384 все сегменты подключаются с адреса 49152. желательно щелкать сегменты полной адресацией порта (как написано здесь) иначе вас могут закидать кирпичами владельцы SC0RPI0N'ов. ---------------------------------------------------------------- ; чтение группы секторов с диска LD В, количество секторов LD HL, адрес загрузки в память LD С,05 ; команда "чтение группы секторов" LD DE,(#5CF4) ; текущий трек/сектор, в данном варианте ; берется из системной переменной TR-DOS. CALL #3D13 ---------------------------------------------------------------- ; карта памяти ПЗУ - с адреса 00000 по 1б383 дисплей высокого разрешения - с 1б384 по 22527 атрибутный экран - с 22528 по 23295 буфер принтера - с 2329б по 23551 системные переменные бейсика - с 23552 по 23733 системные переменные TR-DOS - с 23734 по 238бб начало бейсик программы - 238б7 ---------------------------------------------------------------- ; опрос клавиш раскладка клавиатуры SPECCY ┌───────────────────────────────────────┐ │ сброшенный бит │▒▒ ├───┬───┬───┬───┬───╖───┬───┬───┬───┬───┤▒▒ │D0 │D1 │D2 │D3 │D4 ║D4 │D3 │D2 │D1 │D0 │▒▒ ╔═╦═════╪═══╪═══╪═══╪═══╪═══╬═══╪═══╪═══╪═══╪═══╪═════╦═╗ ║П║#F7FE│ 1 │ 2 │ 3 │ 4 │ 5 ║ б │ 7 │ 8 │ 9 │ 0 │#EFFE║П║▒▒ ║ ║─────┼───┼───┼───┼───┼───╫───┼───┼───┼───┼───┼─────╢ ║▒▒ ║0║#FBFE│ Q │ W │ E │ R │ Т ║ Y │ U │ I │ 0 │ P │#DFFE║0║▒▒ ║ ║─────┼───┼───┼───┼───┼───╫───┼───┼───┼───┼───┼─────╢ ║▒▒ ║P║#FDFE│ А │ S │ D │ F │ G ║ Н │ J │ К │ L │ EN│#BFFE║P║▒▒ ║ ║─────┼───┼───┼───┼───┼───╫───┼───┼───┼───┼───┼─────╢ ║▒▒ ║Т║#FEFE│ CS│ Z │ Х │ С │ V ║ В │ N │ М │ SS│ SP│#7FFE║Т║▒▒ ╚═╩═════╧═══╧═══╧═══╧═══╧═══╩═══╧═══╧═══╧═══╧═══╧═════╩═╝▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Если кнопка находится в отжатом состоянии, то бит установлен в еденицу, а если нажата, то соответственно - в ноль. опрос LD ВС,#7FFE IN А,(С) BIT 0,А JP Z, адрес, на который перейдет программа по нажатию на пробел. ; нажатие любой клавиши (включая CAPS и SYMB0L SHIFT) М1 X0R А IN А,(#FE) CPL AND 31 JR Z,М1 ......... КЛАВИША НАЖАТА ---------------------------------------------------------------- ; очистка экрана LD HL,1б384 ИЛИ LD HL,23295 LD DE,1б385 LD DE,23294 LD ВС,б911 LD ВС,б911 LD (HL),0 LD (HL),0 LDIR LDDR ---------------------------------------------------------------- ; перевод адреса пикселов в адрес атрибутов LD HL, адрес в экране LD А,Н AND #18 RRCA RRCA RRCA 0R #58 LD Н,А на выходе в HL - адрес в атрибутах ; перевод адреса атрибутов в адрес пикселов LD HL, адрес атрибутов LD А,Н RRCA RRCA RRCA AND #18 0R #40 LD Н,А на выходе в HL - адрес в экране ---------------------------------------------------------------- ; получение адреса в экране по заданному столбцу и ряду LD В, столбец LD С, ряд LD А,С AND #18 0R #40 LD Н,А LD А,С AND 7 0R А RRA RRA RRA RRA ADD А,В LD L,А на выходе в HL - адрес в экране ---------------------------------------------------------------- ; адрес нижней линии в экране на входе в HL - адрес в экране на выходе в HL - адрес следующей линии INCH INC Н LD А,Н AND 7 RET NZ LD А,L ADD А,32 LD L,А RET С LD А,Н SUB 8 LD Н,А RET ; адрес верхней линии в экране на входе в HL - адрес в экране на выходе в HL - адрес следующей линии DECH LD А,Н DEC Н AND 7 RET NZ LD А,L SUB 32 LD L,А RET С LD А,Н ADD А,8 LD Н,А RET ---------------------------------------------------------------- ; процедура вычисления трека/сектора по смещению в секторах от- носительно заданных трека/сектора на входе: DE - текущий трек/сектор HL - количество пропускаемых секторов на выходе: DE - результат вычисления на входе: DE - текущий трек/сектор HL - количество пропускаемых секторов на выходе: DE - результат вычисления CALC LD ВС,#10 LD А,D ADD HL,DE LD D,А М1 AND А SBC HL,ВС JR С,М2 INC D JR М1 М2 ADD HL,ВС LD E,L RET ---------------------------------------------------------------- P.S: Надеемся, что эти мелочи облегчат кому-нибудь жизнь... ****************************************************************
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября