2025년 11월 13일 목요일

FS-A1에서 잠깐 SLT-Turbo를 꽂아보았습니다

FS-A1에서 잠깐 SLT-Turbo를 꽂아보았습니다.


제가 예전엔 A1을 테스트용으로 많이 썼는데요.

요즘엔 X-II, 아이큐2000으로 테스트하다 보니, A1이 구석에 쳐박혀있었습니다요.


암튼 꺼내서 SLT-Turbo를 잠시 동작시켜보았습니다.

A1은 전원 개조외엔 순정 상태입니다. 노말램 64KB에 v9938 그대로 박혀있어요 ㅎ.ㅎ


내장 폰트팩의 한글 출력입니다.



프레이도 한번 돌려보구요.



곧 국민겜(?)이 될 환영도시(aka 웰컴시티)도 실행해보아요.



터보알 전용인 Pleasure Hearts도 실행 ㄱㄱ



마지막으로 MIDRY + SC-88 연주입니다.



당연한 소리겠지만...

v9958의 기능(자연화 모드, 가로 스크롤)을 쓰는 부분에서는 화면이 엉망이 됩니다요 ㅎ.ㅎㅋ


그럼, 이만~~


2025년 10월 18일 토요일

SLT-Turbo 제작 #18 - 기본 사용법


1) SLT-X 및 MIDI 케이블 연결


단자 위치를 확인하세요.




2) 기본 셋업


대부분의 MSX2 이상 기종들은 외부 슬롯 커넥터가 2개 있습니다.

IQ2000, X-II는 슬롯 커넥터 1개와 확장버스 커넥터(IDC 단자 모양)가 1개 있죠.


사용자 환경에 따라, 상단/전면 또는 후면 슬롯에 SLT-Turbo를 장착하면 되겠습니다.

아래는 A1WSX의 상단 슬롯에 장착한 모습입니다.



아래는 A1WSX의 후면 슬롯에 장착한 모습입니다.

상단 슬롯에 PAC-V를 꽂으면 딱 맞는 셋업이 되겠습니다!



아래는 X-II의 전면 슬롯에 장착한 모습입니다.

전면에 카트리지를 세로로 꽂을 수 있는 어댑터를 쓰셔도 좋겠습니다.



만약 IQ2000, X-II의 후면 슬롯에 연결하려면, 당연히 '확장버스 to 에지슬롯' 어댑터가 필요하겠습니다.

갖고 계신 분은 활용하시면 좋을 듯요! ㅎ.ㅎ



3) 최소 셋업


'나는 SLT-X도 없고 주변기기도 별로 없는데, 그냥 SLT-Turbo만 꽂아서 쓸 수 없나요?'

라고 생각하시는 분들을 위한 사용법입니다 ㅎ.ㅎ


SLT-X 대신 카트리지를 연결할 수 있는 어댑터가 제공됩니다.

이걸 MMC/SD V4에 꽂으세요! ㅎ.ㅎ



아래는 A1WSX의 후면 슬롯에 SLT-Turbo와 MMC/SD V4를 장착한 모습입니다.

MIDI 모듈이 있다면, 케이블을 함께 연결하면 되겠네요.

PAC-V를 상단 슬롯에 꽂으면 더 좋구요 ㅎ.ㅎ



이 상태에서 본체의 전원을 켜면, SLT-Turbo가 turboR GT로 부팅되는 걸 볼 수 있겠습니다.

그 다음은 뭐... 그냥 GT를 쓰는 것 처럼 사용하시면 되겠네요. ㅎ.ㅎ/


그럼, 다음편에서 보아요~


2025년 10월 16일 목요일

SLT-Turbo 제작 #17 - Z80 듀얼 프로세서

[서론]

제목이 살짝 낚시(ㅋ) 같습니다만... 으흠, 암튼 그렇습니다요 ㅎ.ㅎ


본체에 SLT-Turbo를 꽂으면, 본체의 Z80은 기본적으로 I/O 프로세서로 동작합니다.

실제로는 Z80 2개가 병렬로 동작하고 있지만, 사용자 입장에서는 CPU가 하나처럼 느껴지게 됩니다.


만약, 아예 작업을 나눠서 두개의 CPU로 구동할 수 있다면 어떨까요? 작업시간을 절반으로 낮출 수 있겠죠!


예를 들어 곱셈 구구단 표를 만들 때,

Z80 1번: 1단 ~ 5단 계산

Z80 2번: 6단 ~ 9단 계산

-> 이렇게 동시에 동작하는 걸 의미합니다.


물론 단순 계산작업이 아닌 주변기기 I/O가 포함된 작업이라면, I/O를 기준으로 CPU 코드를 나눠야겠지만요.



[본론]


그럼, 실전으로 넘어갑시다!

듀얼 CPU를 활용하는 동영상 플레이어를 만들어보아요~

이름은 MV2 player입니다!


기존 MV player의 경우,

초당 12프레임의 비디오 데이터를 SD카드에서 VRAM으로 전송하고,

VRAM 전송 중 틈틈이 오디오 데이터를 PCM으로 출력합니다.

SD카드는 커맨드를 보내고 응답받는데 걸리는 시간이 제각각이라서, 동작 시간도 계산해서 구현해야하죠.

코딩할 때 명령어 하나씩 사이클 계산해서 맞추느라 무쟈게 귀찮...ㅋ



MV2에서는 아래처럼 작업을 나눕니다.


SLT-Turbo:

 SD카드에서 데이터 읽기

 비디오 데이터를 공유버퍼로 전송

 MP3 데이터 출력(WAU 카트리지)


본체:

 공유버퍼의 비디오 데이터를 VRAM으로 전송

 키입력(ESC 키) 상태를 SLT-Turbo로 전달


본체의 Z80은 동작시간 대부분을 VRAM 전송하며 보내게 됩니다.

페이지 플리핑이나 팔레트 변경도 들어가겠지만, VRAM 데이터량에 비하면 '새발의 피'입니다요.


CPU가 단순 VRAM 전송만 해도 된다면, 최대 전송량은 얼마가 될지 계산해봐야겠죠?

OUTI 풀어쓰기로 VRAM 전송과 팔레트 설정을 할테니,

-> 1바이트 전송에 Z80 19클럭이 필요합니다. (MSX2+, turboR 기준)


SCREEN 2 풀스크린 256 x 192 화면에서 전송량

패턴테이블 = 6144 bytes

컬러테이블 = 6144 bytes

팔레트 = 30 bytes

-> 총 12318 bytes


초당 처리가능한 bytes 수를 계산해보면....

3579545clk / 19clk / 12318 = 15.29 frame/s

-> 초당 15프레임이 가능하다는 결론이 나옵니다.


15프레임은 디스플레이 60프레임 / 4로 나눠지니까, 페이지 플립을 해도 문제없으니 딱 좋네요 ㅎ.ㅎ



