User Tag List

Показано с 1 по 10 из 27

Тема: Печать двухбайтового числа без знака и со знаком в машкоде

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Пример не помешает.
    В первых версиях Sprite Graber'а имя файла (8 символов) с помощью ROM-editor'а запрашивалось вот так (в буфер по адресу Variables.input_buffer):
    Код:
    @chan_open              equ #1601
    @set_min                equ #16b0
    @editor                 equ #0f2c
    
    @flagx                  equ #5c71
    @k_cur                  equ #5c5b
    @err_sp                 equ #5c2d
    @worksp                 equ #5c61
    
    
    input_line:
            ld hl,flagx
            set 7,(hl)
            set 5,(hl)
            call set_min
    
            ld bc,#0001
            rst #30
            ld (hl),#0d
            ld (k_cur),hl
            ld hl,input_line_exit
            push hl
            ld (err_sp),sp
            call editor
            pop hl
            ld hl,(worksp)
            ld de,Variables.input_buffer
            ld b,#08
    input_line_copy:
            ld a,(hl)
            cp #0d
            jr z,input_line_exit
            ld (de),a
            inc hl
            inc de
            djnz input_line_copy
    input_line_exit:
            ld a,2
            call chan_open
            jp set_min
    - - - Добавлено - - -

    UPD: процедура нещадно портит err_sp, надо сохранять и восстанавилвать, иначе после любого rst #08 в ПЗУ случится вылет в параллельную вселенную.

    - - - Добавлено - - -

    UPD2: Если случится переполнение буфера или всякое STOP in INPUT, буфер по адресу Variables.input_buffer не изменится. Все подобные спецэффекты можно обрабатывать в процедуре, адрес которой запоминается на стеке перед занесением sp в err_sp. set_min при любом исходе категорически рекомендуется во избежание зажора навсегда памяти в workspace Basic'а. chan_open - по вкусу
    Последний раз редактировалось Alex Rider; 07.01.2017 в 17:14.
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

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

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

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

Похожие темы

  1. Вычисление числа Пи на ассемблере
    от perestoronin в разделе Разное
    Ответов: 330
    Последнее: 06.08.2025, 15:04
  2. ABS и SGN в машкоде
    от Oleg N. Cher в разделе Программирование
    Ответов: 19
    Последнее: 10.01.2017, 04:14
  3. Мнемокоманды и числа.
    от ALKO в разделе Программирование
    Ответов: 0
    Последнее: 15.02.2014, 03:49
  4. Определение числа сторон
    от mungo в разделе Внешние накопители
    Ответов: 1
    Последнее: 16.03.2012, 18:06
  5. Дисковод Sankyo - кому знаком?
    от nikor4 в разделе Внешние накопители
    Ответов: 3
    Последнее: 07.10.2011, 06:19

Ваши права

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