Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
Ой, а они меня в FEATURED PROJECTS записали на http://hackaday.com
|
13 Feb 2019 17:16 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
А то я думаю откуда там за один день 273 просмотра
|
13 Feb 2019 20:26 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
После второго дня аж 714 просмотров натикало
|
14 Feb 2019 02:05 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
Вот собственно тот самый 300-бодовый модем, вместо которого я хочу втыкать самодельный Ethernet: P.S. На третий день у прожэкта на хакадее уже 1.1К просмотров
|
14 Feb 2019 22:04 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
Всё - убрали из FEATURED - успело 1.3К накапать...
|
16 Feb 2019 03:38 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
Вот примерно как я это себе вижу - WizNET втыкается вверх-ногами в какую-то горизонтальную платку, которая в свою очередь втыкается в основную вертикальную: А разъём почти такого же размера - т.е. дырка сзади как раз:
|
17 Feb 2019 13:36 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
С визнета надо вывести на основную плату вот что: - GND
- +3.3V
- /RESET (if we will need to have an ability to reset module programmatically)
- /INT (interrupt to signal back to PC that buffers are full or empty)
- /CS (to programmatically chip enable WizNET module)
- /RD (read control signal)
- /WR (write control signal)
- A0
- A1
- D0
- D1
- D2
- D3
- D4
- D5
- D6
- D7
- /SCS (optional SPI - if this line goes down then module will switch to SPI mode)
- SCLK (optional SPI)
- MOSI (optional SPI)
- MISO (optional SPI)
Только 2 адресные линии берём - A0 и A1 т.к. модуль будет юзаться в "Indirect-mode" когда доступ к внутренней памяти через 4 регистра (с инкрементом адреса): Третий адрес от PCjr можно потом под память для MAC-адреса заюзать (WizNET не имеет своего собственного MAC-адреса - его надо после сброса программно вводить). Светодиоды /LNKLED, TX_LED и RX_LED можно оставить на промежуточной горизонтальной платке - будут светить вверх и должны быть видны сквозь решётку корпуса...
|
17 Feb 2019 14:03 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
Если делать полноценную breakout-платку (назвать её скажем BB-Wizard), то надо бы вывести всё - тогда лучше сделать так: На платке может быть регулятор питания 3.3В, транзистор для разворачивания /INT в диапазон 0..5В и схема сброса при включении питания (сам модуль таковой не имеет)...
|
17 Feb 2019 14:43 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
Тут получается, что я могу универсальную плату сделать, которая сможет рабтоать как с IBM PCjr, так и с RC2014 Для RC2014 придётся позаковыристей сделать дешифрацию адреса портов (с переключателем по видимому) и прерывание там активный 0 тогда как в PCjr - активная 1...
|
18 Feb 2019 01:26 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
|
18 Feb 2019 01:51 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
Всё моё добро на тему PCjr отныне будет жить тут: https://gitlab.com/shaos/pcjrЭто бывший репозиторий PCjrCart, переехавший летом 2018 с гитхаба...
|
18 Feb 2019 19:30 |
|
|
VGrad
Maniac
Joined: 18 Nov 2013 15:15 Posts: 209 Location: все оттуда ;)
|
|
19 Feb 2019 18:31 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
|
19 Feb 2019 18:56 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
Основная плата сетевой карты будет очень хитрой формы:
|
19 Feb 2019 20:49 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
| | | | Shaos wrote: На фотке картридж вставлен в левую дырку, но в правой он тоже работает - значит все CS-ы разведены в обе дырки, что есть хорошо. Получается так - разрабатываем программулину в DOSBox как COM-файл (нестандартный, т.к. данные что вместе с кодом лежат будут только для чтения - изменяемые данные надо будет держать где-то в ОЗУ) работающую только с BIOS (т.к. ДОСа нету), далее с помощью моей волшебной программы (исходники которой я скоро выложу на гитхаб) создаём образ для прошивки и вперёд P.S. Выложил: https://gitlab.com/shaos/pcjrВолшебная программка лежит в каталоге software и называется PCJRCART.C Волшебного в ней собственно подсчёт CRC16, который толком нигде не описан применительно к PCjr-картриджам: PCJRCART.C | | | | Code: /* PCJRCART.C by Shaos (Dec 2016) */
/* Create ROM image from COM file for PCjr cartrige */
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "crc16.h"
#define MAXSIZE 65535
int main(int argc, char **argv) { FILE *f; int i; char fname[100],*po; unsigned long sz; unsigned char extra = 0; unsigned short crc = 0; unsigned char *bytes = (unsigned char*)malloc(MAXSIZE); if(bytes==NULL) { printf("\nCan't allocate memory!\n\n"); return -1; } if(argc<2) { printf("\nFilename was not specified!\n\n"); return -2; } memset(bytes,0,MAXSIZE); bytes[0] = 0x55; bytes[1] = 0xAA;
CalculateTable_CRC16();
strcpy(fname,argv[1]); f = fopen(fname,"rb"); if(f==NULL) { printf("\nCan't open file '%s'!\n\n",fname); free(bytes); return -3; } fseek(f,0,SEEK_END); sz = ftell(f); printf("%s %lu\n",fname,sz); if(sz>=65280) { printf("\nFile is too large!\n\n"); fclose(f); free(bytes); return -4; } fseek(f,0,SEEK_SET); fread(&bytes[256],1,sz,f); fclose(f);
sz += 258; if(sz&511) { sz &= 0xFE00; sz += 512; } bytes[2] = sz>>9; printf("ROM size is %lu bytes (%i)\n",sz,bytes[2]); bytes[3] = 0xE9; bytes[4] = 0x01; bytes[5] = 0x00; bytes[6] = 0x00; bytes[7] = 0xB8; bytes[8] = 0x00; bytes[9] = 0x01; bytes[10] = 0xFF; bytes[11] = 0xE0;
crc = Compute_CRC16(bytes,sz-2); printf("Calculated CRC is 0x%4.4X\n",crc);
if(sz==65536) extra = crc&0x00FF; else bytes[sz-1] = crc&0x00FF; bytes[sz-2] = (crc&0xFF00)>>8;
crc = Compute_CRC16(bytes,sz); printf("Corrected CRC is 0x%4.4X\n",crc);
po = strrchr(fname,'.'); if(po!=NULL) *po=0; strcat(fname,".bin"); f = fopen(fname,"wb"); if(f==NULL) { printf("\nCan't open file '%s'!\n\n",fname); free(bytes); return -5; } if(sz<=32768) fwrite(bytes,1,sz,f); else fwrite(bytes,1,32768,f); fclose(f); if(sz>32768) { fname[strlen(fname)-1] = '2'; f = fopen(fname,"wb"); if(f==NULL) { printf("\nCan't open file '%s'!\n\n",fname); free(bytes); return -6; } if(sz==65536) { fwrite(&bytes[32768],1,32767,f); fputc(extra,f); } else fwrite(&bytes[32768],1,sz-32768,f); fclose(f); } free(bytes); return 0; }
| | | | |
| | | | |
Обратился тут ко мне человек - спрашивает а чего это у тебя в этой программке байтики какие-то заполняются - 0xE9 там, 0x01 и т.д., а я уже и не помню чего они там заполняются Затолкал это в дизассемблер и получил нижеследующее:
|
11 Jul 2019 18:46 |
|
|