본체의 Z80에서 비디오 1프레임을 VRAM에 전송 후 CPU IDLE 타임을 표시해보면 아래처럼 나타납니다.

화면 아래쪽에서 스캔라인 테두리(BD) 영역이 녹색으로 보이는 부분이 CPU IDLE입니다.




SLT-Turbo쪽에서는 MMC/SD V4에서 MV2 데이터를 읽은 후 공유 버퍼에 저장합니다.

오디오는 직접 출력을 하는데요. 기존 MV 11kHz PCM에서 MV2 128kbps MP3로 바뀌었습니다.

I/O는 WAU 전용이니까, WAU가 없으면 무음으로 출력됩니다 ㅎ.ㅎ


설명이 길었네요. 그럼, 실제 동작 모습을 보시죠!




[결론]


예전 SLT-Turbo V1을 만들고 나서, 활용할 방법을 생각하느라 시간이 좀 걸렸습니다.

사실 SLT-Turbo V2도 애매한 포지션이라서 접었었구요.

결국 이 듀얼 CPU 활용 때문에 SLT-Turbo V2.1으로 진행이 되었습니다~ ㅎ.ㅎ/


그럼, 다음편에서 보아요~


2025년 10월 8일 수요일

SLT-Turbo 제작 #16 - Z80 확장명령

1) Z280 호환 명령


turboR 호환기를 만들기 위해서는 R800에 추가된 곱셈 명령도 구현이 필요합니다.

SLT-Turbo V1에서는 Z280을 활용했지만, 이번에는 그냥 CPLD의 도움으로 처리했어요.


Z80 명령어 ED C0 ~ ED FF, 총 64개 명령어 공간을 사용합니다.

오리지널 Z80에서 이 명령어를 쓰면 그냥 무시됩니다. NOP 명령을 2개 쓴 효과랑 같아요.


참고로, Z280의 경우는 이 영역 대부분이 확장 명령어로 들어 있습니다.

8bit 곱셈/나눗셈, 16bit 곱셈/나눗셈, signed/unsigned 다 있죠.


R800은 unsigned 8bit, 16bit 곱셈 명령어 중에서 극히 일부인 6개만 들어가는데요,

SLT-Turbo에서는 unsigned 곱셈 명령어 10개를 넣었습니다.


ED C1 ; MULUB  A,  B -> HL ; Z280/R800

ED C3 ; MULUW HL, BC -> DE:HL ; Z280/R800

ED C9 ; MULUB  A,  C -> HL ; Z280/R800

ED D1 ; MULUB  A,  D -> HL ; Z280/R800

ED D3 ; MULUW HL, DE -> DE:HL ; Z280

ED D9 ; MULUB  A,  E -> HL ; Z280/R800

ED E1 ; MULUB  A,  H -> HL ; Z280

ED E3 ; MULUW HL, HL -> DE:HL ; Z280

ED E9 ; MULUB  A,  L -> HL ; Z280

ED F3 ; MULUW HL, SP -> DE:HL ; Z280/R800


한가지 주의할 부분은 이 곱셈 명령어들의 결과 flag 처리는 넣지 않습니다요.

(사실 곱셈결과에 의미있는 flag가 없...ㅋ)

간단한 테스트 프로그램으로 곱셈 결과가 맞는지 확인해보아요~



그나저나, turboR이 나온지 거의 35년이 됐는데, R800 곱셈을 쓰는 상용프로그램이 없다는 게 참 신기하죠?

제가 만든 ASO remake가 유일한 R800 테스트 프로그램이라고 볼 수 있겠는데요.

지난번 동작하는 영상을 보셨을테니 ASO는 넘어갑니다~ ㅎ.ㅎ



2) X-II BIOS 확장


X-II의 BIOS는 롬영역을 다 쓰고 있어서, 추가 코드를 넣을 공간이 없습니다.

심지어 BIOS 엔트리까지 다 잡아먹고 있죠. (역시 내일이 없는 회사ㅋ)


CHGGPU(0180H), GETCPU(0183H) 루틴을 명령어 하나로 대체하도록 해봤습니다.

ED FE ; CHGCPU

ED FF ; GETCPU


원래 BIOS 엔트리는 JP NN 코드(3바이트)를 넣게 되어있는데,

확장 명령어가 2바이트니까 RET 명령까지 다 넣으면 딱 3바이트로 끝나게 됩니다.

아래처럼 되겠네요 ㅎ.ㅎ



음... 사실 굳이 이렇게 만들 필요는 없는데요.

예전 paraMSX-R과 MMC/SD V4에서는 BIOS롬을 뱅킹으로 처리해서 코드를 확장하긴 했었죠 ㅎ.ㅎ



3) 고속 LDIR


Z80에서는 LDIR, OTIR의 비중이 큰데요.

OTIR, OUTI 등의 경우는 주변장치의 속도(VDP 등)때문에 고속으로 최적화할 여지가 별로 없겠구요.

LDIR은 LDI x N개로 풀어(unroll)쓰는 걸 많이 사용합니다.

메모리 여유가 있다면 루프 명령을 쓰는 것 보다는 많이 빠르니까요.


물론 기존 디스크롬들은 이미 다 적용이 되어있죠.

지금 해보려는 건... 고속모드에서 더 빠르게 돌리기 위해 메인램에서 코드를 구동하는 것입니다.


요약하면, '외부 슬롯의 코드에서 LDI x N 풀어쓰기가 필요할 때 메인램에서 구동'입니다.


일단 2개의 명령어를 만들어봤어요.

ED CF ; LDIR

ED DF ; LDIR256


ED CF는 기존 LDIR과 똑같은 기능이지만 속도만 더 빠른 버전이구요.

실제로는 RAM에서 LDI x 32개로 풀어진 명령어로 최적화가 됩니다.


ED DF는 LDIR 수행 시 반복(루프)를 256 배수일 때 쓰면 더 빠른 버전입니다.

실제로는 RAM에서 LDI x 256개가 루프를 돌게 됩니다요.

보통 디스크에서 섹터를 읽게 되면 1섹터 512바이트씩 전송을 하니까 이 경우 꽤 쓸모가 있어요.


turboR에서는 MMC/SD V4로 DOSSCAN을 돌려보면 520~540KB/s 정도가 나오는데요.

SLT-Turbo + V4에서 구동하면 470KB/s 정도가 나옵니다.

이걸 LDIR 최적화 명령어를 이용하면 560KB/s 수준으로 빨라지게 됩니다.

아래 사진 참고하세요.




그럼, 다음편에서 보아요~


2025년 10월 3일 금요일

SLT-Turbo 제작 #15 - MIDI

GT의 미디 인터페이스를 구현하려면, UART Tx/Rx 및 i8253 타이머가 필요합니만...

SLT-Turbo에서는 출력용 필수기능만 넣어봅니다ㅋ


MIDI OUT (Tx) -> 포함

MIDI IN (Rx)  -> 제외

i8253 Counter 0 -> UART baudrate 고정

