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로 그냥 나옵니다.




2012년 12월 25일 화요일

Jiwoo OS 만들기 - MSX용 OS

얼마전에 DOS2용 GUI 런처를 만들어볼까 생각한 적이 있는데요.

안드로이드용 홈런처 같은 것 말이죠. ㅎ.ㅎㅋ


하.지.만... 곧 마음을 접고 OS를 만들기로 정했습니다.


멀티 태스킹을 지원하고 기존 DOS1/2용 프로그램 실행을 위한 에뮬레이션(또는 DOS 전환)을 구현할 예정입니다.

기본 커널 만드는데에도 시간 꽤 걸리겠지만.ㅋ 조금씩 진행해봅니다요~~


컴파일러는 SDCC 윈도버전 사용합니다.

Z80 쪽으로는 문법이 좀 특이해서 다른 툴로는 좀 어려울것 같네요. ㅎ.ㅎ