ACID OS

March 30, 2007

Author: jart — Originally Posted 1217 Days Ago Article Tags « assembly »

ACID OS is an operating system (well, not really) written in Intel 8086 assembly language and is less than 512 bytes so it can be loaded off a single boot sector. It's chief purpose is to boot quickly off of a floppy and look intimidating to spectators, like something from a movie.

At the moment, ACID OS flashes a bunch of random colors and characters around the text, 'VIRUS, your computer is dead'. In the future I might extend the size of the image, write some C code and have it do other cool things like beep and show skulls and crossbones.

I wrote ACID OS back in 2003 when I was in high school to learn more about assembly language, BIOS, and the PC boot process. I even got a week of in-school suspension when I booted this on every computer in the school library.

Update - 2008-04-30

Getting ACID OS working on Ubuntu was tricky. Here is a list of packages you may need to install:

$ dpkg --get-selections | grep bochs
bochs                                           install
bochs-sdl                                       install
bochs-svga                                      install
bochs-wx                                        install
bochs-x                                         install
bochsbios                                       install

And here is the bochsrc file that should make things work all happy and nice.

megs: 32
romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000
vgaromimage: file=/usr/share/vgabios/vgabios.bin
vga: extension=vbe
floppya: 1_44=acidos, status=inserted status=inserted
boot: a
log: bochsout.txt
mouse: enabled=0
ips: 15000000
vga_update_interval: 150000

Download

[zip] acidos.tar.gz (81KB)

Testimonials

I actually have a copy of this that I used 3 odd years back. That was a delightful situation involving the university sys admin not letting me boot Knoppix. Me booting AcidOS, and the sys admin screaming, 'THE FUCKING VGA CARD MEMORY IS FRIED!'
- White_Rhyno

The Source

Here is the source for reference if you don't want to download the zip

; 
; ACID OPERATING SYSTEM
; Copyright (c) 2003 Lobstertech, Inc.
;
; This program is free software, distributed under the terms of the
; GNU General Public License v2 or later.
;
; Keep it open source pigs
;

[BITS 16]			; 16 bit code generation
[ORG 0x7C00]			; Origin location
	
	JMP	start

x	DW 0

	;; width 29 chars (0..28)
logo:	DB "\.      .! ^ ,--.  $  ^ .---,"
	DB " `\    /.  ! |  !  /  + |._  "
	DB "  ^\  .`   # <==.  |  +    `,"
	DB "    ``     I >   \ .__,  .__)"
	DB " _ ___ ___  ___ _ _ ____ __  "
	DB "    YOUR COMPUTER IS DEAD    "

start:	MOV	AX, 07C0h	; set this up so we can access memory
	MOV	SS, AX
	MOV	SP, 03FEh
	PUSH	CS
	POP	DS
	
	AND	AH, 0		; set vid mode 80x25
	MOV	AL, 2		; 6 is monochrome, 5 is messed up
	INT	10h
	AND	BX, 0		; first page, first color
	MOV	CX, 1		; one at a time
	AND	DX, 0		; dh = y, dl = x
	MOV	AH, 06h		; write char interrupt
go:	MOV	AL, 2
	ADD	AL, byte [x]
	ADD	AL, byte [x+1]
	ADD	byte [x], 7
	CALL	setch		; face character
	INT	10h
	ADD	BL, byte [x]	; change color - 13 works good
	ADD	BL, byte [x+1]
	MOV	AH, 02h		; move cursor
	INC	DL
	CMP	DL, 79
	JL	skip
	AND	DL, 0
	INC	DH
	CMP	DH, 24
	JL	skip
	AND	DH, 0
skip:	INT	10h
	MOV	AH, 09h
	JMP	go
	
setch:	CMP	DH, 7		; is cursor in logo area?
	JL	face
	CMP	DH, 12
	JG	face
	CMP	DL, 10
	JL	face
	CMP	DL, 38
	JG	face
	MOV	SI, logo	;		`si' stores pointer to char
	MOV	DI, DX		; save `dx'	`di' stores dx
	SUB	DH, 7
loopy:	CMP	DH, 0
	JE	dox
	ADD	SI, 29		; increase pointer a line
	DEC	DH
	JMP	loopy
dox:	SUB	DL, 10
	AND	DX, 00FFh	; cut off hi bits so we can add using dx
	ADD	SI, DX
	MOV	DX, DI		; restore `dx'
	MOV	AL, [SI]	; grab the char
	CMP	AL, ' '
	JE	fin
	MOV	BL, 0Eh		; yellow text on black
fin:	RET
face:	RET			; don't change the char

	times 510-($-$$) db 0	;  Fill the rest with zeros
	dw 0xAA55		;  Boot loader signature

Legal

ACID OS
Copyright (c) 2003-2006 Lobstertech, Inc.
Keep it Open Source Pigs

The programs found on this page are free software and may be used, distributed, and modified under the terms of the GNU General Public License version 2.0.

These patches are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Comments

  1. Mortus on January 27, 2009 [Permalink]

    i found 3 times in this image yext "GNU" xD

  2. jart on February 7, 2009 [Permalink]

    rms would be proud ^_____^

Post Comment