i8253 Counter 1 -> 제외

i8253 Counter 2 -> 포함

... 요렇게 되겠습니다.


문득 25년 전의 추억이 떠오르네요.

paraMSX에 turboR GT 에뮬을 넣을 때, 미디 H/W 정보가 없어서 걍 포기하고,

타이머를 안쓰는 WSX의 MusicROM을 넣어서 돌리고 그랬죠. 짭ST 느낌? ㅎ.ㅎ


암튼 SLT-Turbo에는 MIDI OUT 커넥터만 하나만 들어있으니, 좋아하시는 미디 모듈을 붙여주시면 되겠네요.

저는 SC-88VL과 mt32-pi를 연결해서 쓰고 있습니다.


미디는 더 설명이 필요없네요. 아래 영상으로 구경하세요~

MIDRY 플레이, 문라이트사가 오프닝은 SC-88VL의 사운드이구요,

뒤의 환영도시 오프닝은 mt32-pi의 사운드입니다. (mt32-pi가 좀 버벅거려서 음이 가끔 튀니까 참고하시고...)





그럼, 다음편에서 보아요~


2025년 9월 28일 일요일

SLT-Turbo 제작 #14 - 외부 슬롯 (SLT-X)


먼저 지난 글에서 알려드린 X-II 모드에서, 바뀐 부분을 알려드립니다.


X-II 모드에서는 메인램이 SLOT 0-2에 배치되어있고,

고속모드는 ROM모드까지만 지원되는 것으로 설정했었는데요.

아무래도 기존 turboR용 S/W를 사용할 때 CPU 모드 전환이 불편할 것 같아서,

그냥 GT모드와 동일하도록 메인램을 SLOT 3-0으로 옮겼습니다.

Shadow RAM도 GT모드와 비슷하게 정리했습니다.

결국 고속모드 ROM/RAM 모두 가능합니다.


메인 BIOS에는 2+/turboR 호환용 엔트리 4개를 추가했습니다.

#017A RDRES,  #017D WRRES

#0180 CHGCPU, #0183 GETCPU

VDP와 관련된 루틴(스크린10,11,12 및 수평 스크롤)을 제외하면 turboR처럼 사용가능합니다.


X-II모드에 내장된 디스크롬도 GT모드와 동일한 DOS2 v2.31 롬이 들어있어서,

부팅 환경에 따라 자동으로 고속모드/일반모드로 전환됩니다.

COMMAND2 2.44의 CPU 명령도 그대로 쓸 수 있습니다.

아무래도 별도의 유틸을 쓰는 것 보다는 turboR 호환모드로 두는 방식이 쓰기 편할 것 같습니다.

표준에서는 좀 벗어나지만, 대충 넘어가는 걸로...ㅋ


그럼, 외부 슬롯 이야기로 갑니다요~


SLT-Turbo의 외부 커넥터에는 SLT-X V2를 연결합니다.

8개의 서브슬롯이 SLOT 1-x, SLOT 2-x로 동작합니다.

SLT-X가 연결된 상태에서는 파란색 LED가 켜지는 것으로 확인가능합니다.

바이패스 커넥터에 연결하면 LED가 켜지지 않으니 참고하시구요.




위의 사진에서는 데모를 위해 WSX의 상단 슬롯에 꽂아놨지만,

실사용할 때는 대부분 후면 슬롯에서 사용하실 거라고 봅니다. 미디 케이블도 연결하구요.

이 상태에서 상단 슬롯에 PAC-V만 추가하면 해피 엔딩이 되겠죠 ㅎ.ㅎ


외부 슬롯의 CLOCK핀은 3.58MHz 출력으로 기존 turboR과 똑같습니다.

신호를 제대로 구현하려면 3.58MHz phase에 맞춰서 내부 클럭 폭을 늘려야겠지만,

일단 단순하게 wait로 때우는 식으로 만들어봅니다.

일부 타이밍에 민감한 기기 외에는 대충(ㅋ) 동작하겠습니다.


저의 기기들을 동작시키는 모습과 turboR 전용 프로그램을 실행하는 모습을 영상으로 담았습니다.

본체는 MSX2+ 기종(A1WSX)을 사용했구요. 영상 전반은 GT모드, 후반은 X-II모드로 돌렸습니다.

현재 보드는 SLT-X 연결시 고속클럭에서 문제가 있어서, Z80 클럭을 15MHz로 낮춘 상태입니다.

실제 turboR보다 약간 느린편이니, 영상을 보실 때 참고하셔요.





그럼, 다음편에서 보아요~


2025년 9월 21일 일요일

SLT-Turbo 제작 #13 - 내부 슬롯

고속 모드를 제대로 활용하려면, turboR처럼 동작해야 되겠죠? ㅎ.ㅎ



@ GT 모드


A1GT와 유사한 구조로 되어있구요. 내부 슬롯은 아래처럼 배치됩니다.


SLOT 0-0 = MainROM     (Page 0,1)

SLOT 0-1 = BASIC'N 2.1 (Page 1) + reserved (Page 2)

SLOT 0-2 = MusicROM GT (Page 1) + SLT-OPT  (Page 2)

SLOT 0-3 = CPU helper  (Page 0) + MSX LOGO (Page 1)


SLOT 3-0 = RAM 4096KB

SLOT 3-1 = SubROM      (Page 0) + KanjDRV  (Page 1,2)

SLOT 3-2 = DOS2 v2.31  (Page 1)

SLOT 3-3 = FontPack V2 (Page 1,2)


기존 turboR과 차이라면... BASIC'N, FontPack V2 내장 정도겠네요.

여기서 FontPack V2는 BIOS뿐만 아니라 한글폰트도 포함됩니다.

특별한 이유가 없다면 외부슬롯에 FontPack을 꽂을 필요가 없습니다.

내장 I/O로 빠르게 구동하는 쪽이 더 좋으니까요~ ㅎ.ㅎ/

(물론 내장 FontPack을 끄고 외장을 쓸 수 있습니다.)



@ X-II 모드


고속모드도 없는 MSX2 기종이지만, 옛날 국산 프로그램들을 실행하는 용도로 쓰려구요.

내부 슬롯은 아래처럼 배치됩니다.


SLOT 0-0 = MainROM      (Page 0,1)

SLOT 0-1 = Hangul/Hanja (Page 1,2)

SLOT 0-2 = RAM 4096KB

SLOT 0-3 = SubROM       (Page 0) + HangulROM (Page 1)


SLOT 3-0 = MusicROM     (Page 1) + SLT-OPT   (Page 2)

SLOT 3-1 = BASIC'N 2.1  (Page 1) + reserved  (Page 2)

SLOT 3-2 = DOS2 v2.31   (Page 1)

SLOT 3-3 = None


X-II에서 숨긴(?) 저작권 및 버전 표시는 다시 켜놨습니다.

내장된 완성형 한글폰트는 명조체가 아니라 '둥근모' 폰트입니다.


