Uknc notes

From Felixl.com

Jump to: navigation, search

Contents

NZeemin 02:02, 5 July 2007 (EDT)

Отладочный режим в разрешении 1024 × 768 выглядит пока не очень, но мы над этим работаем…

NZeemin 03:34, 4 July 2007 (EDT)

После 3-месячного перерыва вновь возвращаюсь к работе над проектом. Дописывается инсталлятор, надеюсь в скором времени выдать первую публичную версию. Кстати, благодаря Феликсу у нас появилась эмуляция звука.

NZeemin 05:55, 31 March 2007 (EDT)

Обращаю ваше внимание на появление FAQ по эмулятору.

Felix 19:27, 28 March 2007 (EDT)

Ну вот мы и загрузились!!! огромное спасибо Alex_K за консультации :)

Image:Uknc_loaded.png

Image:Uknc_disk_basic.PNG

NZeemin 08:18, 27 March 2007 (EDT)

Феликс провел перетряску кода процессора, в результате чего мы сегодня имеем работающий Бейсик Вильнюс!
Мой скромный вклад состоит в программировании обращений к кассете ПЗУ и исправлении нескольких багов…

Image:UkncBTL-20070327.png

Спасибо Alex_K за консультации и код. Спасибо Арсению за время и силы, потраченные на получение дампа кассеты ПЗУ.

P.S. Если кто интересуется процессом загрузки из картриджа ПЗУ — дизасм тут: Uknc ROM Basic boot.

NZeemin 13:57, 23 March 2007 (EDT)

Если вставить в эмулятор НЕзагрузочный диск (а вставить его можно командой Emulator|Floppy0) и выбрать в начальном меню пункт 1 - диск, то спустя несколько секунд мы увидим вот такую картинку:

Image:UKNC-NoBootOnVolume.png

Это всё уже достижения Феликса, моих знаний для отладки таких чудес давно уже не хватает. Зато я делал для него отладчик :) Но об отладчике — в другой раз, вернёмся к надписи на экране. По крайней мере, я могу объяснить вам откуда она взялась.

С диска был запрошен на чтение сектор 1 дорожки 0. Эти данные прочитались в память ЦПУ с адреса 000000 и выглядят они вот так:

 000000  000240 000005 000404 000000 000000 041420 116020 000400  =··········C·°··
 000020  004067 000044 000015 000000 005000 041077 047517 026524  7·$·······?BOOT-
 000040  026525 067516 061040 067557 020164 067157 073040 066157  U-No boot on vol
 000060  066565 006545 005012 000200 105737 177564 100375 112037  ume···-·ъ-tЪЩ-·¦
 000100  177566 100372 000777 000000 000000 000000 000000 000000  vЪЗ-Ъ···········
 000120  000000 000000 000000 000000 000000 000000 000000 000000  ················
 000140  000000 000000 000000 000000 000000 000000 000000 000000  ················
 000160  000000 000000 000000 000000 000000 000000 000000 000000  ················

Этому соответствует вот такой код:

 000020  004067  JSR     R0, 000070
 000022  000044
 ---
 000024	; Тут собственно последовательность байт для передачи на терминал
 ---
 000070  105737  TSTB    @#177564		; Проверяем слово состояния терминала
 000072  177564
 000074  100375  BPL     000070		; Терминал готов принять очередной символ?
 000076  112037  MOVB    (R0)+, @#177566	; Отправляем символ на терминал
 000100  177566
 000102  100372  BPL     000070		; Появился не-символ - значит все выдали
 000104  000777  BR      000104		; Зацикливание

При переходе на адрес 000070, в регистр R0 попадает значение 000024, по которому находится серия символов для терминала. После конца последовательности находится НЕ-символ, отличающийся наличием верхнего бита, и этот НЕ-символ по совместительству является командой по адресу 000070.

P.S. Кстати, приведённый здесь дамп и код — это copy/paste из консоли нашего отладчика. Ну, кроме комментариев, конечно…

Felix 01:10, 23 March 2007 (EDT):

А мы в загрузчике RT11 :) -- ему пока, правда, что-то не живется, но тем-не менее.... Уфф -- ну и намучался я с контроллером дисковёрта...

Image:Uknc rt11 first.png

Felix 22:52, 20 March 2007 (EDT):

Ну вот мы и подошли к плотной работе с внешними устройствами -- ибо внутренние, согласно комплексному самотесту -- уже в порядке (не забудте -- что там тестируется все -- даже математика процессора)...


P.S. Оказывается эмулятор лучше чем настоящее железо -- у меня на машине -- на 3м проходе уже ошибки памяти появлялись

Image:Uknc test1.png

NZeemin 16:00, 20 March 2007 (EDT):

Сделал в меню команду сохранения скриншота, так что уже без лишних рамочек:

Image:UkncBTL-07.png

За кадром остаётся огромное количество работы, которую проделывает Феликс для того, чтобы вся эта радость заработала как надо…

2007/03/20

Сегодня УКНЦ полностью ожил -- тест показывает 0 ошибок и мы готовы к загрузке реального софта :

Image:Uknc_test1.png

2007/03/15

Третья запись за сегодня

УРА!!! исправил страааашную ошибку в процессоре --- заработало всё :) теперь видно -- что-же печаталось

Проблема была в адресации -- не учитывалась байтовая адресация!


Смотрим сюда --

Image:uknc-errors1.png


--Felix 19:04, 15 March 2007 (EDT)

2007/03/15

Вторая запись за сегодня --

по адресу 14142 - таблица адресов символов в фонте

sub_111272 - печать символа R0


--Felix 16:52, 15 March 2007 (EDT)

2007/03/15

Пример работы советских кодописателей == спагетти а не код

   ROM:111112 ; ---------------------------------------------------------------------------
   ROM:111112 
   ROM:111112 loc_111112:                             ; CODE XREF: ROM:111132
   ROM:111112                 add     @#22546, PC
   ROM:111116                 return  
   ROM:111120 ; ---------------------------------------------------------------------------
   ROM:111120                 trap    4
   ROM:111122                 inc     @#7064
   ROM:111126                 dec     @#7064
   ROM:111132                 beq     loc_111112
   ROM:111134                 tst     @#7060
   ROM:111140                 beq     loc_111204
   ROM:111142                 return  
   ROM:111144 ; ---------------------------------------------------------------------------
   ROM:111144                 inc     @#7066
   ROM:111150                 mov     @#23150, R5
   ROM:111154                 mov     34(R5), @#177016
   ROM:111162                 mov     40(R5), @#177020
   ROM:111170                 mov     40(R5), @#177022
   ROM:111176                 movb    70(R5), @64(R5)
   ROM:111204 
   ROM:111204 loc_111204:                             ; CODE XREF: ROM:111140
   ROM:111204                 movb    @22542, R0
   ROM:111210                 inc     @#22542
   ROM:111214                 bic     #200, @#22542 ; 'A'
   ROM:111222                 mov     #-66652, -(SP)
   ROM:111226                 bic     #-400, R0
   ROM:111232                 cmp     R0, #40 ; ' '
   ROM:111236                 bcc     loc_111260
   ROM:111240                 tstb    @#22552
   ROM:111244                 beq     loc_111252
   ROM:111246                 jmp     loc_111730
   ROM:111252 ; ---------------------------------------------------------------------------
   ROM:111252 
   ROM:111252 loc_111252:                             ; CODE XREF: ROM:111244
   ROM:111252                 asl     R0
   ROM:111254                 jmp     @13142(R0)
   ROM:111260 ; ---------------------------------------------------------------------------
   ROM:111260 
   ROM:111260 loc_111260:                             ; CODE XREF: ROM:111236
   ROM:111260                 cmpb    R0, #77 ; '?'
   ROM:111264                 blos    sub_111272
   ROM:111266                 bis     @#22556, R0
   ROM:111272 ; --------------- S U B R O U T I N E ---------------------------------------
   ROM:111272 
   ROM:111272 
   ROM:111272 sub_111272:                             ; CODE XREF: ROM:111264�j
   ROM:111272                                         ; ROM:111744�P ...
   ROM:111272                 asl     R0
   ROM:111274                 mov     14142(R0), R1
   ROM:111300                 mov     10(R5), R0
   ROM:111304                 mov     #-770, R2
   ROM:111310                 mov     #-754, R3
   ROM:111314                 mov     @R5, @R2
   ROM:111316                 add     56(R5), PC
   ROM:111322                 movb    (R1)+, R4
   ROM:111324                 mov     R4, @R3
   ROM:111326                 add     R0, @R2
   ROM:111330                 movb    (R1)+, R4
   ROM:111332                 mov     R4, @R3
   ROM:111334                 add     R0, @R2
   ROM:111336                 movb    (R1)+, R4
   ROM:111340                 mov     R4, @R3
   ROM:111342                 add     R0, @R2
   ROM:111344                 movb    (R1)+, R4
   ROM:111346                 mov     R4, @R3
   ROM:111350                 add     R0, @R2
   ROM:111352                 movb    (R1)+, R4
   ROM:111354                 mov     R4, @R3
   ROM:111356                 add     R0, @R2
   ROM:111360                 movb    (R1)+, R4
   ROM:111362                 mov     R4, @R3
   ROM:111364                 add     R0, @R2
   ROM:111366                 movb    (R1)+, R4
   ROM:111370                 mov     R4, @R3
   ROM:111372                 add     R0, @R2
   ROM:111374                 movb    (R1)+, R4
   ROM:111376                 mov     R4, @R3
   ROM:111400                 add     R0, @R2
   ROM:111402                 movb    (R1)+, R4
   ROM:111404                 mov     R4, @R3
   ROM:111406                 add     R0, @R2
   ROM:111410                 movb    (R1)+, R4
   ROM:111412                 mov     R4, @R3
   ROM:111414                 add     R0, @R2
   ROM:111416                 movb    (R1)+, R4
   ROM:111420                 mov     R4, @R3
   ROM:111422                 inc     @R5
   ROM:111424                 dec     16(R5)
   ROM:111430                 bne     locret_111624
   ROM:111432                 mov     22(R5), @R5
   ROM:111436                 mov     4(R5), 16(R5)
   ROM:111444 
   ROM:111444 loc_111444:                             ; CODE XREF: ROM:114222�J
   ROM:111444                 add     #54, 32(R5) ; ','
   ROM:111452                 cmp     32(R5), 26(R5)
   ROM:111460                 bne     loc_111470
   ROM:111462                 mov     24(R5), 32(R5)
   ROM:111470 
   ROM:111470 loc_111470:                             ; CODE XREF: sub_111272+166�j
   ROM:111470                 add     @32(R5), @R5
   ROM:111474                 dec     20(R5)
   ROM:111500                 bne     locret_111624
   ROM:111502                 add     74(R5), PC
   ROM:111506                 br      loc_111626
   ROM:111510 ; ---------------------------------------------------------------------------
   ROM:111510                 inc     20(R5)
   ROM:111514                 mov     #13, -(SP)
   ROM:111520                 add     #54, 30(R5) ; ','
   ROM:111526                 cmp     30(R5), #4670
   ROM:111534                 bne     loc_111544
   ROM:111536                 mov     #2500, 30(R5)
   ROM:111544 
   ROM:111544 loc_111544:                             ; CODE XREF: sub_111272+242�j
   ROM:111544                                         ; sub_111272+300�j
   ROM:111544                 mov     @#23170, R0
   ROM:111550                 beq     loc_111574
   ROM:111552                 bpl     loc_111556
   ROM:111554                 neg     R0
   ROM:111556 
   ROM:111556 loc_111556:                             ; CODE XREF: sub_111272+260�j
   ROM:111556                 cmp     R0, #14
   ROM:111562                 blos    loc_111614
   ROM:111564                 trap    0
   ROM:111566                 mov     @#23150, R5
   ROM:111572                 br      loc_111544
   ROM:111574 ; ---------------------------------------------------------------------------
   ROM:111574 
   ROM:111574 loc_111574:                             ; CODE XREF: sub_111272+256�j
   ROM:111574                 clr     @#23164
   ROM:111600                 mov     #2, @#7134
   ROM:111606                 movb    #177, @23160 ; ''
   ROM:111614 
   ROM:111614 loc_111614:                             ; CODE XREF: sub_111272+270�j
   ROM:111614                 call    sub_113344
   ROM:111620                 add     (SP)+, @#23170
   ROM:111624 
   ROM:111624 locret_111624:                          ; CODE XREF: sub_111272+136�j
   ROM:111624                                         ; sub_111272+206�j
   ROM:111624                 return  
   ROM:111626 ; ---------------------------------------------------------------------------
   ROM:111626 
   ROM:111626 loc_111626:                             ; CODE XREF: sub_111272+214�j
   ROM:111626                 jmp     loc_114316
   ROM:114316 ; ---------------------------------------------------------------------------
   ROM:114316 
   ROM:114316 loc_114316:                             ; CODE XREF: sub_111272+334�J
   ROM:114316                 clr     R0
   ROM:114320                 jmp     loc_115720
   ROM:115720 ; ---------------------------------------------------------------------------
   ROM:115720 
   ROM:115720 loc_115720:                             ; CODE XREF: ROM:114320�J
   ROM:115720                 sub     @32(R5), @R5
   ROM:115724                 mov     12(R5), 20(R5)
   ROM:115732                 sub     R0, 20(R5)
   ROM:115736                 mul     #54, R0 ; ','
   ROM:115742                 add     30(R5), R1
   ROM:115746                 add     74(R5), PC
   ROM:115752                 br      loc_115766
   ROM:115766 ; ---------------------------------------------------------------------------
   ROM:115766 
   ROM:115766 loc_115766:                             ; CODE XREF: ROM:115752�j
   ROM:115766                 mov     R1, 32(R5)
   ROM:115772                 add     @R1, @R5
   ROM:115774                 return  
   ROM:114216 ; ---------------------------------------------------------------------------
   ROM:114216 
   ROM:114216 loc_114216:                             ; CODE XREF: sub_114310+4�j
   ROM:114216                 sub     @32(R5), @R5
   ROM:114222                 jmp     loc_111444
   ROM:114222 ; ---------------------------------------------------------------------------
   ROM:114310 ; --------------- S U B R O U T I N E ---------------------------------------
   ROM:114310 
   ROM:114310 
   ROM:114310 sub_114310:                             ; CODE XREF: ROM:112030�P
   ROM:114310                 call    sub_114336
   ROM:114314                 br      loc_114216

--Felix 10:10, 15 March 2007 (EDT)

2007/03/14

Сегодня сделал спрайтовый вывод, так-же известный как символьный вывод. Где-то побита математика -- явно не правильно рассчитывается начало символа в фонте (не только смещено на половину но и не правильный символ). Причем судя по цвету -- сообщение об ошибке тестирования.

смотри картинку: мой прогресс --Felix 23:33, 14 March 2007 (EDT)