User Tag List

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

Тема: Восстановление Специалистов.

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

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

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию



    Ура загружается!

    В качестве тактового сигнала пока используется линия PC0, а не CS. Я решил постепенно двигаться, но у меня закончились чистые ПЗУ-хи.

    Так же пока МК поддерживает лишь одну команду, загрузку файла \boot.rks. Этого пока хватит, а потом будут все команды файловой системы.

    ---------- Post added at 23:42 ---------- Previous post was at 23:40 ----------

    Принимается критика по коду загрузчика:

    Код:
    ; Загрузчик с SD-карты для компьютера Специалист
    
         .org 0C800h
    
    ;----------------------------------------------------------------------------
    
    BUS_PORT  = 0F000h
    SEND_MODE = 10001010b ; Настройка: 1 0 0 A СH 0 B CL   1=ввод 0=вывод
    RECV_MODE = 10011010b
    
    ;----------------------------------------------------------------------------
    
    Restart:     
         ; Инициализация стека (аналогично стандартному монитору)
         LXI  SP, 08EE0h
    
         ; Начало передачи
         MVI  A, SEND_MODE
         STA  BUS_PORT+3      
    
         ; Передаем код команды
         LXI  H, 0F000h
         MVI  M, 013h
         CALL Pulse ; Этой команды не будет, когда будет использоваться CS в качестве тактового сигнала
         MVI  M, 0B4h
         CALL Pulse ; Этой команды не будет
         MVI  M, 057h
         CALL Pulse ; Этой команды не будет
         MVI  M, 001h
         CALL Pulse ; Этой команды не будет
    
         ; Переключаемся в режим приема
         MVI  A, RECV_MODE
         STA  BUS_PORT+3
    
         ; МК должен ответить кодом 32h
         CALL PulseAndRecv ; Вместо CALL PulseAndRecv будет LDA 0FF00h или MOV A, M
         CPI  032h
         JNZ  Error
    
         ; Ждем пока МК прочитает файл
         CALL WaitForReady
    
         ; Если файл найден и прочитан, МК должен ответить кодом 0EAh
         CALL PulseAndRecv
         CPI  0EAh
         JNZ  Error
    
         ; Принимаем длину файла в DE
         call RecvWord
         MOV  D, B
         MOV  E, C
    
         ; Эти данные уже из файла - принимаем адрес загрузки в BC
         CALL RecvWord
         PUSH B
    
         ; Игнорируем длину из файла
         CALL RecvWord
         POP  B
         PUSH B
    
         ; Если размер файла <=512, то принять остаток X-4 байт и запустить
         LXI  H, 65535-512
         DAD  D
         JNC  L5
    
         ; Если размер файла был >512 байт, то принять остаток 512-4 байта
         LXI  H, 512-4
         
    L3:  CALL RecvBlock
    
         ; Уменьшаем счетчик на 512 байт
         DCR  D
         DCR  D
    
         ; Подождать
         CALL WaitForReady
    
         ; Если DE<=512, то принять остаток и запустить
         LXI  H, 65535-512
         DAD  D
         JNC  L4
    
         ; Принять 512 байт
         LXI  H, 512
         JMP  L3
    
    ;----------------------------------------------------------------------------
    
    L5:  ; Приём файла размером меньше 512 байт. 4 байта уже принято.
         DCX  D
         DCX  D
         DCX  D
         DCX  D
    
    L4:  ; Принимаем остаток файла размером <=512 байт.
         XCHG
         CALL RecvBlock
          
         ; Принимаем контрольный байт
         CALL PulseAndRecv
         CPI  0E1h
         JNZ  Error
    
         ; Запуск загруженной программы
         RET 
    
    ;----------------------------------------------------------------------------
    
    Error:
         ; Что бы не было конфликтов
         MVI  A, RECV_MODE
         STA  BUS_PORT+3      
     
         ; Добавить сброс МК
    
         ; Пауза и пропуск данных
         LXI  D, 1000h
    E2:  CALL Pulse
         DCR  E
         JNZ  E2
         DCR  D
         JNZ  E2
    
         JMP  Restart
    
    ;----------------------------------------------------------------------------
    ; Принять слово в BC. 
    ; Портим A.
    
    RecvWord:
        CALL PulseAndRecv
        MOV  C, A
        CALL PulseAndRecv
        MOV  B, A
        RET
        
    ;----------------------------------------------------------------------------
    ; Принять HL байт по адресу BC.
    ; Портим A.
    
    RecvBlock:
         INR H
         XRA A
         ORA L
         JZ RecvBlock2
    RecvBlock1:
         CALL PulseAndRecv
         STAX B             ; 7
         INX  B             ; 5
         DCR  L             ; 5
         JNZ  RecvBlock1    ; 10
    RecvBlock2:
         DCR  H             ; 5
         JNZ  RecvBlock1    ; 10
         RET
         
    ;----------------------------------------------------------------------------
    ; Ожидание готовности МК.
    ; Портим A.
    
    WaitForReady:
         CALL PulseAndRecv
         ORA  A
         JZ   WaitForReady
         DCR  A
         JNZ  Error         ; Нарушение протокола
         RET
    
    ;----------------------------------------------------------------------------
    ; Принять байт в A. Или отправить байт из регистра BUS_PORT.
    ; Эта подпрограмма будет исключена. Вмеcто PC0 будет использоваться CS.
    
    Pulse:
    PulseAndRecv:
         MVI  A, 1        
         STA  BUS_PORT+2
         XRA  A
         STA  BUS_PORT+2
         LDA  BUS_PORT
         RET
    
    .End
    Последний раз редактировалось vinxru; 23.01.2013 в 00:47.

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

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

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

Похожие темы

  1. Восстановление Scorpion ZS-256
    от AlexMik в разделе Scorpion
    Ответов: 127
    Последнее: 15.08.2013, 19:30
  2. восстановление Орион-128
    от sergey2b в разделе Орион
    Ответов: 1
    Последнее: 05.02.2011, 15:32
  3. Восстановление ПК Мастер-128
    от PKZX в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 3
    Последнее: 13.03.2010, 22:10
  4. Хочу выслушать мнения специалистов...
    от ILoveSpeccy в разделе Музыка
    Ответов: 23
    Последнее: 29.08.2008, 04:35

Ваши права

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