IBM PCjr

16-битные ПЦ-совместимые компьютеры с процессорами 8086/8088/80286 работающие под управлением ДОС

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Shaos wrote:Поднимаю обратно тему Ethernet для IBM PCjr:

https://hackaday.io/project/163856-pcjrnet
Ой, а они меня в FEATURED PROJECTS записали на http://hackaday.com :o
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

А то я думаю откуда там за один день 273 просмотра :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Shaos wrote:А то я думаю откуда там за один день 273 просмотра :roll:
После второго дня аж 714 просмотров натикало :o
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Вот собственно тот самый 300-бодовый модем, вместо которого я хочу втыкать самодельный Ethernet:
PCjr-modem.jpg
P.S. На третий день у прожэкта на хакадее уже 1.1К просмотров :o
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Всё - убрали из FEATURED - успело 1.3К накапать...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Вот примерно как я это себе вижу - WizNET втыкается вверх-ногами в какую-то горизонтальную платку, которая в свою очередь втыкается в основную вертикальную:
PCjrNet-proto1s.jpg
А разъём почти такого же размера - т.е. дырка сзади как раз:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

С визнета надо вывести на основную плату вот что:
  • 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 регистра (с инкрементом адреса):

Code: Select all

3F8h - register MR of W5100 (indirect mode flag and auto-increment flag)
3F9h - register IDM_AR0 of W5100 (most significant byte of the address)
3FAh - register IDM_AR1 of W5100 (least significant byte of the address)
3FBh - register IDM_DR of W5100 (data register to read/write in indirect mode)
3FCh - reserved for future
3FDh - reserved for future
3FEh - reserved for future
3FFh - reserved for future
Третий адрес от PCjr можно потом под память для MAC-адреса заюзать (WizNET не имеет своего собственного MAC-адреса - его надо после сброса программно вводить).

Светодиоды /LNKLED, TX_LED и RX_LED можно оставить на промежуточной горизонтальной платке - будут светить вверх и должны быть видны сквозь решётку корпуса...
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Если делать полноценную breakout-платку (назвать её скажем BB-Wizard), то надо бы вывести всё - тогда лучше сделать так:

Code: Select all

 1) GND
 2) +3.3V
 3) /RESET (if we will need to have an ability to reset module programmatically)
 4) /INT (interrupt to signal back to PC that buffers are full or empty)
 5) /CS (to programmatically chip enable WizNET module)
 6) /SCS (optional SPI - if this line goes down then module will switch to SPI mode)
 7) SCLK (optional SPI)
 8) MOSI (optional SPI)
 9) MISO (optional SPI)
10) D0
11) D1
12) D2
13) D3
14) D4
15) D5
16) D6
17) D7
18) /RD (read control signal)
19) /WR (write control signal)
20) A0 (indirect mode A0)
21) A1 (indirect mode A1)
22) A2
23) A3
24) A4
25) A5
26) A6
27) A7
28) A8
29) A9
30) A10
31) A11
32) A12
33) A13
34) A14
На платке может быть регулятор питания 3.3В, транзистор для разворачивания /INT в диапазон 0..5В и схема сброса при включении питания (сам модуль таковой не имеет)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Тут получается, что я могу универсальную плату сделать, которая сможет рабтоать как с IBM PCjr, так и с RC2014 :)
PCjrNet-RC2014s.jpg
Для RC2014 придётся позаковыристей сделать дешифрацию адреса портов (с переключателем по видимому) и прерывание там активный 0 тогда как в PCjr - активная 1...
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Нашёл свежую дему для IBM PCjr :)


https://youtu.be/IWOE4FNZuqE
PC Jr. Demo presented at Flashparty 2018 demoparty in Buenos Aires, Argentina. Awarded 1st. place at the demo compo.
Code by Riq, Gfx by Arlequin and Alakran, Music by Uctumi
Download executable release at: http://pungas.space/pvm-64ko.zip
P.S. О - даже сырцы открыты :o
https://gitlab.com/ricardoquesada/pcjr-flashparty-2018
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Всё моё добро на тему PCjr отныне будет жить тут:

https://gitlab.com/shaos/pcjr

Это бывший репозиторий PCjrCart, переехавший летом 2018 с гитхаба...
Я тут за главного - если что шлите мыло на me собака shaos точка net
VGrad
Maniac
Posts: 208
Joined: 18 Nov 2013 15:15
Location: все оттуда ;)

Re: IBM PCjr

Post by VGrad »

Shaos, смотри ещё одна полезная вещь для JR:
https://www.retrotronics.org/home-page/jride/
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

VGrad wrote:Shaos, смотри ещё одна полезная вещь для JR:
https://www.retrotronics.org/home-page/jride/
Угу ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Основная плата сетевой карты будет очень хитрой формы:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: IBM PCjr

Post by Shaos »

Shaos wrote:На фотке картридж вставлен в левую дырку, но в правой он тоже работает - значит все CS-ы разведены в обе дырки, что есть хорошо. Получается так - разрабатываем программулину в DOSBox как COM-файл (нестандартный, т.к. данные что вместе с кодом лежат будут только для чтения - изменяемые данные надо будет держать где-то в ОЗУ) работающую только с BIOS (т.к. ДОСа нету), далее с помощью моей волшебной программы (исходники которой я скоро выложу на гитхаб) создаём образ для прошивки и вперёд :kruto:

P.S. Выложил: https://gitlab.com/shaos/pcjr
Волшебная программка лежит в каталоге software и называется PCJRCART.C :)
Волшебного в ней собственно подсчёт CRC16, который толком нигде не описан применительно к PCjr-картриджам:

 PCJRCART.C

Code: Select all

/* 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 и т.д., а я уже и не помню чего они там заполняются :o

Затолкал это в дизассемблер и получил нижеследующее:

Code: Select all

00000000  E90100            jmp word 0x4
00000003  00B80001          add [bx+si+0x100],bh
00000007  FFE0              jmp ax
Я тут за главного - если что шлите мыло на me собака shaos точка net