nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 21 Oct 2017 22:55



Reply to topic  [ 88 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6
Timex Sinclair 2068 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15562
Location: Colorado
Reply with quote
DimkaM wrote:
Quote:
А вообще наличие WizNET в конце памяти, а не поверх ПЗУ, хорошо тем, что ленивые люди могут юзать её прямо из бейсика без всяких хитрых уловок
Вот тут какраз зхусбнет втыкаетсч с адреса с000 http://forum.nedopc.com/download/file.php?id=1949


а в какой комп? и как? у спеков там обычно неподменяемое ОЗУ...

P.S. судя по комментам это baseconf в пентеве:
Code:
   DEVICE ZXSPECTRUM128

   ORG 0x8000
START 
;регистры чипа
WIZ_BASE_ADDR   = 0xc000
W_MR         = WIZ_BASE_ADDR+0x0000
W_SHAR         = WIZ_BASE_ADDR+0x0008

S0_MR      = WIZ_BASE_ADDR+0x0201 ;мл.байт
S0_CR      = WIZ_BASE_ADDR+0x0203 ;мл.байт
S0_SSR      = WIZ_BASE_ADDR+0x0209 ;мл.байт
S0_PORTR   = WIZ_BASE_ADDR+0x020a
S0_DPORTR   = WIZ_BASE_ADDR+0x0212
S0_DIPR      = WIZ_BASE_ADDR+0x0214
S0_TX_WRSR   = WIZ_BASE_ADDR+0x0222 ;мл.слово
S0_RX_RSR   = WIZ_BASE_ADDR+0x022a
S0_TX_FAKE   = WIZ_BASE_ADDR+0x2000
S0_RX_FAKE   = WIZ_BASE_ADDR+0x3000
;/***************************************/
;/* The bit of Sn_MR regsiter defintion */
;/***************************************/
Sn_MR_CLOSE        = 0x00                 ;/**< Protocol bits of Sn_MR. */
Sn_MR_TCP          = 0x01                 ;/**< Protocol bits of Sn_MR. */
Sn_MR_UDP          = 0x02                 ;/**< Protocol bits of Sn_MR. */
Sn_MR_IPRAW        = 0x03                 ;/**< Protocol bits of Sn_MR. */
Sn_MR_MACRAW       = 0x04                 ;/**< Protocol bits of Sn_MR. */
Sn_MR_PPPoE        = 0x05                 ;/**< Protocol bits of Sn_MR. */

/******************************/
/* The values of CR defintion */
/******************************/
Sn_CR_OPEN         = 0x01                 ;/**< OPEN command value of Sn_CR. */
Sn_CR_LISTEN       = 0x02                 ;/**< LISTEN command value of Sn_CR. */
Sn_CR_CONNECT      = 0x04                 ;/**< CONNECT command value of Sn_CR. */
Sn_CR_DISCON       = 0x08                 ;/**< DISCONNECT command value of Sn_CR. */
Sn_CR_CLOSE        = 0x10                 ;/**< CLOSE command value of Sn_CR. */
Sn_CR_SEND         = 0x20                 ;/**< SEND command value of Sn_CR. */
Sn_CR_SEND_MAC     = 0x21                 ;/**< SEND_MAC command value of Sn_CR. */
Sn_CR_SEND_KEEP    = 0x22                 ;/**< SEND_KEEP command value of Sn_CR */
Sn_CR_RECV         = 0x40                 ;/**< RECV command value of Sn_CR */
Sn_CR_PCON         = 0x23                 ;/**< PCON command value of Sn_CR */
Sn_CR_PDISCON      = 0x24                 ;/**< PDISCON command value of Sn_CR */
Sn_CR_PCR          = 0x25                 ;/**< PCR command value of Sn_CR */
Sn_CR_PCN          = 0x26                 ;/**< PCN command value of Sn_CR */
Sn_CR_PCJ          = 0x27                 ;/**< PCJ command value of Sn_CR */

;/**********************************/
;/* The values of Sn_SSR defintion */
;/**********************************/
SOCK_CLOSED        = 0x00                 ;< SOCKETn is released */
SOCK_ARP           = 0x01                 ;< ARP-request is transmitted in order to acquire destination hardware address. */
SOCK_INIT          = 0x13                 ;< SOCKETn is open as TCP mode. */
SOCK_LISTEN        = 0x14                 ;< SOCKETn operates as "TCP SERVER" and waits for connection-request (SYN packet) from "TCP CLIENT". */
SOCK_SYNSENT       = 0x15                 ;< Connect-request(SYN packet) is transmitted to "TCP SERVER". */
SOCK_SYNRECV       = 0x16                 ;< Connect-request(SYN packet) is received from "TCP CLIENT". */
SOCK_ESTABLISHED   = 0x17                 ;< TCP connection is established. */
SOCK_FIN_WAIT      = 0x18                 ;< SOCKETn is closing. */
SOCK_CLOSING       = 0x1A                 ;< SOCKETn is closing. */
SOCK_TIME_WAIT     = 0x1B                 ;< SOCKETn is closing. */
SOCK_CLOSE_WAIT    = 0x1C                 ;< Disconnect-request(FIN packet) is received from the peer. */
SOCK_LAST_ACK      = 0x1D                 ;< SOCKETn is closing. */
SOCK_UDP           = 0x22                 ;< SOCKETn is open as UDP mode. */
SOCK_IPRAW         = 0x32                 ;< SOCKETn is open as IPRAW mode. */
SOCK_MACRAW        = 0x42                 ;< SOCKET0 is open as MACRAW mode. */
SOCK_PPPoE         = 0x5F                 ;< SOCKET0 is open as PPPoE mode. */

   di
   ld sp,0xc000
   ld hl,0x4000
   ld (hl),0
   ld de,0x4001
   ld bc,192*256/8-1
   ldir
;делаем хардресет чипа
;Все тайминги округлены до 50мс
   ei
   halt
   ld bc,0x83ab
   in a,(c)
   and 0xee
   out (c),a   ; ресет
   halt
   or 0x10
   out (c),a   ; снятие ресета
   halt
   
;Проецирование регистров в адресное пространство z80.
;Для примера проецируем в адреса 0xc000-0xffff (в условиях ZX-Evo baseconf).
;Проецирование будет происходить только при подключенном ПЗУ в заданном адресном окне.
;Страница ПЗУ не имеет значения
   ld a,1
   out (0xbf),a
   ld bc,0xfff7
   ld a,0x3f
   out (c),a
;Теперь включаем проецирование
   ld bc,0x82ab
   ld a,7   
   out (c),a
   
;далее софтресет чипа(насчёт нужности неуверен, но непомешает)
   ld a,0x80
   ld (W_MR+1),a
   halt
   ld a,0x3c
   ld (W_MR),a
   di
;закидываем MAC, шлюз, маску и ИП. Поменять под себя!!!
   ld hl,mac
   ld de,W_SHAR
   ld bc,20
   ldir
   ;С этого момента чип будет пинговаться и настройки можно считать завершёнными.
   ;Эстетам можно почитать пдфку и настроить чёнить ещё, но для примера и этого достаточно.
   
;----------------------------------------------------------
;теперь подключимся к TCP(НТТР) серверу и чегонить получим
;----------------------------------------------------------

;настроим сокет
soc_noinit
   ld a,Sn_CR_CLOSE   ;закроем соединение
   ld (S0_CR),a      
   ld a,Sn_MR_TCP      ;режим сокета TCP
   ld (S0_MR),a
   ld hl,(source_port)   ;приращивем внутренний порт, чтоп с предыдущим не пересечся
   inc hl
   ld (source_port),hl
   ld e,h            ;бигендиан, меняем байты местами
   ld d,l
   ld (S0_PORTR),de
   ld a,Sn_CR_OPEN      ;даем команду открытия сокета
   ld (S0_CR),a
wait_cr0
   ld a,(S0_CR)      ;ожидаем исполнения команды
   or a
   jr nz,wait_cr0
   ld a,(S0_SSR)      ;если не инициализировался, то заново
   cp SOCK_INIT
   jr nz,soc_noinit
;--------------------   
;конектимся к серверу
;--------------------
   ld hl,S0_DPORTR ;порт сервера !бигендиан!
   ld (hl),0
   inc hl
   ld (hl),80
   ld hl,S0_DIPR   ;ip сервера мароза1999 217.146.69.13
   ld (hl),217
   inc hl
   ld (hl),146
   inc hl
   ld (hl),69
   inc hl
   ld (hl),13
   ld a,Sn_CR_CONNECT      ;даем команду конекта
   ld (S0_CR),a
wait_cr1
   ld a,(S0_CR)      ;ожидаем исполнения команды
   or a
   jr nz,wait_cr1
;ожидаем коннекта с сервером
wait_con
   ld a,(S0_SSR)
   or a
   jp z,soc_noinit      ;Сервер чёйта закрыл(неоткрыл) коннект
   cp SOCK_ESTABLISHED   ;вообще то тут надо проверять и насчёт тайм аута, и другой фигни
   jr nz,wait_con      ;но мы забьём на это дело
wait_con_end   

;приконектились, отошлём GET запрос
;--------------------
;отправка пакета
;--------------------
   ld hl,get_str      ;закидываем дату в буфер чипа
   ld de,S0_TX_FAKE
   ld bc,get_str_end-get_str
   inc bc            ;закидывать надо чётное количество байт
   res 0,c            ;поэтому округлим до чётного
   ldir            ;ахтунг говнокод!!! ldir'ить можно не более 512 байт, смотри описание платки,
                  ;но мы опустим этот момент, т.к. строка у нас явно короче
   ld a,high (get_str_end-get_str)
   ld (S0_TX_WRSR),a   ;закидываем длинну даты, не забывая про бигэндиан
   ld a,low (get_str_end-get_str)
   ld (S0_TX_WRSR+1),a   ;а вот сдесь нужно указывать точное кол-во байт, невзирая на нечётность
   
   ld a,Sn_CR_SEND   ;даем команду отправки
   ld (S0_CR),a
wait_cr2
   ld a,(S0_CR)      ;ожидаем исполнения команды
   or a
   jr nz,wait_cr2
   
;--------------------
;ожидаем пакет от сервера
;--------------------
   ld de,0
wait_pack0
   ld de,(S0_RX_RSR)   ;читаем длинну пакета
   ld a,d
   or e            ;если нулевая, то ждём дальше
   jr z,wait_pack0
wait_pack1
   ld hl,(S0_RX_RSR)   ;ога, пришло
   ex de,hl         ;теперь ждём устаканивания даты
   xor a            ;повторно читаем и если не сходится, то читаем ещё раз длинну
   sbc hl,de
   ld a,h
   or l
   jr nz,wait_pack1
;пакет получен чипом полностью, надо его вычитать
;т.к. в S0_RX_RSR длинна кратна двум, то...

;--------------------
;сейчас прочитаем реальную длинну, она лежит в первых двух байтах буфера приема
;--------------------
   ld hl,(S0_RX_FAKE)
   ld b,l            ;долбанный бигендиан
   ld c,h
;--------------------
;читаем пакет, в de у нас лежит длинна кратная двум(бигендиан)
;--------------------
;выёживатся с лдиром небудем
   ld b,e
   ld c,d
   dec bc      ;в регистре длинна пакета была с учётом двух первых байт,
   dec bc      ;которые добавил сам визнет(точная длинна пакета)
   ld hl,S0_RX_FAKE
   ld de,buf_rx
loop_read
   ld l,0
   ld a,c
   or b
   jr z,end_read
   ldi
   ldi
   jr loop_read
end_read
   
   ld a,Sn_CR_RECV      ;даем знать что пакет забрали
   ld (S0_CR),a
wait_cr3
   ld a,(S0_CR)      ;ожидаем исполнения команды
   or a
   jr nz,wait_cr3
   
;типа всё, далее разбираем пакет, получаем следующий, отправляем. Но это уже сами, я закрываю соединение.
   
;--------------------
;закроем соединение
;--------------------
   
   ld a,Sn_CR_CLOSE   ;закроем соединение
   ld (S0_CR),a   
   
;--------------------
;Всё, пример окончен.
;--------------------


   ld bc,768         ;Не много по говнокодим.
   ld hl,buf_rx+478   ;Эта цифра получена ваяшарком(очень рекомендую, чтоп наглядно было и познавательно)
   ld de,0x5800      ;А вообщебы тут надо распарсить HTTP реквест
   ldir
   di
   halt

;конфиг сети(!!!Эти значения измените под конфигвашей сети!!!)
mac   
   db 0x00,0x08,0xDC,0x01,0x02,0x03   ;цифры от балды взял, из визнетовой доки
reserved
   db 0x00,0x00   ;это для того, чтоб одним лдиром закинуть
gateway
   db 192,168,0,1
mask
   db 255,255,255,0
ip
   db 192,168,0,77
   
;внутренний порт
source_port dw 0

;http://zx.maros.pri.ee/file/id/15733/filename/Yerzmyey_-_Cat_42_%282009%29_%28_International_Vodka_Party_5%2C_4%29.atr   
get_str
   db "GET /file/id/15733/filename/Yerzmyey_-_Cat_42_%282009%29_%28_International_Vodka_Party_5%2C_4%29.atr HTTP/1.1",13,10
   db "Host: zx.maros.pri.ee",13,10
   db 13,10,0
get_str_end
buf_rx
   
ENDPROG
   SAVEHOB  "s1.$C","s1.C",START,ENDPROG-START
   SAVEBIN  "s1",START,ENDPROG-START

_________________
:eugeek: https://twitter.com/Shaos1973


18 Jul 2016 15:41
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15562
Location: Colorado
Reply with quote
И кстати что это? W5300? Я всё ещё на W5100 сижу

_________________
:eugeek: https://twitter.com/Shaos1973


18 Jul 2016 16:57
Profile WWW
Senior

Joined: 22 Jun 2005 07:35
Posts: 184
Location: МО Россия
Reply with quote
5300


19 Jul 2016 00:02
Profile ICQ
Senior

Joined: 22 Jun 2005 07:35
Posts: 184
Location: МО Россия
Reply with quote
Shaos, если будет возможность, то как нить драйвера под визнет сделай обособленно.
Если конечно софт будешь писать какой.

А то у меня в софте они интегрированы гвоздями, под другую железку уже не переделаешь.

Вообще б все обращения к железу надо было через либы


26 Jul 2016 05:43
Profile ICQ
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15562
Location: Colorado
Reply with quote
Угу - более того, я код хочу сделать перемещаемым :)

