Важная информация

User Tag List

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя
Показано с 51 по 60 из 77

Тема: Пишем на ассемблере под эмулятором

  1. #51
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,826
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    239
    Поблагодарили
    101 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну поставь EI в начало - заработает. Только печатать не будет через RST 16, естессно. У тебя ж в снапшоте бейсик не инициализирован, а ты через его вызовы пытаешься печатать. И буквы маленькие не забудь.

    Вообще если хочешь через RST 16, то лучше кодовый блок записывать, а не снапшот, потом в эмуляторе его грузить. Или бейсик-загрузчик написать и записывать в trd. А то без инициализации бейсика это работать не будет.
    Последний раз редактировалось Shadow Maker; 04.09.2011 в 17:55.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  2. #52
    Guru Аватар для palsw
    Регистрация
    08.05.2011
    Адрес
    г. Измаил, Украина
    Сообщений
    3,216
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    Ну поставь EI в начало - заработает. Только печатать не будет через RST 16, естессно. У тебя ж в снапшоте бейсик не инициализирован, а ты через его вызовы пытаешься печатать.
    спасибо за ответ.я понял что мне еще рано на этот ассемблер переходить -слишком он сложный для начала.Буду в Gens4 дальше на реале всё набивать и на дискетку сохранять.там всё хоть работает

    добавление EI не дало результата,а вот замена букв на цифры 6,7,8,9,0 -работает !так в чём прикол с буковками?

    Код:
    device zxspectrum48
    	ORG   60000
           EI
           XOR   A
           CALL  8859
           LD    A,68
           LD    (23693),A
           CALL  3435
           LD    A,2
           CALL  5633
    ; Î÷èñòêà ñòðîêè äëÿ ââîäà èìåíè
           LD    HL,NAME
           LD    DE,NAME+1
           LD    BC,19
           LD    (HL)," "
           LDIR
    ; Âûâîä òàáëèöû ñèìâîëîâ â ðàìêå
           CALL  TABL
           CALL  LINES
           LD    A,68
           LD    (23693),A
           LD    BC,#506     ;íà÷àëüíûå êîîðäèíàòû êóðñîðà â òàáëèöå
           LD    E,0         ;íîìåð ñèìâîëà â ñòðîêå ââîäà
           SET   3,(IY+48)   ;ðåæèì ââîäà ïðîïèñíûõ áóêâ
    ; Óïðàâëåíèå êóðñîðîì è ïå÷àòü âûáðàííîãî ñèìâîëà â ñòðîêó
    KEYS   CALL  SETCUR      ;âûâîä êóðñîðà
           XOR   A
           LD    (23560),A
    WAIT   LD    A,(23560)   ;îæèäàíèå íàæàòèÿ êëàâèøè
           AND   A
           JR    Z,WAIT
           CP    "6"         ;ïåðåìåùåíèå êóðñîðà íà
           JR    Z,RIGHT     ; îäèí øàã âïðàâî
           CP    "7"         ;ïåðåìåùåíèå êóðñîðà
           JR    Z,LEFT      ; íà îäèí øàã âëåâî
           CP    "9"         ;ïåðåìåùåíèå êóðñîðà
           JR    Z,UP        ; íà îäèí øàã ââåðõ
           CP    "8"         ;ïåðåìåùåíèå êóðñîðà
           JR    Z,DOWN      ; íà îäèí øàã âíèç
           CP    "0"         ;ïå÷àòü âûáðàííîãî ñèìâîëà
           JR    Z,SELECT    ; â ñòðîêå ââîäà
           JR    KEYS
    ; Ïåðåìåùåíèå êóðñîðà âïðàâî
    RIGHT  LD    A,C         ;ïðîâåðêà äîñòèæåíèÿ êóðñîðîì
           CP    24          ; ïðàâîé ãðàíèöû òàáëèöû
           JR    NC,KEYS
           CALL  RESCUR      ;óäàëåíèå êóðñîðà íà ïðåæíåì ìåñòå
           INC   C           ;èçìåíåíèå ïîëîæåíèÿ êóðñîðà
           INC   C
           CALL  SETCUR      ;óñòàíîâêà êóðñîðà íà áóêâó òàáëèöû
           JR    KEYS
    ; Ïåðåìåùåíèå êóðñîðà âëåâî
    LEFT   LD    A,C         ;ïðîâåðêà äîñòèæåíèÿ êóðñîðîì
           CP    7           ; ëåâîé ãðàíèöû òàáëèöû
           JR    C,KEYS
           CALL  RESCUR
           DEC   C
           DEC   C
           CALL  SETCUR
           JR    KEYS
    ; Ïåðåìåùåíèå êóðñîðà ââåðõ
    UP     LD    A,B         ;ïðîâåðêà äîñòèæåíèÿ êóðñîðîì
           CP    6           ; âåðõíåé ãðàíèöû òàáëèöû
           JR    C,KEYS
           CALL  RESCUR
           DEC   B
           DEC   B
           CALL  SETCUR
           JR    KEYS
    ; Ïåðåìåùåíèå êóðñîðà âíèç
    DOWN   LD    A,B         ;ïðîâåðêà äîñòèæåíèÿ êóðñîðîì
           CP    11          ; íèæíåé ãðàíèöû òàáëèöû
           JR    NC,KEYS
           CALL  RESCUR
           INC   B
           INC   B
           CALL  SETCUR
           JR    KEYS
    ; Âûáîð ñèìâîëà, êîòîðûé çàòåì áóäåò íàïå÷àòàí â ñòðîêå èëè âûáîð
    ;  ôóíêöèè äëÿ ðåäàêòèðîâàíèÿ ýòîé ñòðîêè
    SELECT PUSH  BC
           PUSH  DE
           CALL  SND         ;çâóêîâîé ñèãíàë, èçäàâàåìûé ïðè
                             ; ïåðåìåùåíèè ñèìâîëà èç òàáëèöû â
                             ; íàáèðàåìóþ ñòðîêó
           POP   DE
           POP   BC
           LD    A,B
           CP    11
           JR    NZ,MOVE     ;ïå÷àòü ñèìâîëà
           LD    A,C
           CP    20
           JR    Z,DELETE    ;óäàëåíèå ñèìâîëà â ñòðîêå
           CP    22
           JR    Z,SPACE     ;ïå÷àòü ïðîáåëà â ñòðîêå
           CP    24
           RET   Z           ;âûõîä èç ïðîãðàììû
    ; Ïåðåìåùàåì ñèìâîë èç òàáëèöû â íàáèðàåìóþ ñòðîêó è ñìåùàåì êóðñîð
    ;  íà ïîçèöèþ âïðàâî, ïðè ýòîì äåëàåì ïðîâåðêó òîãî, ÷òîáû ñèìâîë
    ;  íå âûøåë çà çàäàííûå ãðàíèöû ñòðîêè (ñëåâà è ñïðàâà).
    MOVE   LD    A,E
           CP    20
           JP    NC,KEYS
           LD    D,0
           PUSH  BC
           PUSH  DE
           LD    A,B         ;ïî âåðòèêàëüíîé êîîðäèíàòå êóðñîðà
                             ; îïðåäåëÿåì àäðåñ äàííûõ ñòðîêè
                             ; òàáëèöû (STR1, STR2, STR3 èëè STR4)
           SUB   5
           LD    HL,D_STR
           LD    E,A
           ADD   HL,DE
           LD    E,(HL)
           INC   HL
           LD    D,(HL)
           EX    DE,HL
           LD    A,C         ;ïî ãîðèçîíòàëüíîé êîîðäèíàòå íàõîäèì
                             ; êîä ñèìâîëà â áëîêå äàííûõ
           SUB   6
           LD    C,A
           LD    B,0
           ADD   HL,BC
           POP   DE
           POP   BC
           LD    A,(HL)      ;ïîìåùàåì êîä ñèìâîëà â A
           LD    HL,NAME     ;îïðåäåëÿåì àäðåñ â ñòðîêå NAME
           ADD   HL,DE       ; äëÿ ââîäà ñèìâîëà
           LD    (HL),A      ;ïîìåùàåì ñèìâîë â ñòðîêó ââîäà
           CALL  PR_STR      ;âûâîäèì ñòðîêó ââîäà íà ýêðàí
           INC   E           ;ñìåùàåì ïîçèöèþ ââîäà âïåðåä
           JP    KEYS
    ; Óäàëåíèå íåïðàâèëüíî íàáðàííîãî ñèìâîëà
    DELETE LD    A,E         ;ïðîâåðêà äîñòèæåíèÿ íà÷àëà ñòðîêè ââîäà
           AND   A
           JP    Z,KEYS
           DEC   E           ;óìåíüøàåì ïîçèöèþ ââîäà
           LD    D,0
           LD    HL,NAME
           ADD   HL,DE
           LD    (HL)," "    ;çàìåíÿåì óäàëÿåìûé ñèìâîë ïðîáåëîì
           CALL  PR_STR
           JP    KEYS
    ; Ââîä ïðîáåëà
    SPACE  LD    A,E         ;ïðîâåðêà äîñòèæåíèÿ êîíöà ñòðîêè ââîäà
           CP    20
           JP    NC,KEYS
           LD    D,0
           LD    HL,NAME
           ADD   HL,DE
           LD    (HL)," "
           CALL  PR_STR
           INC   E           ;óâåëè÷èâàåì ïîçèöèþ ââîäà
           JP    KEYS
    ; Âûâîä êóðñîðà èçìåíåíèåì áàéòà àòðèáóòîâ
    RESCUR LD    A,68        ;PAPER 0, INK 4, BRIGHT 1
           JR    PRATTR
    ; Óäàëåíèå êóðñîðà âîññòàíîâëåíèåì áàéòà àòðèáóòîâ
    SETCUR LD    A,79        ;PAPER 1, INK 7, BRIGHT 1
    ; Âû÷èñëÿåì àäðåñ àòðèáóòîâ çíàêîìåñòà è çàíîñèì
    ;  ïî ýòîìó àäðåñó áàéò èç àêêóìóëÿòîðà
    PRATTR LD    L,B
           LD    H,0
           ADD   HL,HL
           ADD   HL,HL
           ADD   HL,HL
           ADD   HL,HL
           ADD   HL,HL
           PUSH  AF
           LD    A,H
           ADD   A,#58
           LD    H,A
           LD    A,L
           ADD   A,C
           LD    L,A
           POP   AF
           LD    (HL),A
           RET
    ; Ïîäïðîãðàììà ïå÷àòè òàáëèöû ñèìâîëîâ
    TABL   LD    DE,STR
           LD    BC,LENSTR
           JP    8252
    ; Ïîäïðîãðàììà ïå÷àòè ââåäåííîé ñòðîêè
    PR_STR PUSH  BC
           PUSH  DE
           LD    DE,STR5
           LD    BC,LENLIN
           CALL  8252
           POP   DE
           POP   BC
           RET
    ; Ïîäïðîãðàììà ðèñîâàíèÿ ðàìêè
    LINES  EXX
           PUSH  HL
           LD    A,66
           LD    (23695),A
           LD    BC,#8A2C    ;B = 138, C = 44
           CALL  8933
           LD    DE,#101
           LD    BC,160      ;B = 0, C = 160
           CALL  9402
           LD    DE,#FF01
           LD    BC,#3D00    ;B = 61, C = 0
           CALL  9402
           LD    DE,#1FF
           LD    BC,160
           CALL  9402
           LD    DE,#101
           LD    BC,#3D00
           CALL  9402
           POP   HL
           EXX
           RET
    ; Êîðîòêèé çâóêîâîé ñèãíàë
    SND    LD    B,30
           LD    HL,350
           LD    DE,2
    SND1   PUSH  BC
           PUSH  DE
           PUSH  HL
           CALL  949
           POP   HL
           POP   DE
           POP   BC
           SBC   HL,DE
           DJNZ  SND1
           RET
    ; Äàííûå òàáëèöû ñèìâîëîâ
    STR    DEFB  22,5,6
    STR1   DEFM  "1 2 3 4 5 6 7 8 9 0" ;ñèìâîëû ÷åðåç îäèí ïðîáåë
           DEFB  22,7,6
    STR2   DEFM  "A B C D E F G H I J"
           DEFB  22,9,6
    STR3   DEFM  "K L M N O P Q R S T"
           DEFB  22,11,6
    STR4   DEFM  "U V W X Y Z . d s e"
    STR5   DEFB  22,19,5,16,5,">",16,2
    NAME   DEFM  "····················"
           DEFB  16,5,"<"
    LENSTR EQU   $-STR       ;&#228;&#235;&#232;&#237;&#224; &#241;&#242;&#240;&#238;&#234;&#232; &#228;&#235;&#255; &#239;&#229;&#247;&#224;&#242;&#232; &#242;&#224;&#225;&#235;&#232;&#246;&#251;
    LENLIN EQU   $-STR5      ;&#228;&#235;&#232;&#237;&#224; &#241;&#242;&#240;&#238;&#234;&#232; &#226;&#226;&#238;&#228;&#224; &#232;&#236;&#229;&#237;&#232;
    ; &#192;&#228;&#240;&#229;&#241;&#224; &#228;&#224;&#237;&#237;&#251;&#245; &#241;&#232;&#236;&#226;&#238;&#235;&#238;&#226; &#226; &#242;&#224;&#225;&#235;&#232;&#246;&#229;
    D_STR  DEFW  STR1,STR2,STR3,STR4
       
       		savesna "probe.sna",#6000


    ---------- Post added at 17:11 ---------- Previous post was at 16:57 ----------

    только на пробел программа тоже не реагирует.только цифры ...
    Последний раз редактировалось palsw; 04.09.2011 в 18:09.
    Радио-Губитель Канал на YouTube

  3. #53
    Veteran Аватар для AER
    Регистрация
    18.11.2009
    Адрес
    пгт.Малиновка
    Сообщений
    1,355
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от palsw Посмотреть сообщение
    Буду в Gens4 дальше на реале
    а я в TASM

  4. #54
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,826
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    239
    Поблагодарили
    101 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от palsw Посмотреть сообщение
    только на пробел программа тоже не реагирует.только цифры ...
    Ну прочитай в той книжке, по который ты набиваешь, про прерывания.
    Прикол в том, что в этой переменной (KSTATE вроде она называется) данные появляются посредством бейсиковых прерываний (раз в прерывание обновляются данные). При старте из снапшота бейсик убит, и (я чет не помню, откуда там берется таблица соответствий кодов клавиш) по этой причине коды клавиш, которые суются в #5c08 - другие, а не те, какие надо, видимо только цифровым повезло, правильные коды вставляются. Дальше там у тебя в книжке должно быть написано про нормальную обработку клавиш через порт #fe, вот им лучше пользуйся, наиболее здравый метод.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  5. #55
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    >про нормальную обработку клавиш через порт #fe
    Угу, про ПЗУ лучше вообще не вспоминать, оно так гораздо проще выходит =)

  6. #56
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    После команды LD (23560),A поставь команду HALT - дождаться прерывания. А EI, если до этого не было DI, ничего не дает.
    А вообще, лучше применяй из этой же книжки другую процедуру опроса клавиш - по портам, а не по кодам клавиш.
    Последний раз редактировалось Andrew771; 05.09.2011 в 17:32.

  7. #57
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прикрутил 3 эмулятора под запуск снапшота. Spectaculator, EmuzWin, Unrel

    Как написать бат файл для эмуляторов EmuzWin, Unrel - чтоб не открывался второй, третий и т.д. эмулятор, а открывался как Spectaculator однократно? Возможно это?

  8. #58
    Member
    Регистрация
    11.04.2010
    Адрес
    Саяногорск
    Сообщений
    138
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как вариант, можно перед запуском снапшота убивать уже запущенный процесс командой taskkill, например
    Код:
    taskkill /F /IM emuzwin.exe
    Последний раз редактировалось Buyan; 06.09.2011 в 08:24.
    ZXM-Phoenix 1024 Rev.02+ProfROMUni+SMUC2b ZX-Evolution Rev.C ZX Spectrum +2A Yamaha YIS503IIIR Atari 65XE

  9. #59
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А передать аргумент (имя снапшота) в уже открытый эмулятор, или я глупость говорю

  10. #60
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от palsw Посмотреть сообщение
    добавление EI не дало результата,а вот замена букв на цифры 6,7,8,9,0 -работает !так в чём прикол с буковками?
    В общем, проверка в эмуляторе EmuZWin показала, что буквы нужно вставлять обязательно заглавные и в апострофах, а не в кавычках. А лучше еще - коды нужных клавиш в числовом виде. Тогда всё нормально работает.
    Команду HALT ставить не обязательно, но я ставлю, т.к. высер

    XOR A
    LD (23560),A
    WAIT LD A,(23560)
    AND A
    JR Z,WAIT

    больно уж крив. И идиоту понятно, что условие JR Z,WAIT много-много раз успеет выполниться, прежде чем распознается наконец клавиша по умалчиваемому прерыванию.

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Замена дисковода эмулятором диска
    от pbogdan в разделе Внешние накопители
    Ответов: 643
    Последнее: 15.02.2018, 15:45
  2. Арифметические процедуры на ассемблере
    от spensor в разделе Программирование
    Ответов: 27
    Последнее: 13.05.2017, 20:56
  3. Ответов: 30
    Последнее: 14.01.2011, 15:13
  4. Проблемы с эмулятором
    от Allser в разделе Софт
    Ответов: 1
    Последнее: 03.11.2006, 11:10
  5. Управление эмулятором из zx-программы
    от Spectre в разделе Эмуляторы
    Ответов: 42
    Последнее: 29.08.2006, 12:58

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •