Date: Sat, 12 Dec 2009 13:24:06 +0000 (UTC) From: Takahashi Yoshihiro <nyan@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r200437 - user/nyan/pc98/sys/boot/pc98/boot2 Message-ID: <200912121324.nBCDO6QJ053889@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: nyan Date: Sat Dec 12 13:24:06 2009 New Revision: 200437 URL: http://svn.freebsd.org/changeset/base/200437 Log: - Disable setting machine type. - Add scrolling screen support. Modified: user/nyan/pc98/sys/boot/pc98/boot2/Makefile user/nyan/pc98/sys/boot/pc98/boot2/boot1.S Modified: user/nyan/pc98/sys/boot/pc98/boot2/Makefile ============================================================================== --- user/nyan/pc98/sys/boot/pc98/boot2/Makefile Sat Dec 12 13:08:47 2009 (r200436) +++ user/nyan/pc98/sys/boot/pc98/boot2/Makefile Sat Dec 12 13:24:06 2009 (r200437) @@ -38,6 +38,9 @@ CFLAGS= -Os \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ -Winline --param max-inline-insns-single=100 +# Set machine type to PC98_SYSTEM_PARAMETER +#CFLAGS+= -DSET_MACHINE_TYPE + # Initialize the bi_bios_geom using the BIOS geometry #CFLAGS+= -DGET_BIOSGEOM Modified: user/nyan/pc98/sys/boot/pc98/boot2/boot1.S ============================================================================== --- user/nyan/pc98/sys/boot/pc98/boot2/boot1.S Sat Dec 12 13:08:47 2009 (r200436) +++ user/nyan/pc98/sys/boot/pc98/boot2/boot1.S Sat Dec 12 13:24:06 2009 (r200437) @@ -104,8 +104,10 @@ main: cld and $0x00ffffff,%eax mov %eax,%es:(EPSON_ID) +#ifdef SET_MACHINE_TYPE /* Set machine type to PC98_SYSTEM_PARAMETER */ - call machine_check + call set_machine_type +#endif /* Setup graphic screen */ mov $0x42,%ah /* 640x400 */ @@ -210,11 +212,14 @@ putstr: lodsb /* * Display a single char. */ -putc: push %ds +putc: pusha xor %dx,%dx mov %dx,%ds mov MEM_REL+cursor-start,%di - mov $160,%cx + mov $0xa000,%bx + mov %bx,%es + mov $(80*2),%cx + cmp $0x08,%al je putc.bs cmp $0x0d,%al @@ -224,41 +229,55 @@ putc: push %ds cmp $0x5c,%al /* \ */ jne 1f mov $0xfc,%al -1: mov $0xa000,%bx - mov %bx,%es - mov $0xe1,%bl - mov %bl,%es:0x2000(%di) /* Attribute */ - stosb - inc %di - jmp putc.move +1: movb $0xe1,%es:0x2000(%di) + stosw + jmp putc.scr putc.bs: test %di,%di jz putc.move dec %di dec %di + movb $0xe1,%es:0x2000(%di) + movw $0x20,%es:(%di) jmp putc.move -putc.cr: /* xor %dx,%dx */ - mov %di,%ax +putc.cr: mov %di,%ax div %cx sub %dx,%di jmp putc.move putc.lf: add %cx,%di +putc.scr: cmp $(80*2*25),%di /* Scroll screen */ + jb putc.move + push %ds + mov %bx,%ds + mov $(80*2),%si + xor %di,%di + mov $(80*24/2),%cx + rep + movsl + xor %ax,%ax + mov $0x20,%al + mov $80,%cl + rep + stosw + pop %ds + mov $(80*24*2),%di putc.move: mov %di,MEM_REL+cursor-start /* Move cursor */ mov $0x13,%ah mov %di,%dx int $0x18 - pop %ds + popa lret cursor: .word 0 +#ifdef SET_MACHINE_TYPE /* * Set machine type to PC98_SYSTEM_PARAMETER. */ -machine_check: xor %edx,%edx +set_machine_type: + xor %edx,%edx mov %dx,%ds -# mov $MEM_SYS,%ax -# mov %ax,%es - +// mov $MEM_SYS,%ax +// mov %ax,%es /* Wait V-SYNC */ vsync.1: inb $0x60,%al test $0x20,%al @@ -310,8 +329,8 @@ m_not_h98: or $M_NOT_H98,%edx 1: mov $PC98_MACHINE_TYPE,%bx mov %edx,%es:(%bx) - ret +#endif /* Messages */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912121324.nBCDO6QJ053889>