User Tag List

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 31 по 40 из 69

Тема: "ZX-8088" - Даунгрейд компьютера "Ленинград". Часть 3

Комбинированный просмотр

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

    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    10,149
    Спасибо Благодарностей отдано 
    217
    Спасибо Благодарностей получено 
    776
    Поблагодарили
    420 сообщений
    Mentioned
    23 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Mick, извини, но в текущем варианте даже не хочется разбираться, надо упрощать "схему начального пуска". Если выбирать между этим вариантом и предлжением PVV, то я однозначно за его, подумаешь добавить регистр, зато просто и понятно.
    Не, ну какой вредный.

    Вот вариант с A19 - https://disk.yandex.ru/d/OoTICcrkyOMKEQ

    Можно еще один подрисовать, где по A19 рулить выбором ПЗУ или ОЗУ, но тогда сам понимаешь надо будет играться с сегментами и об этом надо будет помнить.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,398
    Спасибо Благодарностей отдано 
    765
    Спасибо Благодарностей получено 
    2,369
    Поблагодарили
    1,318 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для A19 надо добавить регистр. И если уж использовать А19, то еще проще было бы поделить адресное пространство пополам - A19=0 это RAM, A19=1 - ROM. Но я догадываюсь, что это предложение не найдет поддержки.

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

    Цитата Сообщение от ivagor Посмотреть сообщение
    Для A19 надо добавить регистр.
    Кстати, на мой взгляд логично было бы добавить регистр для A19 вместо D46.

  4. #3

    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    10,149
    Спасибо Благодарностей отдано 
    217
    Спасибо Благодарностей получено 
    776
    Поблагодарили
    420 сообщений
    Mentioned
    23 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Для A19 надо добавить регистр. И если уж использовать А19, то еще проще было бы поделить адресное пространство пополам - A19=0 это RAM, A19=1 - ROM. Но я догадываюсь, что это предложение не найдет поддержки.
    Думаю что в данном аспекте, обходимся минимум изменений. Если что то вырастит из этого, тогда да, а пока чистый эксперимент.
    А зачем регистр на A19?
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  5. #4

    Регистрация
    20.11.2017
    Адрес
    г. Ростов-на-Дону
    Сообщений
    352
    Спасибо Благодарностей отдано 
    30
    Спасибо Благодарностей получено 
    88
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Для A19 надо добавить регистр
    Для чего? он активем во время действия RD/ или WR/, заходит лишь на один вход TTL(добавляемой ЛЛ1).
    Цитата Сообщение от ivagor Посмотреть сообщение
    И если уж использовать А19, то еще проще было бы поделить адресное пространство пополам - A19=0 это RAM, A19=1 - ROM
    А здесь будут проблемы с адаптацией ПО, слишком отличаться будет стиль программирования от х80, хотя, конечно, возможно.

  6. #5

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,398
    Спасибо Благодарностей отдано 
    765
    Спасибо Благодарностей получено 
    2,369
    Поблагодарили
    1,318 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от PVV Посмотреть сообщение
    Для чего? он активем во время действия RD/ или WR/, заходит лишь на один вход TTL(добавляемой ЛЛ1).
    В тех даташитах, которые я читал, про A16-A19/S3-S6 написано так:
    ADDRESS/STATUS: During T1, these are the four most significant address lines for memory operations. During I/O operations, these lines are LOW. During memory and I/O operations, status information is available on these lines during T2, T3, TW, and T4.
    Цитата Сообщение от PVV Посмотреть сообщение
    А здесь будут проблемы с адаптацией ПО, слишком отличаться будет стиль программирования от х80, хотя, конечно, возможно.
    Какие проблемы и с адаптацией какого ПО? Правда это вопрос больше к Mickу. Мне кажется, что иметь 64 Кб озу лучше, чем 48.

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

    Цитата Сообщение от ivagor Посмотреть сообщение
    During T1, these are the four most significant address lines for memory operations. During I/O operations, these lines are LOW. During memory and I/O operations, status information is available on these lines during T2, T3, TW, and T4.
    И на временных диаграммах минимального режима так нарисовано. Например интеловский даташит, даташит 80с88 renesas

  7. #6

    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    10,149
    Спасибо Благодарностей отдано 
    217
    Спасибо Благодарностей получено 
    776
    Поблагодарили
    420 сообщений
    Mentioned
    23 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Какие проблемы и с адаптацией какого ПО? Правда это вопрос больше к Mickу. Мне кажется, что иметь 64 Кб озу лучше, чем 48.
    Точно стиль программирования тут будет отличаться.
    Да и тут не стоит задача именно использовать все 64кб. А так конечно интересная идея использовать A19 как разделение ПЗУ и ОЗУ. Кстати я так подумал, если разделять, то похоже надо будет активно юзать сегменты.


    Кстати вопрос про программирование.
    Как задать TASM чтобы он компилил с 0 а не со 100h
    Просто я в основном раньше com программки писал и там шапка простая

    .MODEL TINY
    .CODE
    .STARTUP

    В общем как получить бинарник вместо com файла.

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

    Цитата Сообщение от ivagor Посмотреть сообщение
    В тех даташитах, которые я читал, про A16-A19/S3-S6 написано так:
    ADDRESS/STATUS: During T1, these are the four most significant address lines for memory operations. During I/O operations, these lines are LOW. During memory and I/O operations, status information is available on these lines during T2, T3, TW, and T4.
    Похоже да, надо защелку ставить на A19 и по ALE защелкивать. Но это типа уже ТМ7 похоже
    То есть как бы назад к первоначальной идеей с триггером не вернуться.
    Последний раз редактировалось Mick; 02.06.2022 в 15:00.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  8. #7

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,398
    Спасибо Благодарностей отдано 
    765
    Спасибо Благодарностей получено 
    2,369
    Поблагодарили
    1,318 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Mick Посмотреть сообщение
    Как задать TASM чтобы он компилил с 0 а не со 100h
    tasmом (если это не Telemark Assembler) с универа не пользовался (зато недавно пользовался fasmом), но вроде у практически всех асмов x86 адрес компиляции задается по org

  9. #8

    Регистрация
    20.11.2017
    Адрес
    г. Ростов-на-Дону
    Сообщений
    352
    Спасибо Благодарностей отдано 
    30
    Спасибо Благодарностей получено 
    88
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Цитата Сообщение от PVV
    Для чего? он активем во время действия RD/ или WR/, заходит лишь на один вход TTL(добавляемой ЛЛ1).
    В тех даташитах, которые я читал, про A16-A19/S3-S6 написано так:
    ADDRESS/STATUS: During T1, these are the four most significant address lines for memory operations. During I/O operations, these lines are LOW. During memory and I/O operations, status information is available on these lines during T2, T3, TW, and T4.
    Да, что то я стал забывать, посмотрел, действительно, надо его защелкивать инверсным ALE на тм2. И как раз увидел еще момент - на А18 в моменты активности /RD или /WR присутствует флаг разрешения прерываний. Соответственно можно эту ножку именно по /RD защелкивать на второй половинке тм2, и этим управлять разрешением прерывания от NMI.

  10. #9

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,398
    Спасибо Благодарностей отдано 
    765
    Спасибо Благодарностей получено 
    2,369
    Поблагодарили
    1,318 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Видишь, как здорово, даже ошибиться особо негде (я про схему начального пуска).

  11. #10

    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    10,149
    Спасибо Благодарностей отдано 
    217
    Спасибо Благодарностей получено 
    776
    Поблагодарили
    420 сообщений
    Mentioned
    23 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Видишь, как здорово, даже ошибиться особо негде (я про схему начального пуска).
    Поправил печатную плату согласно последней схеме с A19



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

    Тут в качестве оффтопа нашел у себя на работе старую плату от факса и там вон какая плюшка



    UPD70208 - NEC V40 и он тоже умеет эмулировать 8080А, ссылка на даташит - https://www.google.com/url?sa=t&rct=...54273844674378

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

    Нашел пример, как типа эмуляция включается V20

    Код:
    ;	SBCV20 terminal test program
    ;	Assembler: asm86.com/asm86.cmd
    ;
    MEM	equ	0000h	;Memory top
    ROM	equ	8000h	;Rom top
    STACK	equ	8000h	;Stack top
    REGAD	equ	00h	;8251 data register
    REGAC	equ	01h	;8251 control register
    RTSHIG	equ	17h	;RTS high
    RTSLOW	equ	37h	;RTS low
    ;
    BUFSIZ	equ	128		;Buffer size(2^n, max128)
    FULSIZ	equ	BUFSIZ*14/16	;Buffer almost full
    ;
    	dseg	MEM
    	org	0000h
    ;
    ;	Interrupt vector
    DEVERR	rw	2	;Devide error
    BRKFLG	rw	2	;Break flag
    NMIREQ	rw	2	;Non maskable interrupt
    BR3INS	rw	2	;BRK3 instruction
    BRVINS	rw	2	;BRKV instruction
    CHKINS	rw	2	;CHKIND instruction
    	org	0400h-20
    VGETCH	rw	2	;CALLN 251
    VKBHIT	rw	2	;CALLN 252
    VPUTCH	rw	2	;CALLN 253
    VBRKEM	rw	2	;BRKEM 254
    INTREQ	rw	2	;External interrupt
    ;
    ;	Receive buffer
    RECBUF	rb	BUFSIZ
    RBFRDP	rw	1
    RBFWTP	rw	1
    RBFCNT	rb	1
    ;
    	cseg	MEM
    	org	ROM
    ;
    ;	8251 -> buffer by interrupt
    ;
    intsr:	push	ax	;Save ax
    	push	bx	;Save bx
    	in	al,REGAD	;Get char
    	mov	ah,al		;Save it
    ;
    	mov	al,RBFCNT	;Get count of chars
    	cmp	al,BUFSIZ	;Buffer full?
    	jz	isext		;If yes, ignore
    	inc	al		;Count up
    	mov	RBFCNT,al	;Update
    	cmp	al,FULSIZ	;Buffer almost full?
    	jnz	isst1		;If no, skip flow control
    	mov	al,RTSHIG	;RTS control
    	out	REGAC,al	;Out it
    ;
    isst1:	mov	bx,RBFWTP	;Get write point
    	mov	al,ah		;Restore char
    	mov	[bx],al		;Write char into buffer
    ;
    	inc	bl		;Next write point
    	and	bl,BUFSIZ-1	;Wrap
    	mov	RBFWTP,bx	;Update
    ;
    isext:	pop	bx	;Restore bx
    	pop	ax	;Restore ax
    	sti		;Enable interrupt
    	iret
    ;
    ;	buffer -> al
    getch:	push	bx	;Save bx
    ;
    gcst1:	mov	al,RBFCNT	;Get count of chars
    	cmp	al,0		;Buffer enpty?
    	jz	gcst1		;If yes, wait
    	cli			;Disable interrupt
    ;
    	mov	al,RBFCNT	;Critical timing measures
    	cmp	al,FULSIZ	;Need flow control?
    	jnz	gcst2		;If no, skip flow control
    	mov	ah,al		;Save char
    	mov	al,RTSLOW	;RTS control
    	out	REGAC,al	;Out it
    	mov	al,ah		;Restore char
    gcst2:	dec	al		;Count down
    	mov	RBFCNT,al	;Update
    ;
    	mov	bx,RBFRDP	;Get read point
    	mov	al,[bx]		;Read char from buffer
    ;
    	inc	bl		;Next read point
    	and	bl,BUFSIZ-1	;Wrap
    	mov	RBFRDP,bx	;Update
    ;
    	pop	bx	;Restore bx
    	sti		;Enable interrupt
    	ret
    ;
    ;	al -> 8251
    putch:	push	ax		;Save char
    ;
    pcst1:	in	al,REGAC	;Get status
    	and	al,01h		;check TxBUF enpty
    	jz	pcst1		;wait for empty
    ;
    	pop	ax		;Restore char
    	out	REGAD,al	;Out it
    	ret
    ;
    ;	put string
    puts:	cld			;set DF for SI increment
    ptst1:	lodsb			;get data to AL and SI++
    	cmp	al,00h		;check tail
    	jz	ptext		;if tail, return
    	call	putch		;display a charactor
    	jmp	ptst1		;loop until tail
    ptext:	ret
    ;
    ;	message
    ckcpu	db	13,10,'PROCESSOR: ',0
    nec	db	'NEC V20(uPD70108)',13,10,0
    intel	db	'Intel 8088',13,10,0
    ;
    ;	CALLN wrapping
    ngetch:	call	getch
    	iret
    nkbhit:	mov	al,RBFCNT	;Get count of chars
    	iret
    nputch:	call	putch
    	iret
    ;
    ;	start
    start:	mov	ax,cs		;set com model
    	mov	ds,ax
    	mov	es,ax
    	mov	ss,ax
    	mov	sp,STACK	;set stack
    ;
    	mov	VGETCH,offset ngetch
    	mov	VGETCH+2,ax
    	mov	VKBHIT,offset nkbhit
    	mov	VKBHIT+2,ax
    	mov	VPUTCH,offset nputch
    	mov	VPUTCH+2,ax
    	mov	VBRKEM,offset emu80
    	mov	VBRKEM+2,ax
    	mov	INTREQ,offset intsr
    	mov	INTREQ+2,ax
    ;
    ;	8251 setup
    	mov	dx,REGAC
    	mov	al,00h	;Default mode or no operation
    	out	dx,al	;Try command
    	out	dx,al	;Try command
    	out	dx,al	;Try command
    	mov	al,40h	;reset
    	out	dx,al	;Delay
    	mov	CX,16	;Delay
    	loop	$	;Delay
    	mov	al,4eh	;mode
    	out	dx,al	;Out it
    	mov	al,37h	;command
    	out	dx,al	;Out it
    ;
    ;	Buffer initialize
    	xor	al,al			;Clear al
    	mov	RBFCNT,al		;Set count of chars
    	mov	ax,offset RECBUF	;Get buffer top
    	mov	RBFRDP,ax		;Set read point
    	mov	RBFWTP,ax		;Set write point
    ;
    	sti		;Enable interrupt
    ;
    ;	display CPU
    	mov	si,offset ckcpu	;set message top
    	call	puts		;display message
    ;
    ;	Check CPU
    	mov	ax,0101h
    	db	0d5h,10h	;aad 10h
    	cmp	al,0Bh		;NEC V20 ignores the argument
    	je	isv20
    	mov	si,offset intel
    isV20:	call	puts
    ;
    ;	Emulation sequence
    	db	0fh,0ffh	;BRKEM
    	db	offset VBRKEM/4	;Vector number
    ;
    emu80:
    	db	21h	;LXI
    	dw	offset hello
    string:
    	db	7Eh	;MOV A,M
    	db	0FEh,0	;CPI 0
    	db	0CAh	;JZ
    	dw	offset loop
    	db	0EDh,0EDh,0FDh	;CALLN 253(putch)
    	db	23h	;INX H
    	db	0C3h	;JMP
    	dw	offset string
    loop:
    	db	0EDh,0EDh,0FBh	;CALLN 251(getch)
    	db	0EDh,0EDh,0FDh	;CALLN 253(putch)
    	db	0C3h	;JMP
    	dw	offset string
    ;
    hello:	;HELLO, WORLD,CR,LF,0
    	db	48h,45h,4Ch,4Ch
    	db	4Fh,2Ch,20h,57h,4Fh,52h
    	db	4Ch,44h,0Dh,0Ah,00
    ;
    ;	reset
    	org	0fff0h
    	db	0eah	;jmp
    	dw	start	;offset
    	dw	0000h	;segment
    ;
    	end
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

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

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

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

Похожие темы

  1. "ZX-8080" - Даунгрейд компьютера "Ленинград"
    от Mick в разделе Разработка электроники
    Ответов: 908
    Последнее: 28.05.2025, 15:52
  2. "ZX-8085" - Даунгрейд компьютера "Ленинград". Часть 2
    от Mick в разделе Разработка электроники
    Ответов: 60
    Последнее: 22.07.2024, 21:01
  3. Ответов: 17
    Последнее: 26.12.2015, 23:22
  4. куплю "нулёвку" - материнку или копм в сборе 8088-8086
    от palsw в разделе Барахолка (архив)
    Ответов: 59
    Последнее: 08.05.2012, 11:19
  5. Ответов: 0
    Последнее: 15.08.2010, 14:38

Ваши права

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