PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
Тайминги ПК-01 и растактовка команд КР580ВМ80А. http://pc01.lviv.ua/forum/viewtopic.php?f=2&t=182 |
Page 1 of 1 |
Author: | NeoSpectruman [ 24 Aug 2012, 15:20 ] |
Post subject: | Тайминги ПК-01 и растактовка команд КР580ВМ80А. |
Так понимаю время выполнения команд в КР580ВМ80А идентично I8080. Имеются ли "дополнительные такты ожидания"? Типа http://code.google.com/p/vector06cc/wik ... on_Timings Имеется ли "медленная память"? Имеются ли Wait-ы при обращении к портам? Исполнение кода из видеопамяти? Торможение ЦП при этом? При включении Видео памяти в адресное пространство ЦП, что по адресам 0000-3FFF?(На чтение) 00, FF, или зеркальное отражение 4000-7FFF? Возможна ли туда запись(если зеркальное отражение). Неполная дешифрация портов? Частота ЦП 7-ми значное число?(знаю как у нас любят округлять) Частота кадров? Есть ли инфа сколько тактов в строке, сколько строк, сколько тактов во фрейме? Нет ли ни какой возможности синхронизироваться с началом фрейма, (на подобии того как в РК-шках)? Хотя наверное нет. Были ли доработки для этого? UPD. На ряд из этих вопросов найдены вполне конкретные ответы (см. ниже). |
Author: | liberation [ 24 Aug 2012, 15:34 ] |
Post subject: | Re: Тайминги ПК-01 и растактовка команд КР580ВМ80А. |
Ого, какая солидная и толковая подборка вопросов! Попробую дать хотя бы один ответ, об остальном всем миром будем думать. Quote: При включении Видео памяти в адресное пространство ЦП, что по адресам 0000-3FFF?(На чтение) 00, FF, или зеркальное отражение 4000-7FFF?
При включении видеоОЗУ, согласно словам старожилов, адресное пространство 0000-3FFF транслировалось в область 8000-BFFFF. Была элементарная доработка, которая исправляла такое положение дел, рекомендую заглянуть в тему "Upgrade ПК-01 "Львов", пункт №5.Возможна ли туда запись(если зеркальное отражение). Quote: Есть ли инфа сколько тактов в строке, сколько строк, сколько тактов во фрейме?
Загляните в тему "Запуск эмулятора ПК-01 "Львов" на Dingoo A320", там были высказаны кое-какие соображения по этому поводу.Если что, то мы можем переслать Ваши вопросы непосредственно разработчику ПК-01 "Львов". Он захаживает на наш форум. |
Author: | sadfsdfsdaf [ 25 Aug 2012, 14:51 ] |
Post subject: | Re: Тайминги ПК-01 и растактовка команд КР580ВМ80А. |
Quote: При включении видеоОЗУ, согласно словам старожилов, адресное пространство 0000-3FFF транслировалось в область 8000-BFFFF
хгм, звучит несколько странно, скорее 8000 можно бы было получить по адресу 0000 .....надо экспериментировать. я бы предположил, что эта область подключалась на ВНЕШ1 (там есть А0-А13). to NeoSpectruman: порты точно декодировались не полностью (когда-то давно я сканнер для портов на бейсике писал), как минимум маска 0x13 (0x1F), но тоже желательно бы проверить. с таймингами сложнее, нужны тесты.... и осциллограф. |
Author: | NeoSpectruman [ 25 Aug 2012, 16:03 ] |
Post subject: | Re: Тайминги ПК-01 и растактовка команд КР580ВМ80А. |
Немного порылся не яйцефоруме. Quote: b2m
И в педовикии
Сравнил высоту звука записи с реального Львова и из эмулятора - мой выше, чем реальный. Значит должны быть такты ожидания. Придётся понизить частоту процессора, чтобы звук был похож на реальный. Примерно похоже при 2150KHz. ivagor скорее даже 2,222 Мгц (20/9), а то в схеме резонатор на 20 МГц (если я не перепутал), ГФ24 делит на 9. Я все не мог понять, как в итоге получается 2,5 МГц. b2m Про частоту написано в РП http://lvovpc.xost.ru/article.shtml?id=2 А по схеме 2,222МГц, если в перечне деталей не наврали частоту резонатора. Но тогда он должен был бы быть на 22500КГц. ivagor Уважаемые реальщики! Если не сложно, посмотрите маркировку кварца в вашем компе. DDp ( Столько шума из-за... 20000кГц !!! На 60 контакте разъёма X1 (сигнал Ф2TTL) ~2.2MHz. На том же разъёме, никаких изменений на сигналах INTE, INTA, HLDA. Т.о. внутри компьютера процессор ничто не прерывает и не тормозит. (Впрочем, нечему - судя по схеме, и HOLD, и INT идут только на разъём X1) DDp Кстати, очень похоже, что у Львова развертка подобна Пентагону - 320 строк на фрейм, H=15625kHz, V=48.8Hz. Quote:
Комп'ютер використовував процесор КР580ВМ80А із частотою 2 МГц (пізніше 2,5 МГц).
Текст с педивикии настораживает(1-е 2 пункта). Хотя доверять ему у меня нет оснований.
Почтаково ПК-01 Львів постачався із окремим інтерпретатором мови Бейсик на касеті, пізніше його було внесено до ПЗП Ими был реализован «приставочный» вариант ПК «Львов», когда изделие модифицировалось таким образом, что в него вставлялся картридж (!) с игрой |
Author: | ivagor [ 13 Oct 2012, 15:13 ] |
Post subject: | Re: Тайминги ПК-01 и растактовка команд КР580ВМ80А. |
Еще одно подтверждение того, что тактовая частота процессора в ПК-01 2,2222 МГц - таблица нот из описания языка бейсик на стр. 15. Взял ноту ля первой октавы, которая д.б. близка к 440 Гц - код частоты будет 49 (из Дополненной и откорректированной Таблицы 2). При этом период подпрограммы DE98-DEBC составляет 5062 такта. Длительность периода в секундах д.б. Tля=1/440=0,00227273 Соответственно ожидаемая длительность отдельного такта Tтакт=Tля/5062=448,98 нс И тактовая частота, которая при такой длительности такта обеспечит ноту ля первой октавы частотой 440 Гц Fтакт=1/Tтакт=2227280 Гц, т.е. при подтверждаемой другими источниками частоте ПК-01 2,2222... МГц погрешность звучания будет очень небольшой. Все вышеприведенное справедливо для выполнения команд из ПЗУ, по разным косвенным свидетельствам при обращении процессора к ОЗУ есть тормоза. UPD. Обсуждение скорости работы кода в ОЗУ и ПЗУ вынесено в отдельную тему. |
Author: | liberation [ 11 Dec 2013, 05:52 ] |
Post subject: | Re: Тайминги ПК-01 и растактовка команд КР580ВМ80А. |
Просматривая исходники MESS, удалось найти ряд ТТХ (тактико-технических характеристик) ПК-01 "Львов", установить-угадать которые нашему творческому коллективу никак не удается уже второй год подряд. Трудно сказать, насколько они точны, но это уже хоть что-то конкретное. Надеюсь, еще найдется толковый чел, который сможет их уточнить. В сл. году, к примеру. Хотя бы... Code: Lviv technical information ========================== CPU: ---- 8080 2.5MHz (2MHz in first machines) Memory map: ----------- start-up map (cleared by the first I/O write operation done by the CPU): 0000-3fff ROM mirror #1 4000-7fff ROM mirror #2 8000-bfff ROM mirror #3 c000-ffff ROM normal map with video RAM off: 0000-3fff RAM 4000-7fff RAM 8000-bfff RAM c000-ffff ROM normal map with video RAM on: 0000-3fff mirrors 8000-bfff 4000-7fff video RAM 8000-bfff RAM c000-ffff ROM Interrupts: ----------- No interrupts in Lviv. Ports: ------ Only A4-A5 are decoded. A2-A3 is ignored in the console, but could be used by extension devices. C0-C3 8255 PPI Port A: extension slot output, printer data bits 0-4 joystick scanner output Port B: palette control, extension slot input or output sound on/off bit 7 sound on/off bits 0-6 palette select Port C: memory page changing, tape input and output, printer control, sound bits 0-3 extension slot input bits 4-7 extension slot output bit 7: joystick scanner input bit 6: printer control AC/busy bit 5: not used bit 4: tape in bit 3: not used bit 2: printer control SC/strobe bit 1: memory paging, 0 - video ram, 1 - ram bit 0: tape out, sound D0-D3 8255 PPI Port A: keyboard scaning Port B: keyboard reading Port C: keyboard scaning/reading Keyboard: --------- Reset - connected to CPU reset line Port D0 --------T-------T-------T-------T-------T-------T-------T-------ª | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +-------+-------+-------+-------+-------+-------+-------+-------+---ª | Shift | ; | | CLS | Space | R | G | 6 | 0 | +-------+-------+-------+-------+-------+-------+-------+-------+---+ | Q |Russian| | (G) | B | O | [ | 7 | 1 | +-------+-------+-------+-------+-------+-------+-------+-------+---+ | ^ | Key | J | (B) | @ | L | ] | 8 | 2 | +-------+-------+-------+-------+-------+-------+-------+-------+---+ | X | P | N | 5 | Alt | Del | Enter | Ready | 3 | +-------+-------+-------+-------+-------+-------+-------+-------+---+ Port D1 | T | A | E | 4 | _ | . | Run | Tab | 4 | +-------+-------+-------+-------+-------+-------+-------+-------+---+ | I | W | K | 3 | Latin | \ | : | - | 5 | +-------+-------+-------+-------+-------+-------+-------+-------+---+ | M | Y | U | 2 | / | V | H | 0 | 6 | +-------+-------+-------+-------+-------+-------+-------+-------+---+ | S | F | C | 1 | , | D | Z | 9 | 7 | L-------+-------+-------+-------+-------+-------+-------+-------+---- Port D2 --------T-------T-------T-------ª | 3 | 2 | 1 | 0 | +-------+-------+-------+-------+-----ª | Right | Home |ScrPrn |PrnLock| 4 | +-------+-------+-------+-------+-----+ | Up | F5 | F0 |ScrLock| 5 | +-------+-------+-------+-------+-----+ Port D2 | Left | F4 | F1 | Sound | 6 | +-------+-------+-------+-------+-----+ | Down | F3 | F2 | (R) | 7 | L-------+-------+-------+-------+------ Notes: CLS - clear screen (G) - clear screen with border and set COLOR 0,0,0 (B) - clear screen with border and set COLOR 1,0,6 (R) - clear screen with border and set COLOR 0,7,3 Sound - sound on/off ScrLock - screen lock PrnLock - printer on/off ScrPrn - screen and printer output mode Russian - russian keyboard mode Latin - latin keyboard mode Right - cursor key Up - cursor key Left - cursor key Down - cursor key Keyword - BASIC keyword Video: ----- Screen resolution is 256x256 pixels. 4 colors at once are possible, but there is a posiibility of palette change. Bits 0..6 of port 0xc1 are used for palette setting. One byte of video-RAM sets 4 pixels. Colors of pixels are corrected by current palette. Each bits combination (2 bits sets one pixel on the display), corrected with palette register, sets REAL pixel color. PBx - bit of port 0xC1 numbered x R,G,B - output color components == - "is equal" ! - inversion 00 R = PB3 == PB4; G = PB5; B = PB2 == PB6; 01 R = PB4; G = !PB5; B = PB6; 10 R = PB0 == PB4; G = PB5; B = !PB6; 11 R = !PB4; G = PB1 == PB5; B = PB6; Bit combinations are result of concatenation of approprate bits of high and low byte halfs. Example: ~~~~~~~~ Some byte of video RAM: 1101 0001 Value of port 0xC1: x000 1110 1101 0001 ---- 10 10 00 11 1st pixel (10): R = 1; G = 0; B = 1; 2nd pixel (10): R = 1; G = 0; B = 1; 3rd pixel (00): R = 0; G = 0; B = 0; 4th pixel (11): R = 1; G = 0; B = 0; Sound: ------ Buzzer connected to port 0xc2 (bit 0). Bit 7 of port 0xc1 - enable/disable speaker. Timings: -------- The CPU timing is controlled by a KR580GF24 (Sovietic copy of i8224) connected to a 18MHz(?) oscillator. CPU frequency must be 18MHz/9 = 2MHz. Memory timing uses a 8-phase clock, derived from a 20MHz(?) video clock (called VCLK0 here: in the schematics, it comes from pin 6 of V8, and it is labelled "0'" in the video clock bus). This clock is divided by G7, G6 and D5 to generate the signals we call VCLK1-VCLK11. The memory clock phases Phi0-Phi7 are generated in D7, whereas PHI'14 and PHI'15 are generated in D8. When the CPU accesses RAM, wait states are inserted until the RAM transfer is complete. CPU clock: 18MHz/9 = 2MHz memory cycle time: 20MHz/8 = 2.5MHz CPU memory access time: (min) approx. 9/20MHz = 450ns (max) approx. 25/20MHz = 1250ns pixel clock: 20MHz/4 = 5MHz screen size: 256*256 HBL: 64 pixel clock cycles VBL: 64 lines horizontal frequency: 5MHZ/(256+64) = 15.625kHz vertical frequency: 15.625kHz/(256+64) = 48.83Hz |<--------VIDEO WINDOW--------->|<----------CPU WINDOW--------->|<-- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ VCLK0 |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| | _ ___ ___ ___ ___ ___ ___ ___ ___ ___ VCLK1 |___| |___| |___| |___| |___| |___| |___| |___| |___| | _ _______ _______ _______ _______ VCLK2 |_______| |_______| |_______| |_______| |______| _ _______________ _______________ VCLK3 |_______________| |_______________| |_______ _ _______________________________ VCLK4 |_______________________________| |_______ _ _ _ PHI0 _| |_____________________________| |_____________________________| |_____ _ _ _ PHI1 _____| |_____________________________| |_____________________________| |_ _ _ PHI2 _________| |_____________________________| |_____________________________ _ _ PHI3 _____________| |_____________________________| |_________________________ _ _ PHI4 _________________| |_____________________________| |_____________________ _ _ PHI5 _____________________| |_____________________________| |_________________ _ _ PHI6 _________________________| |_____________________________| |_____________ _ _ PHI7 _____________________________| |_____________________________| |_________ _ PHI'14 _________________________________________________________| |_____________ _ PHI'15 _____________________________________________________________| |_________ __________ __________________________________________________ RAS* \___________/ \_a_________/ ______________ __________________________________________ CAS* \_______________/ \_a_____________/ _________________________________________________________________________ WR* \_b_________//////// _________________________________________________________________________ WRM* \\\\\\\\\\\\\\\\\\\\\\\\\\_b__________________________________/////////// _________________________________________________________________________ RDM* \\\\\\\\\\\\\\\\\\\\\\\\\\_c __________________________________/////////// _________________________________________________________________________ RA \\\\\\\\\\\\\\\\\\\\\\\\\\_a__________________________________/ DRAM ADDRESS video row /\ video column /XXX\CPU row (a)/\ CPU column (a) /\ video row a: only if the CPU is requesting a RAM read/write b: only if the CPU is requesting a RAM write c: only if the CPU is requesting a RAM read |
Page 1 of 1 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |