2013년 10월 13일 일요일

M File Manager v1.9 for MSX-DOS2


Download: M_v1.9_20131013.zip


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

    M v1.9 (MSX-DOS2용 파일 매니져 2013.10.13)

        By 서영만 (E-mail:sharksym@hitel.net)

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


* 변경 내용


  파일뷰어의 정렬 모드가 늘었습니다.

  CTRL+S 키로 모드 변경이 가능합니다.

  [정렬 안함] > [이름순] > [확장자+이름순]으로 바뀝니다.

  기본 정렬 모드는 M.INI에 설정가능합니다.


  FDD의 가상 드라이브 액세스 시, 멈추는 문제가 수정되었습니다.


2013년 6월 24일 월요일

HI-TECH C - R800 곱셈 명령 테스트

R800은 파나소닉의 MSXturboR 모델에 들어가는 CPU 이름입니다.

Z80 호환 CPU이긴 하지만 속도가 무지빠르다는 장점을 갖고 있지요.


이번에는 R800 추가된 명령어인 MULUW 를 테스트해봤습니다.


사실 R800에 추가된 명령은 아래 딱 두개뿐인데요.

8BIT 곱셈명령 MULUB, 16BIT 곰셈명령 MULUW 


아래 그림에서 처럼,

16BIT x 16BIT 곱셈은 MULUW HL,BC밖에 못쓰는걸 알수있어요.




실제 C 코딩에서 활용할 수 있도록,

HI-TECH C의 16BIT 곱셈 루틴을 바꿔서 돌려보았습니다.

IMUL.AS 파일의 소스코드입니다.

파랗게 선택된 부분이 r800only가 선언된 LIB에서 동작하게 됩니다.

전체 코드가 MULUW HL,BC 명령으로 대체된걸 볼수 있습니다.




실제로 C로 코딩해서 테스트해봅니다~

아래처럼 간단 곱셈 루프를 돌려보는거죠! ㅎ.ㅎ




아래는 MAKEFILE용 CFG설정입니다.

뱅크2번은 LIBCMSXT.LIB로 링크되는걸 볼수 있습니다.

일반 LIBCMSX2.LIB와는 IMUL 루틴이 차이가 납니다.




아래는 제 터보알에서 구동해본 모습입니다.

CPU는 R800 DRAM인 고속 모드 상태로 동작중입니다.




실제로 테스트 해보실 분은 첨부파일 받아보셔요.

소스도 들어있습니다.

Download: R800_MUL_20130624.zip

Download: R800_MUL_SRC_20130624.zip


2013년 2월 26일 화요일

Jiwoo OS 만들기 - 커널 #1

틈틈히 작업 중인 OS 얘기입니다~ 첫글이군요!


HI-TECH C 를 주로 쓰다 이번엔 SDCC를 쓰고 있는데, 삽질 좀 많이 하네요.

그나마 컴파일러가 c99 를 일부분 지원해줘서 감사하게 생각하고 있습니다. ㅎ.ㅎ


소스는 GPL이구요.

전체적으로 리눅스 모양을 많이 따왔습니다. 

MSX가 아닌 Z80 베이스의 다른 컴퓨터(SPC-1000 등)에서도 쓸수 있도록 만드는게 목표인데, 잘 될지 모르겠네요. ㅋ


아직 스케쥴러, 파일 시스템은 구현이 안되어있구요. (문서만 대충...ㅋ)

driver만 조금 만들어보고 있습니다.

MSX는 time tick용 인터럽트가 따로 없어서, 그냥 VDP의 v-blk 인터럽트 쓰도록 했습니다.


메모리 쪽은 아래 처럼 가상의 32bit 주소로 배치되어있고, 메모리 간 전송은 virtual dma driver로 구현됩니다.

I/O 포트는 일반 Z80의 16bit 주소를 쓸수 있습니다.


  DDDD PP SS : xx HHHHHH : LLLLLLLL : LLLLLLLL

  |    |  |       |        |

  |    |  |       |        `16bits low addr

  |    |  |       `6bits high addr

  |    |  `sec-slot no

  |    `pri-slot no

  `device type

   b0000: RAM MAIN       (MAX 4096KB / slot)

   b0001: RAM DISK       (MAX 4096KB)

   b0010: VRAM MAIN      (MAX  128KB)

   b0011: VRAM EXT       (MAX   64KB)

   b1000: I/O PORT       (MAX   64KB)



아래는 코드 맛보기(?) 용 스크린샷입니다.

device, driver 구조는 리눅스랑 비슷합니다. 놀라지마세요~ ㅋ



start_kernel() 두둥~ ㅎ




machine 설정입니다.




vdp platform_device 네요.




vdp driver 일부분입니다.




에뮬에서 구동한 모습입니다.




2013년 1월 13일 일요일

FAT16.COM ver0.12 OCM KdL 디텍션 추가

OCM 내장된 MEGA-SD의 디스크롬은 FAT16 패치가 기본으로 포함되어있습니다.


만약 OCM에서 FAT16.COM을 한번 더 인스톨하게 되면 디스크 동작이 제대로 되지 않는데요.

이런 경우를 회피할수 있도록 FAT16.COM을 약간 수정해봤습니다.


아래 첨부파일 압축을 풀면 FAT16.COM이 나옵니다.

본체가 OCM KdL 버전이 아닌 경우 아래처럼 정상적으로 내부 FAT16.COM 코드가 수행됩니다.

OCM KdL 버전이 확인되면 아무동작않고 DOS로 나오게 되구요.


Download: FAT16_20130113_OCM_KdL_detect_2.zip



OCM에서는 아래처럼 FAT16 로딩않고 DOS로 그냥 나옵니다.