SLOT 3-3의 FontPack은 기본적으로 OFF됩니다.

대우의 SCREEN9 출력루틴과 조금 간섭이 되더라구요.

BIOS의 한글 입력기와 ANSI 스크린만 제외되는 것이라서,

일반 프로그램에서 한글 폰트 I/O는 그대로 활용가능합니다. (예: M 파일매니저)

물론 FontPack BIOS를 켜는 것도 가능합니다.


CPU 모드 설정을 위해 별도의 BASIC CALL CPUn 명령을 추가했습니다.

CALL CPU0, CALL CPU1, CALL CPU2 이렇게요.

숫자만 봐도 뭔지 아시겠죠? 노말모드, 고속모드(ROM), 고속모드(RAM)입니다.

(참고로 이 명령은 GT 모드에서도 똑같이 사용가능합니다.)



@ BIOS shadow RAM


고속모드에서는 BIOS를 RAM에 복사해서 wait 없이 빠르게 구동할 수 있습니다.

turboR의 shadow RAM과 같은 방식으로 동작합니다.

기존 turboR은 shadow RAM에 64KB를 할당하지만, SLT-Turbo에서는 256KB를 할당합니다.

내장 BIOS 대부분이 shadow RAM으로 전환된다고 생각하시면 맞습니다.


그 외 추가 256KB의 shadow RAM이 예약되어있습니다.

FontPack에서 128KB를 사용하는데요.

FontPack을 끄고 Kanji(또는 X-II 한글) 폰트를 shadow RAM으로 변경할 수도 있습니다.

MMC/SD V4의 Kanji RAM 기능과 동일합니다. 사용자가 원하는 폰트롬으로 로딩가능합니다.


전체 4096KB의 램에서 512KB가 shadow RAM으로 할당됩니다.

따라서 가용 메모리는 3584KB가 되겠습니다.



그럼, 실제로 동작하는 모습을 영상으로 보시죠!

GT 모드에서 FontPack 사용 및 X-II 모드에서 SCREEN 9를 사용하는 모습입니다.





그럼, 다음편에서 보아요~


2025년 9월 15일 월요일

SLT-Turbo 제작 #12 - Z80 30MHz, OPLL wait

1) Z80 30MHz


지난번에 28.63MHz로 구동했었는데요. 클럭을 더 올려서 테스트를 해봤습니다.


일단 최대치라 생각되는 33MHz까지 올려보니, 아래처럼 속도가 나옵니다.




이 상태로 게임을 돌려봤는데, 시간이 5분쯤 흐르니 SLT-Turbo가 멈추거나 리부팅되는 등 난리네요 ㅎ.ㅎㅋ


조금 낮춰서 30MHz로 테스트해봅니다.

M1 wait를 끈 상태에서 루프 카운트가 딱 100으로 나오네요ㅋ




GT와 X-II에서 테스트를 해보니, 1시간 넘게 게임을 돌려도 괜찮았습니다.


근데 지난번 보다 왜 클럭을 더 올려서 테스트했냐구요?


아무래도 20MHz로 구동하면 turboR 실기와 비슷한 성능이 나오잖아요?

20MHz랑 30MHz 두개의 모드를 넣으면 좀 더 유용하지 않을까? 그런 생각이 들더라구요.


기본 고속모드는 그냥 30MHz로 사용하구요.

기존 turboR 전용 프로그램을 구동 시, 타이밍 문제가 생기는 경우에 20MHz로 낮추면 좋겠죠!

.

.

.

사실은 60MHz 오실레이터 하나로 2분주된 30MHz, 3분주된 20MHz, MIDI용 31250Hz를 쉽게 만들 수 있거든요.

현재 보드에는 오실레이터 2개 박혀있는데, 하나 제거하면 CPLD 여유핀이 1개 생기게 되어서...읍읍...ㅎ



2) OPLL wait


OPLL을 써서 프로그래밍 해보신 분은 아시겠지만, 이 칩이 액세스 사이클이 좀 느립니다.

turboR에서는 VDP I/O에는 auto wait가 구현되어있지만, OPLL쪽은 이 기능이 없어요.

그래서 Z80, R800 공용으로 코드를 만들게 되면 라이브러리 사이즈도 커지고... 그런 단점들이 있습니다.


아마 turboR 나오기 전에 발매된 게임들을 강제 고속모드로 돌려보신 추억이 있으시죠?ㅋㅋ

Z80 3.58MHz에 맞춰 제작된 게임들은 죄다 OPLL 소리가 먹통되거나 요상한 소리가 나오게 됩니다.

이 때문에 고속모드 패치 중에는 OPLL 코드도 함께 패치가 들어있는 경우도 있고 그랬습니다요.


암튼, SLT-Turbo에서는 OPLL를 액세스 할 때 자동으로 wait가 처리되도록 했습니다.

CPU 속도 3.58MHz, 20MHz, 30MHz 상관없이 코드가 잘 돌아가도록이요~ ㅎ.ㅎ



그럼, 실제 동작 모습도 구경하셔요!

- 30MHz 모드로 부팅 후 BASIC 루프 테스트 

- FMPAC 데모 프로그램에서 OPLL 동작 확인

- 프레임 싱크가 메롱인 게임 테스트(트윈비)





그럼, 다음편에서 보아요~


2025년 9월 9일 화요일

SLT-Turbo 제작 #11 - Z80 28.63MHz

칩 번호가 Z84C0020 으로 시작하는 Z80은 최대 20MHz로 동작합니다. 

이 상태에서 turboR과 비슷한 성능이 나온다는 걸 보셨을텐데요.

기억 안나시면 V1 제작글을 찾아보세요~ ㅎ.ㅎ


구글링 해보니, '이 칩들을 33MHz로 오버클럭을 해도 잘 동작함'이라는 내용의 블로그가 나오더라구요.

그래서, 이번 SLT-Turbo v2.1에서는 3.58MHz x 8 = 28.63MHz로 한번 돌려보기로 합니다!


28.63MHz 클럭은 주기가 약 35ns인데요.

보드에 10ns 타입의 SRAM을 넣어놨기 때문에 대충 돌려도 타이밍 문제가 없도록 해놨습니다.


간단한 VDP 테스트 코드를 한시간 정도 돌려보니 괜찮은 듯 하군요.



BASIC으로 루프 테스트를 해보면, 아래처럼 나옵니다.


제 실기 turboR(R800 DRAM mode)에서는 TIME 카운트가 174로 나오니 참고하셔요.



그럼, 다음편에서 보아요~


2025년 9월 7일 일요일

SLT-Turbo 제작 #10 - 보드 v2.1로 변경

2020년에 SLT-Turbo V1가 나온 후 5년이 지났습니다. 시간 참 빨리 가네요...


아시다시피 2021년에 진행했던 SLT-Turbo V2 프로젝트는 컨셉이 애매해서 중단이 되었는데요.