И конфигурация (ip,mask,mac) будет хранится во внешнем EEPROM (т.к. задавание мак-адреса программно это очень плохая практика, как и хардкод IP)

_________________
:eugeek: https://twitter.com/Shaos1973


26 Jul 2016 10:11
Profile WWW
Doomed

Joined: 08 Apr 2013 07:04
Posts: 353
Location: 213.247.249.139
Reply with quote
А стандартное (ц) 1982 пзу спектрумское у тебя работает? А есть возможность с тапки сабж грузить? :)


30 Jan 2017 09:52
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15562
Location: Colorado
Reply with quote
angry_troll wrote:
А стандартное (ц) 1982 пзу спектрумское у тебя работает? А есть возможность с тапки сабж грузить? :)

Да вроде работало - в своё время народ покупал картриджи совместимости где ПЗУ стояло оригинальное - чтобы больше оригинальных игр шло...
С какой такой тапки? Магнитофон? Надо проверить - с родным ПЗУ многие игры не идут т.к. грузятся чуть в другие адреса

_________________
:eugeek: https://twitter.com/Shaos1973


30 Jan 2017 13:40
Profile WWW
Doomed

Joined: 08 Apr 2013 07:04
Posts: 353
Location: 213.247.249.139
Reply with quote
Shaos wrote:
angry_troll wrote:
А стандартное (ц) 1982 пзу спектрумское у тебя работает? А есть возможность с тапки сабж грузить? :)

