Вариант с большими массивами, но с выбором управления.![]()
Вариант с большими массивами, но с выбором управления.![]()
USR это функция, которую можно прикрутить к любому оператору использующему числовые операнды. Например можно легко сделать BORDER USR XXXXX, или DIM A(USR XXXXX). Единственное, почему для вызова процедур в кодах используется RANDOMIZE - отсутствие влияния на выполняемую программу в бейсике, в то время, как все остальные операторы будут принимать за значение содержимое пары BC по выходу из процедуры. Если же выход из кодов не планируется, то можно вовсе намудрить что то вроде LIST USR или #OPEN USR.
Черта лысого! Команда RANDOMIZE n задает начало последовательности для оператора RND. Что в некоторых случаях делает ее и без того "не совсем случайной".
Если на выходе из кодовой процедуры в ВС будет "лежать" значение, которое не переваривает оператор - получим остановку с выводом сообщения об ошибке.
Если уж, так хочется, можно для этих целей использовать локальную переменную, значение, которой не критично на данном участке программы (к примеру, переменную "отработавшего" цикла): LET z= USR n
---------- Post added at 19:07 ---------- Previous post was at 19:04 ----------
Пойду писать игру на бесике...![]()
Последний раз редактировалось null_device; 17.03.2014 в 15:22.
Когда есть, но не знаешь где - это все равно, что нету.
Предлагаю опрос клавиш повесить на прерывания, и из массива брать переменные состояния нажатий клавиш. Иначе перекрёстное нажатие клавиш не получится красиво реализовать.
#00 - клавиша нажата
#FF - клавиша не нажата.
Вот, держите процедурку:
Код:ORG #8000 KEYS_ISR: PUSH HL PUSH DE PUSH BC PUSH AF LD HL,KEY_MAP LD DE,KEY_MAP+1 LD BC,40 LD (HL),L LDIR LD B,40 LD HL,KEY_MAP LD DE,KEYTAB SCANLP LD A,(DE) IN A,(#FE) INC DE EX DE,HL AND (HL) EX DE,HL INC DE JR Z,$+4 LD (HL),#FF INC HL DJNZ SCANLP POP AF POP BC POP DE POP HL EI RET KEYTAB DB #FD,1 ;#14 DB #7F,16 ;#23 DB #FE,8 ;#21 DB #FD,4 ;#16 DB #FB,4 ;#0C DB #FD,8 ;#17 DB #FD,16 ;#18 DB #BF,16 ;#19 DB #DF,4 ;#11 DB #BF,8 ;#1A DB #BF,4 ;#1B DB #BF,2 ;#1C DB #7F,4 ;#25 DB #7F,8 ;#24 DB #DF,2 ;#12 DB #DF,1 ;#13 DB #FB,1 ;#0A DB #FB,8 ;#0D DB #FD,2 ;#15 DB #FB,16 ;#0E DB #DF,8 ;#10 DB #FE,16 ;#22 DB #FB,2 ;#0B DB #FE,4 ;#20 DB #DF,16 ;#0F DB #FE,2 ;#1F DB #EF,1 ;#09 DB #F7,1 ;#00 DB #F7,2 ;#01 DB #F7,4 ;#02 DB #F7,8 ;#03 DB #F7,16 ;#04 DB #EF,16 ;#05 DB #EF,8 ;#06 DB #EF,4 ;#07 DB #EF,2 ;#08 DB #7F,1 ;#27 DB #BF,1 ;#1D DB #FE,1 ;#1E DB #7F,2 ;#26 ORG #8100 KEY_MAP: DS 41,#00 KEY_A EQU KEY_MAP+#00 KEY_B EQU KEY_MAP+#01 KEY_C EQU KEY_MAP+#02 KEY_D EQU KEY_MAP+#03 KEY_E EQU KEY_MAP+#04 KEY_F EQU KEY_MAP+#05 KEY_G EQU KEY_MAP+#06 KEY_H EQU KEY_MAP+#07 KEY_I EQU KEY_MAP+#08 KEY_J EQU KEY_MAP+#09 KEY_K EQU KEY_MAP+#0A KEY_L EQU KEY_MAP+#0B KEY_M EQU KEY_MAP+#0C KEY_N EQU KEY_MAP+#0D KEY_O EQU KEY_MAP+#0E KEY_P EQU KEY_MAP+#0F KEY_Q EQU KEY_MAP+#10 KEY_R EQU KEY_MAP+#11 KEY_S EQU KEY_MAP+#12 KEY_T EQU KEY_MAP+#13 KEY_U EQU KEY_MAP+#14 KEY_V EQU KEY_MAP+#15 KEY_W EQU KEY_MAP+#16 KEY_X EQU KEY_MAP+#17 KEY_Y EQU KEY_MAP+#18 KEY_Z EQU KEY_MAP+#19 KEY_0 EQU KEY_MAP+#1A KEY_1 EQU KEY_MAP+#1B KEY_2 EQU KEY_MAP+#1C KEY_3 EQU KEY_MAP+#1D KEY_4 EQU KEY_MAP+#1E KEY_5 EQU KEY_MAP+#1F KEY_6 EQU KEY_MAP+#20 KEY_7 EQU KEY_MAP+#21 KEY_8 EQU KEY_MAP+#22 KEY_9 EQU KEY_MAP+#23 KEY_SPC EQU KEY_MAP+#24 KEY_ENT EQU KEY_MAP+#25 KEY_CS EQU KEY_MAP+#26 KEY_SS EQU KEY_MAP+#27
Последний раз редактировалось Бука; 17.03.2014 в 16:21.
«Земля - слишком маленькая и хрупкая корзина, для того чтобы человечество держало в ней все свои яйца…» - Роберт Энсон Хайнлайн.
Электроника МК-61, Psion series 5mx.
Всем умеющим читать советую http://www.skeptik.net/conspir/moonhoax.htm http://lurkmore.to/Лунный_заговор
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)