그동안 확장슬롯 부분을 SLT-X V2로 만들었구요.

오디오 부분도 작년에 나온 WAU를 많이 쓰시는 걸로 알고 있습니다. 맞나요?ㅋ


이제 주변 환경이 좀 정리(?)되었으니, SLT-Turbo v2.1로 가보아요~~ ㅎ.ㅎ/


아래는 SLT-Turbo v2.1 보드의 모습입니다.




SLT-Turbo v2.1의 기능들을 정리해봤습니다.


1. 외부 슬롯


기존 v2는 6개의 슬롯 커넥터가 있었죠.

기본슬롯(SLOT 1) + 확장슬롯(SLOT 2-x) + 고속BUS 슬롯(I/O 전용)


v2.1에서는 외부 슬롯이 없는 대신 SLT-X V2를 연결해서 사용합니다.

참고로, Bypass용 커넥터도 들어있는데요.

여기에 연결하면 SLT-Turbo 기능은 OFF되고, SLT-X V2만 동작하게됩니다.



물론 기존 v2에 있던 고속 BUS용 IO 슬롯은 제외입니다.

고속으로 동작하는 기능들은 SLT-Turbo 내장 기능들만 가능하다고 보시면 되겠습니다.


2. R800 곱셈 등의 추가된 CPU 명령어


기존 v2와 동일합니다. 추가 명령어는 CPLD 로직으로 구현되며, CPU는 Z80 한개만 사용합니다.

R800 곱셈 외의 다른 명령어를 추가할지는 아직 미정입니다.



3. 내장램


기존 v2와 동일한 SRAM 4MB를 사용합니다.

BIOS, Kanji Shadow로 예약되는 영역이 있어서, DOS2에서 사용자가 쓸 수 있는 램은 약 3MB입니다.



4. 고속 모드용 내장 기기


4.1 디스크 드라이브


v2의 SD 드라이브는 제외되었습니다.

물론 빠르게 동작하는 디스크가 있으면 좋습니다만...

아무래도 실기 MSX를 쓴다는 컨셉(?)에서는 본체 내장된 FDD를 활용하는 것이 맞다고 생각되네요.


paraMSX-R의 V-Disk 에뮬과 동일한 방식으로 구현됩니다.

예를 들어 X-II에서 SLT-Turbo v2.1를 구동하면,

SLT-Turbo의 디스크(SLOT 3-2)를 액세스 시 X-II 본체의 FDD(SLOT 2)가 동작하는 식이죠.


4.2 비디오


사실 요놈 때문에 오랫동안 고민했었는데요.

추가된 비디오 기능을 활용할 수 있는 시나리오를 결국 못 찾았습니다 ㅠ.ㅠ


결론: 비디오 기능은 제거


4.3 오디오


v2에서 VS10x3, I2S DAC 정도를 고려했었는데요.

이젠 WAU가 있어서, 딱히 MP3, PCM 오디오를 추가 할 필요는 없어졌습니다.


결론: 오디오 기능은 제거



5. DMA 컨트롤러


기존 v2와 동일합니다.

약간의 차이라면...

v2는 슬롯 신호(/SLTSL)가 내장이라서, 외부 슬롯의 Memmory mapped I/O 사용 시 편리한데,

v2.1은 외부의 SLT-X를 컨트롤을 해야되니, 약간의 추가 클럭을 소진하게 됩니다.

아마 실제 활용은 I/O mapped 기기들이 될 확률이 높겠죠.



6. turboR 호환 기능들


기존 v2의 H/W Timer, 8BIT PCM 출력, MIDI 출력은 동일하게 들어갑니다.

단, MIDI OUT 포트는 2개에서 1개로 줄었습니다.


Z80 DRAM, R800 DRAM 모드는 BIOS Shadow포함 turboR 그대로 호환입니다.

Kanji Font는 Shadow(RAM)로 구현되어서, 런타임으로 폰트를 바꾸는 것도 가능합니다.


SLOT 3-3의 매퍼(일명 Panasonic mapper 8K)는 지원되지 않습니다.



마지막으로 보드 납땜 확인하느라 찍은 사진을 올려봅니다요.


MSX1 JP BIOS를 로딩해서 BASIC 루프 테스트를 한 모습입니다.



Z80 3.58MHz에서 M1 wait 클럭을 제거 및 Z80 7.16MHz로 구동한 경우의 모습입니다.



그럼, 다음편에서 보아요~


2025년 8월 24일 일요일

[IPS] 원령전기 한글판 - V4 KanjiRAM 패치


@ 사용법


1. 아래 키티야님의 블로그에서 한글판 파일을 다운로드

https://blog.naver.com/kkitty5425/223981713289


2. 윈도 커맨드 프롬프트에서 4개의 DSK 파일을 하나로 합치기

COPY /B OSMAIN_K.DSK + OSS1_K.DSK + OSS2_K.DSK + OSS3_K.DSK ONRYU_K.DSK


3. ONRYU_K.DSK에 ONRYU_K_(V4_KanjiRAM_patch).ips 패치를 적용

ONRYU_K_(V4_KanjiRAM_patch).ips


4. KANJI.ROM 파일명을 ONRYU_K.KNJ으로 변경


5. ONRYU_K.DSK, ONRYU_K.KNJ 파일을 V4의 SD카드로 복사


6. MSX에서 MMCSD ONRYU_K.DSK 명령으로 실행



@ 주의


Kanji RAM 패치가 완벽하지 않을 수 있음


2025년 8월 23일 토요일

[MSX] 오랜만의 캐슬 엑셀런트 플레이 (feat. 22년 묵은 세이브파일)

캐슬 시리즈에는 캐슬, 캐슬 엑셀런트 이렇게 두편이 있죠.


저는 캐슬 엑셀런트를 먼저 플레이했었습니다. 어머니가 사주신 롬팩으로요 ㅎ.ㅎ

근데 국딩 어린이의 실력으로는 캐슬 엑셀런트가 꽤 어려워서,

늘 1/3 정도 진행 후 막혀서 포기하고 아이큐2000을 끄곤 했었어요.


나중에 캐슬을 하게 되었는데, 이건 좀 쉽더라구요.

공주를 만나고 해피 엔딩으로~~ 완료! ㅎ.ㅎ


그리고...

시간은 흘러~ 흘러~ 대학을 졸업하고 직딩이 되었습니다.

당시 기억이 가물가물합니다만, GT를 구하기 전에는 저도 에뮬을 굉장히 많이 썼거든요.

암튼 퇴근 후 에뮬로 캐슬 엑셀런트를 재도전했던 적이 있습니다.

예전 세이브 파일이 남아있는지 확인해보니...

두둥~~ 2003년 1월 29일 밤 11시에 저장했던 파일이 나오네요 ㅎ.ㅎ




혹시 모르시는 분들을 위해 잡설을 추가해보자면...

