틈틈히 작업 중인 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 일부분입니다.
에뮬에서 구동한 모습입니다.
댓글 없음:
댓글 쓰기