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 일부분입니다.




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