paraMSX에서는 상태 저장(save states) 시, 스크린샷을 BMP로 만든 후 파일 뒷부분에 세이브 데이터를 붙여줍니다.

그러니까, 그림파일에 세이브 데이터를 포함하는 건데요, 예전 이스 이터널에서 쓰이던 방식이었죠.


다시 캐슬 이야기로 돌아옵니다.

실기에서 캐슬 엑셀런트를 다시 플레이하기 위해,

paraMSX의 세이브 파일의 데이터를 솎아내서 MMC/SD용 세이브 파일로 변환했습니다.

아래는 세이브 했던 방을 클리어 하는 모습이네요.

뒤에서 구경하던 막내 딸내미가 영상을 찍어줬습니다ㅋㅋ

***** 스포 주의!! *****



시간 날 때 조금씩 진행해서 끝을 봐야겠습니다요~ ㅎ.ㅎ/



[ 캐슬 엑셀런트 도전기 ]


1987년 아이큐2000으로 첫 플레이 -> 포기

2003년 paraMSX로 재도전 -> 70% 진행 후 잊음

2025년 A1GT + V4로 재도전


2025년 8월 1일 금요일

DW의 지하실 제작 #6 - 자동 데모, 난이도 설정 및 이어하기

@ 오토플레이 데모


게임의 규칙은 복잡하지 않습니다만, 아무런 설명도 없으면 좀 그렇죠?ㅎ

첫 스테이지에서 자동으로 진행되는 데모를 넣어보았습니다.

화면 아래에 간단히 설명도 붙였구요.

타이틀 화면을 가만히 두면(약 20초), 데모플레이가 시작됩니다.




@ 난이도 설정


새 게임 진입 시 난이도를 고를 수 있습니다.

쉬움, 보통, 어려움으로 3가지이구요. 기본 선택은 '보통'입니다.

난이도에 따라 회복 아이템의 개수, 몬스터 종류 비율이 달라집니다.

'어려움' 난이도에서는 '폰' 아이템이 시작점이 아닌 랜덤한 위치에 생성됩니다.




@ 이어하기


게임을 세이브하면 카트리지에 데이터가 저장 후 타이틀 화면으로 돌아갑니다.

시작 메뉴에서 '이어하기'를 선택해서 계속 플레이할 수 있습니다.


아래 키를 누르면, 아무때나 세이브 가능합니다.

키보드: SPACE 또는 ESC

조이스틱: A

조이메가: B 또는 START



@ 그 밖의 정보


스테이지 클리어를 위해서는 실제 키보드로 한글 단어(또는 문장)을 입력해야합니다.

만약 키보드를 쓸 수 없는 환경에서는 GRAPH 키를 눌러서 입력을 스킵하세요.

조이스틱(버튼B), 조이메가(버튼C)를 눌러도 스킵됩니다.


게임 플레이는 당연히 하이리스크 하이리턴입니다.

X-II 종류에 상관없이 배터리를 넣어서 켜면 모두 득점이 됩니다.

HP의 여유가 있다면, 모든 X-II를 다 켜서 고득점을 노려주세요!

'Z80 몬스터'가 튀어나오는 '요상한 X-II'는 주의하시구요.

참고로 X-II 종류는 레이더에서 색깔로 확인할 수 있습니다. (하양, 노랑, 빨강)


모든 몬스터는 장애물 또는 아이템(X-II, 배터리 등)을 통과하지 못합니다.

따라서 배터리를 다 줍는 것도 적에게 도움이 됩니다ㅋ



마지막으로 오토플레이 데모와 초반 진행 모습을 찍어보았습니다.

세이브 및 이어하기도 포함되어 있으니 참고하시구요.




2025년 7월 20일 일요일

DW의 지하실 제작 #5 - 게임 플레이 구현

재료(?)들은 준비되었으니, 이제 본격적인 코딩으로 들어갑니다.

.

.

사실 그냥 노가다입니다요~ ㅎ.ㅎ



내용을 설명으로 적어보면요...


플레이어는 바닥에 떨어진 배터리를 줍는다. 최대 5개 소지가능.

X-II에 배터리 2개를 넣으면 전원이 켜짐. 안켜지는 고장난 X-II도 존재.

적과 부딛히거나 바닥의 누액을 밟으면 체력이 소모됨.

피로회복제로 체력 회복 가능.


적들(유령 및 몬스터)는 주변의 켜진 X-II로 돌아가려함.

X-II에 적 하나가 들어가면, 화면에 한글 글자 1개가 나타남.

해당 스테이지에 맞는 한글 글자를 모두 얻으면, 최종 X-II를 얻을 수 있음.

최종 X-II에서 키보드 테스트(한글 입력)를 완료하면 스테이지 클리어!


주변의 방들은 서로 연결되어있으며, 휴대폰 아이템을 얻으면 화면에 지도가 나타남.

지도상에는 정상적인 X-II(흰색)와 고장난 X-II(빨간색)가 표시되며,

정상 X-II를 켜면 파란색으로 바뀜.


아이큐1000, 아이큐2000, 데이터레코더 등의 아이템으로 보너스 점수 획득가능.


... 이렇습니다. 글로 적으니까 복잡하네요ㅋ



그냥 영상으로 보시죠~ ㅎ.ㅎ/




'DW의 지하실'의 플레이는 이렇게 완성되었습니다.

스테이지 데이터는 아직 다 만들어진 상태는 아닌데요, 며칠 더 삽질이 필요하겠습니다.


2025년 7월 16일 수요일

DW의 지하실 제작 #4 - 사운드 넣기

게임이 MSX2 기본 사양(물론 VRAM은 128KB)이라, 사운드도 그냥 PSG만 사용합니다.

CPU 여유가 되면 FM도 넣어볼까 생각은 해봤었는데, 그래픽 때문에 좀 불가능할 것 같네요

BGM과 효과음도 모두 PSG만 사용하니까, 효과음 출력 시 BGM 한채널이 MUTE되는 걸 볼 수 있겠습니다!


먼저 타이틀에 쓰일 곡으로 '드뷔시 달빛'을 템포를 약간 올려서 넣었구요.

게임 메인 BGM은 '라데츠키 행진곡'입니다.

제목은 기억 못하더라도(제가 그랬...ㅋ) 곡 자체는 귀에 익으실 겁니다요 ㅎ.ㅎ


사운드 루틴은 VDP의 스캔라인 인터럽트를 활용합니다.

아무래도 V블랭크 구간에서는 그래픽 작업때문에 CPU가 바빠서 사운드 타이밍을 밀었습니다~


아래는 CPU로드 그래픽을 켠 상태이니, 참고하세요.

색칠된 스캔라인 개수가 CPU로드를 나타낸다고 보시면 됩니다.

사운드는 한 프레임 출력의 절반쯤에서 처리되고 있어요.




사운드는 딱히 설명할 부분이 없네요. 으흠...

그냥 영상으로 구경하시죠~ ㅎ.ㅎ/