Да вроде работало - в своё время народ покупал картриджи совместимости где ПЗУ стояло оригинальное - чтобы больше оригинальных игр шло...

А у тебя такой есть?
Quote:
С какой такой тапки? Магнитофон?

Ну то есть ты можешь загрузить через мафонный вход что-нибудь? типа .tap или .tzx


30 Jan 2017 13:45
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15562
Location: Colorado
Reply with quote
angry_troll wrote:
Shaos wrote:
angry_troll wrote:
А стандартное (ц) 1982 пзу спектрумское у тебя работает? А есть возможность с тапки сабж грузить? :)

Да вроде работало - в своё время народ покупал картриджи совместимости где ПЗУ стояло оригинальное - чтобы больше оригинальных игр шло...

А у тебя такой есть?

У меня есть универсальная плата-картридж куда можно воткнуть любое ПЗУ :)
angry_troll wrote:
Quote:
С какой такой тапки? Магнитофон?

Ну то есть ты можешь загрузить через мафонный вход что-нибудь? типа .tap или .tzx

Загружал, но только родные от TS2068 (есть пара-тройка демок в инете), а оригинальные виснут
Со спековской ПЗУ мафон не пробовал - надо попробовать

_________________
:eugeek: https://twitter.com/Shaos1973


30 Jan 2017 16:17
Profile WWW
Doomed

Joined: 08 Apr 2013 07:04
Posts: 353
Location: 213.247.249.139
Reply with quote
Shaos wrote:
Со спековской ПЗУ мафон не пробовал - надо попробовать

Ок, как раз есть чо попробовать :)


30 Jan 2017 16:33
Profile
Junior

Joined: 02 Jul 2015 23:50
Posts: 2
Reply with quote
Shaos Не могли бы вы снять размеры с материнской платы TS2068, желательно с крепежными отверстиями и внешними разъемами.
Мне по случаю досталось два корпуса от данного компьютера, есть мысль впихнуть туда Harlequin 48 или 128.
Самый простой способ снять размеры - положить плату на сканер.


16 Feb 2017 02:11
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15562
Location: Colorado
Reply with quote
Не - выкручивать плату не буду. Раритет всё таки - вдруг работать перестанет? ;)

_________________
:eugeek: https://twitter.com/Shaos1973


17 Mar 2017 04:48
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15562
Location: Colorado
Reply with quote
Фотки посещения "Timex Portugal" в 1986:

https://goo.gl/photos/fs2K9L2HQtarcwvK7

_________________
:eugeek: https://twitter.com/Shaos1973


16 Apr 2017 08:57
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 88 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6

Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.