https://ameblo.jp/kazx68k/entry-12786648082.html
『FM TOWNSにICメモリカードを導入する(したかった…)』
すごい雪で立ち往生とか、大変なことになっていますね。私はFM TOWNSで立ち往生しましたけどね(爆)。 何で立ち往生したのかというと、ICメモリカード(PC…
ameblo.jp
굉장한 눈으로 갇혀 있거나 힘든 일이 되고 있네요. 나는 FM TOWNS에서 붙어 있었지만 (폭).
무엇으로 붙어 있었는지 하면, IC메모리 카드(PCMCIA라고 부르고 있었지요?오래된 노트북이면 반드시 이 규격의 카드 슬롯이 붙어 있던 것입니다)를 FM TOWNS로 HDD로서 이용할 수 있도록(듯이) 하고 싶었습니다만, 이것이 할 수 없었습니다…
어떤 바람에 노력해 격침했는지, 시계열로 소개합시다. 덧붙여 최초로 거절해 둡니다만, 우리 쪽 FM TOWNS 경력 불과 2개월(2022년 11월 입수)이므로, 쿵쿵한 일을 하고 있을지도 모릅니다. 어디까지나 초보자가 뭔가 하고 있구나, 라고 따뜻한 눈으로 지켜봐 주셨으면, 라고 (웃음).
우선, PCMCIA의 메모리 카드를 FM TOWNS에 세트!
그리고 TOWNS OS를 시작!
이 화면 그리기~라고 하는 분도 계실지도?
논리 드라이브 추가!
일단 리셋하고 파티션 설정을 하려고 하면…, 인식되고 있는 하드 디스크는 없다, 라고. 음, 물론 IC 메모리 카드에 문제가 있을 가능성도 있습니다만, 만약 IC 메모리 카드에 문제가 없었다고 해도, 여기에서 하드 디스크로서 표시되는 것이 올바른지 어떨지도 모른다고 한다… 조금 그물을 조사했을 정도로는 정보는 없었습니다.
조금 그물을 조사하면 IC 메모리 카드도 포맷 할 수있는 것 같습니다. 그런가, 포맷 할 수 없기 때문에 잘되지 않는가?
이 TOWNS OS라면 버전이 오래되어 GUI에서는 IC 메모리 카드의 포맷은 할 수 없다고 하고, CUI로부터 커멘드를 실행할 필요가 있다고 한다. 거기서 TOWNS OS가 기동할 수 있어 IC 메모리 카드의 포맷 커멘드를 실행할 수 있는 플로피 디스크를 작성합니다.
FDD를 선택한 상태에서 디스크 초기화를 실행.
FDD에 블랭크 FD를 세트!
무사히 만들 수 있었으므로, 조속히 FD로 TOWNS OS를 기동! 드라이버와 명령을 CD에서 FD로 복사합니다.
복사 후의 FD는 이런 느낌. 하지만 이것만이라면 명령과 드라이버를 FD에 복사한 것만으로, OS 기동시에 드라이버가 등록되지 않습니다. 드라이버 등록 설정을 CONFIG.SYS에 추가해야 합니다. 라고, 이 근처 MS-DOS의 지식으로 어떻게든 되고 있는 느낌입니다만, TOWNS OS의 커맨드 모드는 MS-DOS라고 생각해 둘 수 있을까?
CONFIG.SYS를 터치하여 드라이버를 추가하기 위해 CD에서 TOWNS OS를 시작하고 텍스트 편집을 시작합니다.
처음, Windows PC에 FD를 세트 해 CONFIG.SYS를 편집하려고 할까 생각했습니다만, FMR을 조사했을 때였는지, FD의 부트 섹터가 FM TOWNS나 FMR과 Windows는 다르다고 하고, Windows에서 FD를 열어 버리면 부트 섹터가 재기록되어? FM TOWNS나 FMR로 그 FD를 읽을 수 없게 되어 버리는 것 같습니다(실제 체험했습니다!)
CONFIG.SYS를 선택하고 엽니다.
드라이버를 등록하기 위한 설정을 추가합니다.
이제 TICMFMT 명령으로 IC 메모리 카드를 포맷 할 수 없었습니다! (울음)
음, 어쩌면 IC 메모리 카드에 문제가 있을지도 모르지만, 그것을 확인하려면 PCMCIA 카드 슬롯을 탑재한 낡은 노트북을 발굴하지 않으면… 또는 FM TOWNS 쪽의 카드 슬롯에 문제가 있을 수 있습니다.
간편하게 HDD를 추가할 수 있을까, 라고 기대했습니다만, 유감스럽게도 붙어 있습니다(웃음). 솔직하게 뒷면의 SCSI 커넥터에 변환 번장인가 RaSCSI를 접속해 시험할까…? IC메모리 카드라면 본체 전면에 카드 슬롯이 있으므로 간편했습니다만…
제 트위터를 보신 분은 알고 싶습니다만, 이 실망감을 불식하기 위해 이 후 FM TOWNS에서 에메랄드 드래곤을 즐겼습니다… 멋진 오프닝이었습니다. 게임의 조작도 바삭바삭한 느낌으로, FM TOWNS의 에메드라는 쾌적하게 플레이 할 수 있을 것 같네요!
라고 하는 것으로, 이번 주의 블로그는 여기까지. 또 다음주에 만나요~♪
---------------------------------------------------------------------------------------------------------------------------------------------------------------
http://ysflight.in.coocan.jp/FM/towns/icm/j.html
YSFLIGHT.COM
FM TOWNS用32kB FRAMメモリカードの回路図、PCBなどは↓ https://github.com/captainys/FM/tree/master/TOWNS/KiCAD/FRAMCard Towns OSから32KB FRAMメモリカードにIPLを書き込むプログラムは↓ https://github.com/captainys/FM/tree/m
ysflight.in.coocan.jp
FM TOWNS용 32kB FRAM 메모리 카드의 회로도, PCB 등은↓
https://github.com/captainys/FM/tree/master/TOWNS/KiCAD/FRAMCard
Towns 를 쓸 수 있는
사람 은↓의 ICMIMAGE.BIN을 써도 가능. https://github.com/captainys/FM/tree/master/TOWNS/IPL/DISKIMG
2022/03/29
FM TOWNS 구제용 IC 메모리 카드 제작 프로젝트. 지금까지, FM TOWNS 실기 구제용 IPL의 성공에 의해, 초대 model1/2, 2대째 2F, 3대째 20F, 386SX 모델을 제외한 FM TOWNS 모델은, 내장 CD-ROM 드라이브와 플로피 디스크 드라이브가 양쪽 고장 버렸다고 하는 절망적인 상황이라도 그 외가 살아 있으면 . 만일 플로피 디스크 드라이브가 살아 있다고 해도, 최근 플로피 디스크를 포맷하는 것 자체가 어려워져 왔지만, Towns OS를 기동하는 것으로 본체로부터 포맷할 수 있다. 자신으로서는 FM TOWNS 본체의 동태 보존에 있어서 구제 IPL은 상당히 성공이라고 생각하고 있다.
그러나 아직 모든 모델을 구제할 수 있는 것은 아니다. 386SX 모델의 구제는 기동의 구조가 전혀 다르기 때문에 불가능하고 기동 FD를 만들어 CONFIG.SYS로부터 YSSCSICD.SYS를 짜넣는 것 이외의 방법은 없지만, 그 이외의 386DX 모델을 어떻게든 하고 싶다. 그 유일한 방법으로 생각된 것이 아마 TOWNS 유저 중 거의 아무도 그 존재조차 눈치채지 못했다고 생각되는 IC 메모리 카드를 이용하는 방법이었다. 이 IC 메모리 카드는, 그 후 PCMCIA 카드라고 불리게 되는 인터페이스로 2000년 전후의 랩톱 PC에서는 잘 사용한 인터페이스였다. TOWNS의 인터페이스는 같은 커넥터이지만, PCMCIA 인터페이스의 꽤 초기의 사양 밖에 채우지 않기 때문에, 용도는 한정된다. 그러나 무려 TOWNS는 IC 메모리 카드에서 기동할 수 있었다. 에뮬레이터 쓰가루 상에서는 이미 시스템 ROM은 IC 메모리 카드에서 IPL을 읽고 실행하기까지는 확인이 끝났다.
그러나 IC 메모리 카드는 지금은 거의 입수가 불가능하다. 실험할 수 없었기 때문에, 구제 IPL의 IC 메모리 카드 대응은 보류하고 있었다. 하지만 FMTowns 정보 게시판 에서 쓰가루 유저이자 실기 유저가 IC 메모리 카드를 가지고 있다는 것. 시험에 구제 IPL의 IC 메모리 카드판을 만들어 보았는데, 기동에 성공했다는 보고가 있었다.
그렇다면 정식으로 IC 메모리 카드용의 IPL도 만들자, 이것에 의해 초대(단 SCSI 카드가 필요), 2대째, 3대째 모델도 구제할 수 있는 것은 아닐까. 그렇다고해도 기존의 메모리 카드에 의존하는 것은 원래 SCSI CD 드라이브보다 IC 메모리 카드가 입수하기 어렵다. 백업 배터리 문제는 남아 있습니다. 게다가 IPL을 쓰기 위해 TOWNS를 기동해야 한다. 닭과 계란이었다. 그렇다면 자작 할 수 없습니까? 최근까지 PCMCIA용 커넥터를 찾을 수 없었다. 왜 찾을 수 없었는지 모르겠지만, 한번 찾아버리면 보통으로 팔고 있는 것을 알았다.
커넥터는 얻을 수 있습니다. 그러나 그럼 어떤 회로로 하면 좋을까. 그 힌트는 FM TOWNS Discord에서 얻을 수 있었다. 무려 당시 NeoGeo가 같은 메모리 카드를 사용하고 있었다는 것. 그리고 그것을 오픈 소스로 회로도를 공개해주는 사람이 있었다. NeoMemCard2 . 이것을 보면, 실로 단순하게 어드레스 버스와 데이터 버스를 RAM 칩에 연결하는 것 같다.
그러나, 이 회로도를 보고 수수께끼가 발생. FM TOWNS의 메모리 맵을 보면, JIDA4 규격의 카드는 물리 C2000000h, 그 이전의 기동 가능한 카드는 물리 C0000000h로부터에 맵 된다고 한다. 에뮬레이터에 의한 해석으로 시스템 ROM은 JIDA3 에리어로부터 IPL을 읽는 것을 알고 있었다. 그렇다면 어떻게 JIDA3, JIDA4를 판정하고 있는가? 그러한 프로토콜도 모른다. 또한 IC 메모리 카드는 16비트의 데이터 버스와 26비트의 어드레스 버스가 나온다. 각 주소에 16비트의 데이터가 있다면 합계 128MB의 용량을 지원할 수 있는 계산이 된다. 혹은, 각 어드레스에 8비트의 데이터가 할당되어 있고, 2개의 연속하는 어드레스의 데이터를 동시에 읽고 쓸 수 있으면 총 64MB까지 지원할 수 있게 된다. 과연 어느 쪽인가?
그것은, IC 메모리 카드에 의한 실기에서의 기동 테스트를 해 준 쓰가루 유저분으로부터의 실험에 의해 꽤 밝혀졌다. 실은, JIDA4 대응의 TOWNS에서는 JIDA3/JEIDA4 관계없이 어느 쪽도 최초의 16MB가 C0000000h~에 나와 있는 것 같다. 쓰가루상에서 JEIDA4로부터 기동할 수 없었던 것은, 제가 JIDA4카드는 C2000000h 밖에 나오지 않았다고 생각해 실장하고 있었기 때문에, 실제로는 어느 쪽이라도 가능하다고 한다. 또, 액세스는 아무래도 각 어드레스 8 비트로, 게다가 홀수 어드레스로부터의 읽어내기에 상당히 복잡한 일을 하고 있는 것 같다. FM-R용으로 IC 메모리 카드로 발매된 「어시스트 팩」이라고 하는 제품은 아무래도 홀수 어드레스로부터의 읽어들여에 대응하고 있지 않는 것 같고, 짝수 어드레스로부터 2 바이트 단위로 읽어들일 경우만 데이터를 읽을 수 있었던 것 같다. FM TOWNS의 경우, Disk BIOS를 사용하여 IC 메모리 카드를 읽고 쓸 수 있지만, Disk BIOS는 반드시 짝수 주소라고 할까 4바이트 경계를 넘어 32비트로 읽고 쓰기한다. 그렇다고 하는 것은, IC 메모리 카드와 CPU의 사이에 어떠한 로직이 끼워져 있는 것이 된다. 홀수 어드레스로부터의 8비트 액세스는 원래 8비트 데이터 버스 밖에 가지지 않는 컴퓨터용의 것이기 때문에 FM TOWNS에서는 아마 그 걱정은 없다.
그래서 SRAM을 사용한 시제품을 만들기로 했다. 라고 하는 것으로, 부품의 발주이지만 SRAM등은 아무래도 표준적인 칩이 되어 있으므로 좋다고 해, PCMCIA 커넥터. 이전에 찾았을 때는 전혀 발견되지 않았는데, 지금 찾으면 몇 가지 발견된다. 평소 DigiKey를 사용하기 때문에 이 커넥터 를 주문했다.
하지만 주문한 후 데이터 시트를 보면 기반 두께는 0.4 ~ 0.5mm 권장. 응? 아래 이미지의 카드 폭이 91픽셀로 2.7mm. 핀 간격은 29픽셀이니까 0.86mm 정도 있을까 생각했는데. 좀 이거 끔찍하지 않아?
평소 사용하고 있는 PCB 작성 서비스의 OSH Park에서는, 1.6 mm, 0.8 mm, 0.2 mm중 어느 것 밖에 선택할 수 없다. 0.2mm의 것은 구부릴 수 있는 기반이라는 것으로, 납땜해도 괜찮은 것이 되어 있지만, 조금 저항이 있다. 그렇다면 핀을 구부릴 수밖에 없다. 1.27mm 간격의 핀이 모두 평행인 채로 구부리려면 어떻게 하면 좋을까? 푹, (일단) 기계공학 박사의 나를 달게 봐주면 곤란하다. 그리고 커넥터에 공포를 주면서 다음 그림과 같이 먼저 얇은 구리판을 사용하여 한쪽 핀을 바깥쪽으로 구부린다. 여기까지는 간단. 하지만, 핀의 끝이 기초에 접해주지 않으면 납땜할 수 없기 때문에, 이번에는 직경 1 mm의 철사를 핀과 핀의 사이에 끼워, 만력으로 평행하게 구부린다.
그래서 무사 핀 간격 조정 수술 성공. 어쩌면 성공했다고 생각합니다. 아래 사진의 왼쪽이 수술 후 오른쪽이 수술 전. 이런 가공을 하면 걱정인 것은 핀이 찢어져 커넥터가 슬롯에서 나오지 않으면 어떻게 하는가? 하지만, 이것은 프로토 타입으로 PCMCIA 연장 카드 앞에 붙이기 뿐이기 때문에 그러한 걱정은 없다. 원래 28-pin DIP의 칩을 태우기 때문에 슬롯에 들어가지 않는다.
덧붙여서, 이런 것은 주문한 후에 더 좋은 녀석이 발견되는 것으로, mouser로 역차폐 방지의 노치 첨부의 녀석 팔고 있었다. 일단, 정식판(?)에 대비해 이 커넥터도 발주했지만.
구제 IPL의 기동까지 확인할 수 있도록 백업 배터리까지 추가한 회로도 그 외는↓. 현재 PCB를 주문해 오는 것을 기다리고 있다.
2022/04/09
OSHPark에서 PCB 도착. 그리고, 소켓 그 외 실장해 보았다. 표면 마운트라고 하는 것은 처음이었지만, 어떻게든 되는 것이구나.
그러나, IC를 소켓에 찌르려고 하면 사이즈 잘못되었다! 아무것도 생각하지 않고 i8251과 같은 사이즈로 해 버렸다!
어쩔 수 없기 때문에, 브레드 보드에 IC를 태우고, 선을 연결하는 것에.
그리고, 쇼트등 없는 것을 테스터로 확인해, 우리 TOWNS II MX 본체에 접속! 전원을 넣었다! 일단 연기는 불지 않았다!
미리 써 있던 물리 메모리 어드레스에의 기입 프로그램으로, 시험에 AUTOEXEC.BAT를 기입해, 그것을 물리 메모리 주소로부터의 읽어내 프로그램으로 덤프 해 보지만, 내용이 무너져 버린다. 아무래도, 최초의 몇바이트는 읽는데, 12바이트째 정도부터 수상해져, 도중부터 완전하게 의미가 없는 데이터가 된다.
그러나, C000000H~덤프를 취하면 C000000CH 정도 지금은 올바른 값이 보이지만, C0000010H~덤프를 찍으면, C000001CH 정도 지금은 올바른 값이 보인다. 아무래도 쓰기는 되어 있다.
묘목과 같은 배선이 노이즈를 주워 버리는 것일까? 그렇다면 쓰기도 실패하지 않습니까? 아니면 본질적으로 SRAM의 속도가 붙어 있지 않은가? 따라서 시험에 한 번 읽을 때마다 가중치를 넣는 코드를 쓰고 덤프를 취한 결과 정상적으로 읽을 수 있습니다.
스피드의 문제라고 하면, TOWNS를 「호환 모드」로 설정해 속도를 386DX 16MHz 상당에 스피드를 떨어뜨리면 읽어들여 실패하지 않게 되는 것은 아닐까? 그렇다고 해서, 시험한 바, 이번은 웨이트를 넣어도 넣지 않아도 대부분의 바이트의 값이 읽어내면 이상한 값이 된다. 하지만 글을 쓰는 것 같다. 호환 모드로 쓰고 "고속 모드"로 변경하고 가중치로 읽으면 정상적인 값이 나온다.
또한, 리셋해도 값은 보존하는 것 같았다. 리셋시 일순간 전원이 꺼져 값이 바뀌어 버리는 것은 없는 것 같다. 그렇다면 부팅 실험에는 백업 배터리 구현이 필요하지 않습니다.
그렇다면 문득 실패에 대비하여 다른 SRAM을 사고 있었다는 것을 기억한다. 그쪽을 보면 폭넓은 28핀 DIP였다! 이것이라면 소켓에 빠진다. 그래서 IC를 다시 넣어 다시 실험.
이번에는 쓰기도 읽어도 정상인 것 같다. 쓰기 프로그램이 버그하고 있어 256바이트마다 3바이트의 불필요한 데이터를 기입하고 있었지만, 그것은 수정해, 시험에 AUTOEXEC.BAT를 기입해 읽어들이면, 올바르게 쓸 수 있고 읽을 수 있는 것을 알았다. 그래서 IC Memory Card용 IPL을 써서 I, C, M 키를 누르면서 리셋. 과연 시작합니까?
결과, 불행히도 시작하지 않았다. 왜인가? 과연 정말 제대로 바이너리는 쓰고 있었는지? 따라서, 실제 메모리 어드레스로부터 판독되고 기록 된 파일의 내용과 비교되는 프로그램이 기록된다. 결과, 역시 올바르게 쓰지 못했다. 원인은 알 수 없지만, 0을 연속적으로 쓰면 거의 확실히 어딘가에서 비트 6이 반전하여 40H가 발생한다.
이번에는 로드는 괜찮은 것 같다. 쓰기만 정상적으로 할 수 있으면 기동하는 것이 아닌가? 그렇다면 쓸 때 가중치를 넣어 보는 것은 어떨까? 라고 생각해 기입시에 웨이트를 넣었더니, 기입 내용과 비교 결과가 일치하게 되었다. 이번에는 시작할까요?
아직 시작하지 않습니다. 분명히 SYSTEM ROM에서 읽을 때 내용이 손상됩니다. 근본적으로 바이너리가 망가져 버리는 경우도 있으면, 처음, 「IC MEMORY CARD BOOT」라고 나와야 할 곳이, 「IC MEMORY CAR@ BOKT」가 되거나, 「IC MEIORY CARD BOOT」가 되거나 한다. 아무래도 경향으로서 4N+2바이트째의 비트 3이 1부터 0이 되어 버리는 것이 많은 것 같다.
메모리 칩 문제? 그래서 U1과 U2를 바꿔 본다. 데이터를 깨는 방법은 바뀌었지만 역시 깨진다.
도대체 어떤 수준에서 망가지고 있는가? 그것을 테스트하기 위한 전용 IPL을 써 실험해 보았는데, 경향으로서 2N+2바이트째의 비트 3이 망가지는 경우가 많은 것 같지만, 그렇게는 할 수 없다. 로직 애널라이저를 확장하는 공간만 있으면 무슨 일이 일어나고 있는지 알 수 있습니다!
하나 잡고 있던 것은 배터리 백업을 위한 풀업 저항이었다. 카드가 본체에서 빼내어 ~CE1, ~CE2가 결선 없어졌을 때 ~CE1, ~CE2를 HI로 함으로써 실수로 RAM의 내용이 바뀌지 않도록 한다. 일반적으로는 풀업 저항은 4.7K 옴, 어딘가에서 읽었기 때문에, 그대로 4.7K 옴의 저항을 선택했지만, 파나소닉의 SRAM 카드의 데이터 시트를 보면 20K 옴으로 나온다.
가설로서 프로업 저항이 지나치게 작아서, 읽고 쓰기시에 ~CE1, ~CE2가 분명히 제로가 되지 않거나, 또는 제로에 떨어지기 어려우므로 연속 읽고 쓰기시에 실패하고 있었던 것이 아닌가? 라는 가설을 바탕으로 풀업 저항을 시험해 보자.
결과, 풀업 저항이 있었을 때보다 상황 악화. 그러나 묘하게도, 파일을 읽으면서 내용 비교를 할 때만은 보통으로 읽을 수 있는 것 같다. 전혀 비교에 실패하지 않는데, 덤프를 취하면 가중치를 넣으려고 넣지 않지만 어딘가 깨진 값이 나온다.
풀업 저항에 의해 결과가 바뀌는 것을 알았다. 과연 4.7K옴의 저항으로 맞습니까?
라고, 이런 때, 곤란하면 몇몇 매우 의지가 되는 아는 사람이 몇명 있다. 이번에도 들어 보았다. 즉시 돌아온 대답은 전압이 갑자기 드롭되지 않았는지 확인하는 것이 좋다. 라는 것. 일단 SRAM 칩의 Vcc와 GND의 핀 사이의 전압은 테스트 조건에서 4.5V로 확인했다. 로직 애널라이저를 사용할 수 있으면 전압의 순간적 드롭을 파악할 수 있을 것이라고 생각했지만, 우리 아파트는 좁아서 전개할 수 없다. 분석기가 있는데. 그러나, 확실히 기동에 실패한다고 하는 것은 기동중의 전압을 보자, 라고 생각해, 테스터를 연결한 채로 리셋하면, 무려! 리셋 후 시동까지 전압이 3.6V까지 떨어진다! 이것은 순간적으로 떨어지는 것이 아니라 테스터에 지속적으로 나와있는 값이기 때문에 평균이 3.6V. 이것은 너무 낮습니다.
그래서 어차피 테스트용 SRAM이며 배터리 백업은 없어도 좋기 때문에 시험에 D1을 단락시켜 직결. R1, R2의 풀업 저항은 없음. D2도 배터리용이므로 실장하지 않는다. 라는 단지 32KB의 RAM 모듈로 한 버전을 만들어 보았다. 그 SRAM에 IC Memory Card용 IPL을 기입해, I, C, M 키를 누르면서 리셋하면. . . .
대성공!!!! IC Memory Card용 IPL로부터 SCSI CD 드라이브의 Visitor를 기동할 수 있었다!!!!
다이오드, 대략 0.3V의 전압일 것이라고 생각했지만, 사실 어떨까? 적당히 수중에 있던 BAW27을 사용했지만, 확실히, 적외선 이미터의 정전류 회로로 사용했을 때는, 1개당 0.3V 떨어지는 가정으로, 거기에 맞도록 저항을 결정했던 것. SRAM 카드의 경우, IC의 소비 전력에 맞는지 어떨까. 음, SRAM의 데이터 시트를 보면 소비 전력은 피크에서 150mA!? BAW27 데이터시트에 따르면 IF=200mA에서 1000mV, IF=400mA에서 1250mV. 그렇다고 하는 것은, 1V~1.25V의 사이인가. 그렇다면 4V를 끊지 마라. . . . 그건 안돼.
어쨌든, 이것에 의해 단순히 Towns의 PCMCIA 인터페이스에 SRAM을 연결하는 것만으로 읽고 쓸 수 있다는 것을 알았다. 문제는 속도. TOWNS 기동용 카드를 FRAM으로 제작하려고 하고 있지만, 액세스 스피드가 빨리 없다. 그러나 당시 PCMCIA 메모리 카드의 사양을 보면 상당히 액세스 속도가 200ns라고 하는 느린 것이 많음에도 불구하고 싱크로나이즈를 위한 핀이 나오지 않았다. 라는 것은 TOWNS는 비교적 여유를 가지고 읽고 쓸 것. 그렇다면 FRAM으로 대응할 수 있을 것 같다. 어쨌든, 만들어 보자.
덧붙여 아래는 실험에 사용한 PCMCIA 익스텐더에 SRAM 카드(성공한 분)를 장착한 그림.
2022/05/03
노안 대 표면 마운트 대결
마침내 PCB, 부품 및 기타 모든 것. 전회는 커넥터 이외는 보통의 관통 구멍 마운트였지만, 이번은 본체의 메모리 카드 슬롯에 수납할 수 있는 것을 만들기 위해서, 모든 부품이 표면 마운트. 작은 저항, 콘덴서, IC 등을 납땜할 필요가 있어, 전회보다 어렵다.
아직 손가락 끝이 풀풀 떨리는 정도의 해는 아니지만, 수중에 초점이 맞지 않는다. 운 좋게도, 나는 전혀 멀리 보는 시력은 쇠퇴하지 않았다. 하지만 점점 가까이 보이지 않게 되었다. 안과 검진 때 보험 적용으로 무료이기 때문에 로안경을 줬지만, 어울리지 않는다는 걸까도 근처가 그다지 보기 쉬워지지 않는다. 라는 상황에서 이번에 많이 사용한 것이 ↓
핀홀 안경. 이굴은 간단하고, 카메라의 F값을 높게 짜내는 것으로 피사계 심도를 깊게 한다. 리굴은 알 수 있다고는 해도, 이렇기 때문에 효과 있는 거야? 라고 반신반의였지만, 친구가 필요 없기 때문에 준 핀홀 안경을 사용해 보면, 무려, 근거리까지 보인다. 피사계 심도를 올리는 것이기 때문에 먼 것도 보통으로 보인다. 이거 안경을 넘지 않아? 그래서 새로운 시력을 손에 넣은 나는 과감하게 표면 마운트에 도전했다!
시작하기 전에 PCMCIA 커넥터가 1.6mm 두께의 PCB를 상정하고 있었지만, 이번 FRAM 칩을 태워도 확실히 슬롯에 들어가도록 0.8mm 두께 PCB를 발주했다. 그만큼 핀과 핀 사이를 좁힐 필요가 있었다. 여기서 만료 된 신용 카드가 유용합니다. 딱 좋은 폭으로 잘라 위에서 규와 눌러 핀을 평행하게 구부리는 것에 성공. 신용 카드는 딱딱하고 비교적 간단하게 커터로 끊어지기 때문에, 이 용도에는 적합했다.
그런 다음 부속 납땜. 첫째, 패드에 예비 납땜. 얇게 하고 싶지만, 상당히 많게 고조되어 버렸다.
뭐, 그것은 어쩔 수 없기 때문에, 핀홀 안경을 장비해, IC의 대각 핀을 임시 고정한다.
어떻게든 되는 거야. 그 후 다른 작은 부품도 납땜하고, 임시 고정도 본 정지하고 커넥터. 문제는 어떻게 커넥터를 똑바로 납땜하는가? 1.6mm 두께의 PCB가 정확히 박히는 듯한 폭에 0.8mm 두께의 PCB를 넣으면 당연히 틈이 비어서 똑바로 되지 않는다. 여기에서도 만료 신용 카드가 활약. 무려, 만료 신용 카드는 정확히 0.8mm 두께였다! 끝을 가늘게 자르고 커넥터의 슬롯 양쪽 끝에 꽂아 총 1.6mm로 만듭니다. 이렇게하면 PCB를 커넥터에 대해 똑바로 고정 할 수 있습니다.
완성!
GND와 +5V가 직결되어 있지 않은지 테스터로 확인하고, 우선은 PCMCIA 익스텐더 경유로 본체 밖에 설치해 본다.
그리고 전원 투입!
아무래도 LED의 선택을 잘못한 것 같고, 밝다! 너무 밝다! LED 주문 후 알았는데 LED Lighting과 LED Indication 두 가지가 있었던 것 같아, 나는 아무것도 생각하지 않고 Lighting (조명용) LED를 선택해 버린 것 같다! 하지만, 과연 LED만큼 뜨거워지지 않기 때문에 뭐 좋다.
커맨드 모드에 내려, 전회 만들었던 메모리 기입 프로그램으로 기입했더니, 대성공! IPL을 작성하여 시작에도 성공! 그런 다음 전원을 끄십시오. 이것으로 내용을 잊어버리면 의미가 없지만, I, C, M 키를 누르면서 전원 투입. 그리고 메모리 카드에서 부팅에 성공! FRAM 카드는 완전히 작동했습니다! 노안 대 표면 대결의 승부는 노안의 승리로 끝났다!
직후 화면 사진을 찍지 않았기 때문에이 화면은 다시 찍은 사람입니다.
다음에, 본체 내에 수납한 상태로 기동해 보았다. 밝다.
빛이 새는 문제는 있지만, 본체에 수납에도 성공. 덧붙여서, 본체에 수납하고, 한층 더 신용 카드가 들어갈 만큼의 틈이 있었다. 라는 것은 1.6mm 두께의 PCB에서도 괜찮다는 것이다.
그리고 마지막 체크는 FM TOWNS 2F에 이 메모리 카드가 박히는가 하는 것. 이것도, 수납할 수 있어 기동에 성공했다. 마찬가지로 신용 카드가 들어갈 틈이 있습니다.
다만, 2장 시작했지만, 1장은 찔리지 않았다. 어떻게 커넥터의 핀을 커버할까 생각하고, 한 장은 광경화 수지(↓의 BONDIC)로 굳어 보았지만, 너무 두꺼워진 것 같다. 아무래도 하면의 두께에 주의할 필요가 있는 것 같다.
이 성공은 중대하다. 지금까지 초대, 2대째, 3대째 FM TOWNS는 SCSI CD 드라이브에서 직접 시작할 수 없기 때문에 플로피 디스크 드라이브와 내장 CD 드라이브가 모두 고장나면 손도 발도 나오지 않았지만, FRAM 카드에서 부팅함으로써 어느 정도의 소프트웨어는 FRAM 카드의 IPL 경유로 기동할 수 있는 것을 알았다. (초대기는 SCSI 카드가 필요). 아직 디스크 드라이브 등이 망가져버린 FM TOWNS가 남아 있으면 버리는 것은 조금 기다려 주었으면 한다. 아직 시작하고 게임을 달릴 수 있을지도 모른다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
TOWNSのメモリカードスロット= の編集 - os-wiki
oswiki.osask.jp
FM-TOWNS의 메모리 카드 슬롯
* FM-TOWNS에 표준 탑재의 메모리 카드 슬롯은, 실은 PCMCIA 의 카드 슬롯입니다. 일반적인 컨트롤러를 통하지 않고 매우 쉬운 방법으로 액세스할 수 있습니다.
* 단, 리셋 신호를 제어할 수 없기 때문에, 리셋이 필요한 디바이스( K 가 사용하고 있는 4in1 타입의 메모리 카드 어댑터 등)는 제어할 수 없습니다.
- 김에 말하면 전원도 꺼지지 않기 때문에 에너지 절약이 아니다···TOWNS 그 자체가 에너지 절약이 아니기 때문에, 이것은 문제가 아닐지도.
- 그러나 세상에는 리셋이 불필요한 4in1 어댑터도 있습니다 (그 CF1로 변환하는 CF4IN1이 그렇습니다 : 자세한 것은 → CardAdapter ).
* 동작 확인 : HR과 초대 Fresh에서 다음 방법으로 CompactFlash 액세스에 성공 (OSASK / TOWNS ver.3.9). 그 후 CF4IN1에서의 메모리 스틱 Duo나 SD 카드의 액세스에도 성공.
* 그 외의 동작보고(OSASK/TOWNS ver.3.9에서 CompactFlash 의 액세스에 성공한 기종):SA(=MA의 교육기관용), FreshES.
초대 모델 1~80H
* 표준이 너무 오래되어 속성 메모리 공간에 액세스할 수 없습니다. 공통 메모리 공간만 액세스할 수 있습니다.
- 즉, CIS의 읽기나 설정 등을 할 수 없고, PC 카드 ATA 도 사용할 수 없습니다.
* 물리적 주소 0xc0000000 ~ 0xc0ffffff의 16MB에 공통 메모리 공간이 매핑됩니다.
- 아마 당시의 규격에서는 공통 메모리 공간 밖에 없었고, 게다가 그것은 최대 16MB였을 것입니다.
* I / O 어드레스 0x48a는 8bit 레지스터로, 여기를 읽으면 메모리 카드의 상태를 읽을 수 있습니다.
- bit0: 라이트 프로텍트: 1로 라이트 프로텍트가 걸려 있는 것을 나타낸다.
- bit1-2 : 카드 검출
0:카드 있음
1:연결 불량
2:연결 불량
3: 카드 없음
- bit3 : (READY) : EEPROM 메모리 카드 이외의 관계 없음
물론 PC 카드 ATA에도 관계없
- bit4:Yellow:1=백업 배터리 교체
- bit5:Red:1=백업 배터리가 죽었음
- bit4-5도 PC 카드 ATA와 관계 없음
- bit6:부정
- bit7:Change
카드를 빼고 꽂으면 1이 된다. 1을 읽으면 자동으로 0 클리어된다.
- 쓰기는 금지입니다.
CX10 이후 비 386SX 기계
* JEIDA ver.4에 대응.
- 속성 메모리 공간에 액세스 가능하게 되었습니다.
- 주소 공간도 64MB로 확장되었습니다.
* I/O 어드레스 0x490은 8bit 레지스터로, 여기서 물리 어드레스 0xc1000000~0xc1ffffff의 16MB의 어드레스 공간의 뱅크 전환을 합니다(구 공간의 물리 어드레스 0xc0000000~0xc0ffffff의 16MB는 전환하지 않습니다).
- bit5-4가 유효하고, 여기에 0~3의 값을 써 뱅크 전환을 합니다.
0: 0-16MB
1:16-32MB
2:32-48MB
3:48-64MB
- 다른 비트는 리드에서는 불규칙하고 라이트에서는 0 고정입니다.
* I / O 주소 0x491은 8bit 레지스터이며, 여기서 속성 메모리 공간 · 공통 메모리 공간의 전환을 지정합니다.
- bit0 이 지정된 비트이고, 0일 때는 공통 메모리, 1일 때는 속성 메모리입니다.
이 비트는 리드도 할 수 있습니다.
- bit7은 접속되어 있는 카드가 JEIDA ver.4 이후의 규격에 대응하고 있는 경우에 0이 됩니다. 대응하지 않는 경우는 1이 됩니다.
이 비트는 리드 전용이며, 라이트시에는 0을 기입해 주세요.
- 다른 bit는 리드시 부정, 라이트시는 0으로 해 주세요.
* I/O 어드레스에 관한 설정이 없기 때문에, I/O 어드레스에 카드 I/O의 레지스터를 할당하는 것은 아마 할 수 없을 것입니다.
- PC 카드 ATA 의 경우는 메모리 맵트 모드로 하면 사용할 수 있다고 생각합니다.
386SX 기계
* JEIDA ver.4에 대응.
* 그러나 386SX기의 제한 때문에 액세스를 위한 창이 1MB로 축소되어 0xd00000~0xdfffff로 이동했습니다.
* 따라서 0x490 뱅크 스위칭 레지스터가 확장되었습니다.
- bit5-0이 유효하고, 여기에 0~63의 값을 써 뱅크 전환을 합니다.
* 이 외에 대해서는 CX10 이상과 같습니다.
코멘트
* CX 이전과 이후라고 하면, TOWNS와 TOWNS II군요. 과연. - I.Tak. ? 2003-07-25 (금) 12:06:42
* 혹시 모델 1 ~ 80H에서도 액세스할 수 버릴지도 모릅니다. CF에의 설정을 할 수 없는 것만으로, 액세스에 필요한 공통 메모리 공간에의 액세스는 할 수 있기 때문입니다. 설정하지 않아도 디폴트로 CF가 메모리 맵트 모드로 되어 있으면・・・. 집에는 각종 CF는 있지만 해당 TOWNS가 없기 때문에 시도할 수 없습니다. - K 2003-07-25 (금) 15:51:36
* SN과 MaRTy는 JIDA4.1 대응인지 모뎀 카드 등을 사용할 수 있는 것 같습니다만이 규격은 어떨까요? -- I.Tak. ?
* OSASK의 소스를 보면, CF는 속성 메모리를 괴롭히지 않아도 메모리 맵트 I/O로 액세스 할 수 있는 것 같네요. 편하지만 TOWNS로 부팅 장치가되지 않습니다. 모처럼 읽으러 가는데 유감이다. - I.Tak. ? 2003-09-19 (금) 21:34:14
* TOWNS의 BIOS를 다시 쓸 수밖에 없지요. ROM 교환? 그렇지만 KHBIOS/TOWNS를 경유해도 좋다면, CF 부트도 할 수 있어요. - K 2003-09-19 (금) 21:52:28
* JEIDA4.1! ... 이것은 최강입니다. 16bit-PC 카드의 모든 기능을 사용할 수 있다는 것입니다. 반드시 전원 제어나 리셋도 할 수 버리고, I/O 모드도 사용할 수 버립니다. 멋지다! - K 2003-09-19 (금) 21:55:40
* 16bit 사양이므로 32bit 액세스하면 CPU 밖에서 두 번 나누어 액세스된다고 생각됩니다. CompactFlash로 실험 한 결과, 0x400의 데이터 레지스터에 rep movsd 할 수있는 것 같습니다. 메인 메모리의 액세스 횟수가 절반이 되어도 좋을지도. - I.Tak. ? 2003-11-10 (월) 10:11:57
* 그런 일을 할 수 있을까・・・. pcctol0g(개발중 버전)로 실험해보자. 일순간, AT기라도 할 수 있을까,라고 생각했지만, AT는 여러가지 회로가 생략되는 경향이 있기 때문에 안될지도 모른다. 한 머신에서 잘 작동해도 다른 머신에서 잘 작동한다는 보장이 없습니다. ···movsd를 사용하지 않아도, EAX로 0x400을 읽는 것만으로 OK가 아닐까 상상하고 있습니다. - K 2003-11-10 (월) 11:10:40
* 그렇습니다만, 스트링 명령이 빠르고 작기 때문에 추천이라고 하는 것으로(486에서 13+3n, Pentium에서 12+n클럭. n은 카피 횟수. 여기 참고). 세그먼트간 복사를 mov로 하면 접두사가 여러가지 붙어 버려 늦어지기 쉽고. - I.Tak. ? 2003-11-11 (화) 10:53:43
* rep movs와 rep stos는 다른 문자열 명령과 달리 빠릅니까. - K 2003-11-12 (수) 12:50:03
* 그 -K 씨, TOWNS에서도 CIS 튜플을 읽을 수 있습니까 ?
* 위는 CF 이야기입니다. - I.Tak. ? 2004-04-05 (월) 14:53:54
* 아리야···. 실은 TOWNS로 튜플을 읽는 테스트는 하고 있지 않습니다. 읽지 않았을 가능성이 있습니다. 또, 어쩌면 Fresh계는 그 근처의 사용하지 않는 회로가 생략되었다든가, 그러한 가능성도 있습니다. DOS에서 움직이는 간단한 실험 프로그램을 만들 수 있다면 실험해 볼까요? (HR20) - K 2004-04-05 (월) 15:16:56
* 늦어졌습니다만 (바살당했기 때문에……) EXP로 만들어 보았습니다. 실험 잘 부탁드립니다. - I.Tak. ? 2004-04-10 (토) 20:14:32
* 페이지에 첨부했습니다만, 사용법을 쓰는 것을 잊었습니다(^_^; 단순히 실행하면 표준 출력에 바이너리를 덤프합니다.TOWNS쉘로부터 오버레이는 할 수 없습니다. -- I.Tak. ? 2004-04-10 (토) 21:18:27
* 답장이 늦어서 죄송합니다. 이 첨부 파일을 다운로드할 수 있습니까? 나는 9바이트밖에 받을 수 없다. - K 2004-04-13 (화) 14:38:56
잘 작동하지 않으므로 http://user.ecc.u-tokyo.ac.jp/~g240845/towns/ 에 넣었습니다. - I.Tak. ? 2004-04-15 (목) 09:55:02
* 했습니다. I.Tak. 씨가 말했듯이 CIS는 읽을 수 없습니다. 하지만 여기서 저는 심한 오식을 깨달았습니다. CX 이후에서는 메모리 카드 슬롯의 윈도우가 2장 있어, 페이지를 바꿀 수 있는 것은 2장째의 쪽입니다. 기본 주소는 0xc100_0000입니다. 자세한 내용은 위의 설명을 참조하십시오 (수정 됨). I.Tak.씨의 바이너리를 바이너리 에디터로 재기록해 테스트하면, 우리 HR20에서는 제대로 CIS를 읽을 수 있었습니다. 꼭 시험해 주세요. - K 2004-04-17 (토) 01:13:52
* CF 아다부타 개조해 주소 결선 바꾸는 걸로, 무리하게 메모리 맵트 I/O로 IO계 카드 사용한다고는 불가능합니까? - 2004-05-16 (일) 11:51:43
* 그런 어댑터를 만들 수 있다고 생각합니다. 단지 주소 결선을 바꾸는 정도의 어댑터만으로 충분한지 어떤지는 모릅니다만. 할 수 있으면 조금 좋네요・・・. - K 2004-05-16 (일) 12:42:54