그럼, 다음 편에서 뵈어요~ ㅎ.ㅎ/


2025년 7월 13일 일요일

DW의 지하실 제작 #3 - 스프라이트 구성

아시다시피 MSX의 스프라이트는 컬러코드가 4BIT입니다.

V9938의 G7(스크린8)에서는 그래픽은 RGB 8BIT 출력이 됩니다만, 스프라이트는 여전히 4BIT죠.


근데, 한가지 문제라면,

스크린8에서는 스프라이트가 16컬러로 고정되어 출력됩니다. 팔레트 레지스터의 영향을 받지않아요.

바꿔말하면 MSX1의 스프라이트랑 비슷한 색으로 나옵니다. 실제로는 EGA 16컬러에 더 가까운 듯요 ㅎ.ㅎ


암튼 잡설은 여기까지구요, 스프라이트를 만들어봅시다요!

이전 글에서 언급했지만, 플레이어는 비트맵 그래픽(16 x 24)로 구현되어 있습니다.

나머지 몬스터와 잡다 효과용 패턴만 스프라이트를 적용합니다.


먼저 그림판으로 밑그림을 그려보아요.



이제 스프라이트 데이터를 만들어야하는데요.

예전엔 주로 DD구락부를 썼지만, 이번엔 그냥 YY-CHR 프로그램을 사용했습니다. (귀찮 귀찮...ㅋ)

'2BPP MSX' 포맷으로 놓으면, 연속한 번호(짝, 홀)의 패턴 두개를 2BIT 컬러로 보여주는데요.

실제 MSX2에서는 스프라이트 OR 연산된 출력과 같은 효과를 얻을 수 있습니다. 

적 캐릭터 하나당 8개의 패턴이 필요하고, 애니메이션 효과를 위해 4배의 패턴을 그려야합니다.



참고로, 실제 VRAM에는 아래처럼 1BPP 데이터로 들어갑니다요.



VDP는 8 x 8 패턴 256개의 스프라이트를 처리합니다.

보통 게임에서는 16 x 16 패턴을 쓰니까, 64개의 스프라이트라고 보면 되겠죠?

여기서 캐릭터가 상하좌우 등의 여러가지 모습을 보여주려면, 실제 한번에 쓸 수 있는 패턴 수가 팍팍 줄어버립니다.

결국 전체 패턴 메모리를 여러벌로 쓰는 방법밖에는 없죠.


아래는 VRAM Page 0의 가용 메모리를 쪼개서 스프라이트로 할당한 모습입니다.

참고로 스프라이트 어트리뷰트도 2벌을 쓰고 있습니다. 테어링을 막는 가장 쉬운 방법이죠. 페이지 플립이요!




그럼, 실제 화면에서는 어떻게 나오는지 보아요.

애니메이션은 6프레임 당 한번씩 패턴이 바뀝니다. 바꿔말하면, 초당 10프레임으로 애니메이션이 진행됩니다.




그럼, 다음 편에서 뵈어요~ ㅎ.ㅎ/


2025년 7월 10일 목요일

DW의 지하실 제작 #2 - 그래픽(비트맵) 구성

그래픽 데이터를 만들어봅시다.

모든 스크린샷은 에뮬에서 캡쳐한 것이니 참고하시구요.


먼저 부팅 후 게임 오프닝에 나올 X-II의 모습입니다.

256 x 192 사이즈로 맞춘 비트맵입니다.




다음은 타이틀 화면에 나오는 컴컴한 지하실의 모습이네요ㅋ




스크린8에서는 VRAM 페이지 용량이 64KB입니다. 결국 2페이지로 게임 구현이 되어야합니다.

페이지 1에는 플레이어, 아이템, 배경 등에 쓰일 그래픽이 들어가겠구요.

그래픽 처리를 쉽게 할 수 있도록, 게임 화면의 백업 데이터를 남겨둡니다.




아래는 페이지 0에 표시된 게임 화면입니다. 표시영역은 256 x 192 픽셀이욤.

아래쪽에 보이지 않는 부분(256 x 64 픽셀)은 스프라이트 데이터로 쓰이겠습니다.




대충 어떤식으로 보여지는지 아시겠죠?


그럼, 다음 편에서 뵈어요~ ㅎ.ㅎ/


2025년 7월 6일 일요일

DW의 지하실 제작 #1 - X-II를 찾아서



국딩 시절에는 이 광고를 보면서, 다들 최고급 기종에 대한 환상 같은 게 있었죠. 명조체 한글이라니!

물론 실물을 만져보는 순간... 그 환상은 뿅~하고 사라졌지만요ㅋㅋ


그 후 30년 정도는 X-II를 잊고 지냈습니다만...

2018년에 일명 대란이 터지면서 창고(?)에서 잠자던 X-II가 쏟아져나왔지요.

저도 당시의 본체 2대를 받아서 열심히 굴리고 있습니다 ㅎ.ㅎ/


그리곤 시간이 꽤 흘렀네요.

당시의 X-II를 수리해서 쓰는 경우도 많아서, 이젠 X-II를 갖고 계신 분들이 많은데요.

갑자기 이런 생각이 떠올랐습니다.


창고에서 정상 동작하는 X-II를 찾는 게임을 만들면 재밌을까? 이런 생각이요!


일단 제목부터 지어봅니다. 'DW의 지하실'

네, DW는 그 회사의 이니셜 맞습니다ㅋ



@ 요구환경


게임 사양은 256KB(2메가비트)의 작은 메가롬팩으로 제작됩니다.

램 64KB의 기본 MSX2에서 실행됩니다만, VRAM은 128KB가 필수가 되겠습니다.



@ 그래픽


모든 그래픽은 스크린8(VDP G7 모드)을 사용합니다.

이 모드는 그래픽 부하도 높고, 팔레트를 쓸 수 없고, 스프라이트 색이 고정된다는 등의 제약이 있지만,

한번쯤은 256컬러 모드로 게임을 만들어보는 것도 재밌을 것 같더라구요.

게임 화면은 흔히 보는 탑뷰 형식입니다.



@ 사운드


현재 PSG만 사용하는 것으로 진행중입니다만, 혹시 여유가 되면 FM을 추가할 가능성도 있습니다.

사실 여유가 되면 PSG PCM을 넣는 쪽이 더 끌립니다만, 아직 확정된 건 아니네요.



@ 게임 플레이


한줄로 표현하면,

-> 지하실에 흩어진 건전지를 모아서 X-II를 켠 후, 동작 테스트가 되면 스테이지가 클리어!

가 되겠습니다. 간단하죠? ㅎ.ㅎ


지하실은 여러개의 방으로 구성이 됩니다.

스크롤은 불가능하고 장면전환 되는 식이에요. 메탈기어를 떠올려보시면 되겠습니다.


주인공을 방해하는 DW의 망령들이 돌아다닙니다만,

RGB 모니터를 좋아하는 유령이라서, X-II를 켜서 물리칠 수 있습니다요!

