Files
Z80/main.c
2026-08-30 19:27:08 +02:00

66 lines
1.4 KiB
C

#include "boot.h"
#define VID_CMD 0x80
#define VID_DAT 0x81
#define VID_CMD_SET_TEXT_MODE 0
#define VID_CMD_SET_PIXEL_MODE 1
#define VID_CMD_CLR 2
#define VID_CMD_TEXT_POS_X 3
#define VID_CMD_TEXT_POS_Y 5
#define VID_CMD_PIXEL_POS_X 4
#define VID_CMD_PIXEL_POS_Y 6
void putc(char c){
io_out(VID_DAT, c);
}
void puts(char * s){
while(*s){
putc(*s);
s++;
}
}
void main(void)
{
delay_ms(100);
for(;;){
io_out(VID_CMD, VID_CMD_TEXT_POS_X);
io_out(VID_DAT, 0);
io_out(VID_CMD, VID_CMD_TEXT_POS_Y);
io_out(VID_DAT, 0);
io_out(VID_CMD, VID_CMD_SET_TEXT_MODE);
io_out(VID_CMD, VID_CMD_CLR);
for(uint8_t i=0; i<18; i++){
putc('0'+i);
puts("\r\n");
}
delay_ms(2000);
io_out(VID_CMD, VID_CMD_SET_PIXEL_MODE);
io_out(VID_CMD, VID_CMD_CLR);
for(uint8_t y=0; y<255; y++){
uint16_t py = 160 + y;
uint16_t px = 256;
io_out(VID_CMD, VID_CMD_PIXEL_POS_X);
io_out(VID_DAT, px&0xff);
io_out(VID_DAT, px>>8);
io_out(VID_CMD, VID_CMD_PIXEL_POS_Y);
io_out(VID_DAT, py&0xff);
io_out(VID_DAT, py>>8);
io_out(VID_CMD, VID_CMD_SET_PIXEL_MODE);
for(uint8_t x=0; x<32; x++)
io_out(VID_DAT, 0xff);
}
delay_ms(2000);
}
}