음... 모니터 속으로 사라진다는 표현이 더 맞겠네요.


최종 X-II 키보드 테스트에서는,

유령들이 알려주는 단어(또는 문장)를 입력해야합니다.

실기에서 플레이하려면 키보드가 멀쩡한 기종을 쓰는 게 유리하겠죠? (X-II 실기는 애로사항이...)



마지막으로 타이틀 화면을 올려보아요~



그럼, 이만...


2025년 6월 22일 일요일

M File Manager v4.7 for MSX-DOS2

Download: M_v4.7_20250625.zip

----------------------------------------------------------------

    M File Manager v4.7 for MSX-DOS2 (2025-06-22)

        By Yeongman Seo <sharksym@hitel.net>

----------------------------------------------------------------


* UPDATE


  @ 기능 변경/개선


  - 일반 모드에서 메모리매퍼 사용량이 192KB에서 224KB로 늘었습니다.

    Lite 모드는 기존과 변함없습니다.


  - M.INI에서 IMS용 BNK 설정을 제거됨.

    기본 BNK파일 설정은 STANDARD.BNK입니다. 기존과 변함없음.


  - 문자열 입력 시 TAB키를 누르면 타겟 윈도의 path가 삽입됩니다.


  - Rename 및 Mkdir 동작 후, 해당 파일/디렉토리로 커서가 이동합니다.


  - LFN 모드 개선

    왼쪽 윈도가 넓게 표시되며, 모든 긴파일명을 한번에 볼 수 있습니다.


  @ 기능 추가


  - WAU 브라우저 (Tiny Browser)

    내장명령을 통해 아래 사이트의 브라우징을 할 수 있습니다.

    #WAUB GitHub <account>

    #WAUB MSX-Archive


    M 디렉토리에 CACHE.WAU 서브디렉토리가 생성됩니다.

    임시파일 및 사이트 캐시파일을 저장하는 용도입니다.

    아래 명령으로 임시파일 및 GitHub 캐시파일을 삭제할 수 있습니다.

    #WAUB Cleanup


    MSX-Archive 의 캐시파일은 사용자가 직접 삭제해야 합니다.

    디스크 용량이 부족하지 않다면 그냥 두시길 권장합니다.


WAU 제작 #18 - Tiny Browser

MSX에서 일반적인 웹브라우징을 하겠다는 얘기는 정신 나간 소리겠죠? ㅎ.ㅎ

근데, '파일만 살짝 받을 수 있는 브라우저가 있으면 좋겠다'는 생각을 다들 해보셨을 겁니다요.


지난 WAU 제작 글을 찾아보니, GitHub용 간이 브라우저 얘기를 작년 10월에 했었네요ㅋ

https://sharksym.blogspot.com/2024/10/wau-4-github.html


그래거, M 파일 매니저의 UI를 이용해서, 간이 브라우저를 구현해봤습니다.

이름은 Tiny Browser이구요. (쪼꼬미 브라우저~) 

M에서는 내장 명령어 #WAUB를 쓰면 실행됩니다.

펑션키 메뉴에 등록해서 쓰시면 편하겠죠. 타이핑에 자신있으시면, 커맨드라인 창으로 입력하시구요!


왼쪽 패널(윈도)가 LFN 모드와 동일한 폭으로 넓게 표시됩니다.

현재 지원되는 사이트는 GitHub, MSX-Archive 입니다.


기본적인 디렉토리 이동, 파일 복사 등의 기능은 M에서 디스크를 액세스 하는 것과 동일한 방식이구요.

기존 확장자별 메뉴, 펑션키 메뉴 및 커맨드라인 기능들 모두 처리가능 하니까, 별 이질감 없이 쓰실 수 있겠습니다.



1) GitHub


#WAUB 실행 시 깃헙 계정을 함께 입력하면, 해당 계정의 저장소(repo)를 검색해서 루트 폴더로 표시해줍니다.

예를 들어, 저의 sharksym 계정은 '#WAUB GitHub sharksym'으로 명령을 쓰면 되겠죠.



아래는 CPMEMU_HI-TECH_C가 표시된 모습입니다.



파일들은 다중선택이 되니까, 쉽게 복사할 수 있습니다.

디스크 드라이브에서는 디렉토리 째 복사 가능하지만, GitHub에서는 현재 디렉토리에서 선택된 파일만 가능합니다.



파일을 디스크로 복사하지 않고 그냥 GitHub 브라우저 상태에서 바로 실행도 가능합니다.

이 때, 선택된 파일은 M의 임시 디렉토리(CACHE.WAU)에 복사되어 처리됩니다.



긴파일명도 잘 표시됩니다.

파일을 복사하게 될 때는 내부 기준(ㅋ)으로 변환된 8.3 포맷의 파일명으로 다운로드합니다.

파일명의 뒷부분이 잘리게 되니까, 확장자가 동일하고 앞부분 이름이 같으면 복사할 때 중복이 될 수 있으니 주의하세요.

하나씩 복사 후 이름을 변경하시는 걸 권장합니다.



다른 분의 깃헙에 접속해볼까요? 아래는 클랴님의 깃헙에 접속한 모습입니다~ ㅎ.ㅎ




2) MSX-Archive


오래된 네덜란드의 아카이브 서버입니다.

일반 PC 또는 다른 기종용 파일들이 많아서, MSX용 디렉토리 일부만 쓸 수 있도록 했습니다.

파일목록이 자주 바뀌는 곳이 아니라서, 캐시로 데이터를 저장하고 재사용합니다.

처음 접속 때 한번만 목록을 받는다고 이해하심 되겠어요.



여기는 파일 다중 선택/복사가 지원되지 않습니다. 파일을 하나씩 다운로드해주세요~ ㅎ.ㅎ



살색 그림파일도 잔뜩..ㅋ




아래는 실기에서 동작하는 모습입니다.

브라우저는 GitHub, MSX-Archive 순으로 나오니까 참고하시구요.



그럼, 이만...



2025년 6월 11일 수요일

M 파일매니저의 새로운 LFN 모드

New LFN(긴파일명) 모드


2개의 윈도(pane)로 처리되는 부분에서 이름을 표시하는데엔 조금 무리가 있었죠. 화면 딱 절반이라...

기존 방식은 현재 커서가 선택된 파일의 LFN을 화면 하단에 표시하는 방식이었구요.

바뀐 방식은 왼쪽 윈도를 조금 넓게 만들어서 LFN 전용으로 쓰고,

오른쪽 윈도는 좁은 폭에 맞춰 파일명과 사이즈만 표시하는 식입니다.


실제 화면은 아래처럼 나옵니다.

MP3, VGM 플레이 할 때, LFN 목록을 한번에 볼 수 있어서 좋습니다요~ ㅎ.ㅎ

참고로 모드 전환키(CTRL + L)는 기존과 똑같습니다.






그럼, 이만...