Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- this is the mbr
- ORG 0X7C00
- MOV SI, BOOTSTRING
- CALL TELETYPE
- TELETYPE:
- MOV AH, 0X0E
- MOV AL, [SI]
- CMP AL, 0
- JE .EXIT
- INT 0X10
- INC SI
- JMP TELETYPE
- .EXIT:
- RET
- BOOT:
- MOV AH, 0X02
- MOV AL, 1
- MOV CH, 0
- MOV CL, 2
- MOV DH, 0
- MOV DL, 0X80
- MOV BX, 0X7E00
- INT 0X13
- JC DISKERROR
- JMP 0X0000:0X7E00
- DISKERROR:
- MOV AH, 0X0E
- MOV AL, "?"
- INT 0X10
- BOOTSTRING:
- DB "BOOTING!", 0
- TIMES 510 - ($ - $$) DB 0;
- DB 0X55, 0XAA
- the kernel
- ORG 0X7E00
- MOV SI, KRNLHI
- CALL NEWLN
- CALL WRITE
- CALL NEWLN
- MOV SI, KRNLSTORY
- CALL WRITE
- CALL NEWLN
- ; msdos.sys is 0x7e00, io.sys is 0x8600, and command.com is 0x8800
- CALL 0X8800
- WRITE:
- MOV AH, 0X09
- CALL 0X8600
- RET
- NEWLN:
- MOV AH, 0X07
- CALL 0X8600
- RET
- JMP 0X8000
- KRNLHI DB "PANTERUTA DOS Kernel Loaded!", 0
- KRNLSTORY DB "Hello, this is a DOS kernel made by me, named after my cat Panteruta. I am just 13 so don't expect this DOS to do anything super complex, but i would love it being able to run a basic os like Windows 1.0 in the future!", 0
- times 2048 - ($ - $$) db 00
- command.com
- ORG 0X8800
- MOV CH, "C"
- MOV BL, 0
- COMMAND:
- CMP CL, 1
- JE COMMAND_INTERPRETER
- JMP COMMAND_OUTPUT
- RET
- COMMAND_OUTPUT:
- MOV BH, 0
- MOV SI, CMD
- CALL NEWLN
- MOV AL, CH
- INT 0X10
- CALL WRITE
- CALL INPUT
- CALL COMMAND_INTERPRETER
- JMP COMMAND_OUTPUT
- RET
- COMMAND_INTERPRETER:
- MOV SI, VERCMD
- MOV AX, 0
- CALL .READBUFFER
- CMP AX, 1
- JE .OUTPVER
- MOV AL, VER
- JE .OUTPVER
- CALL NEWLN
- CMP BH, 1
- JE .EXITCMD
- RET
- .READBUFFER:
- MOV AL, [SI]
- .LOOP
- CMP AL, 0
- JE .OUTPTRUE
- CMP AL, DL
- JNE .OUTPFALSE
- INC BH
- INC AL
- JMP .LOOP
- .OUTPTRUE
- MOV AX, 1
- RET
- .OUTPFALSE
- RET
- .OUTPVER:
- CALL NEWLN
- MOV SI, VER
- CALL WRITE
- JMP COMMAND_OUTPUT
- .CMD1:
- CALL NEWLN
- MOV AH, 0X0E
- MOV AL, "1"
- INT 0X10
- JMP COMMAND_OUTPUT
- .EXITCMD:
- MOV SI, BCMD
- CALL WRITE
- CALL NEWLN
- JMP COMMAND_OUTPUT
- RET
- WRITE:
- MOV AH, 0X09
- CALL 0X8600
- RET
- NEWLN:
- MOV AH, 0X07
- CALL 0X8600
- RET
- INPUT:
- MOV AH, 0X08
- CALL 0X8600
- RET
- VERCMD:
- DB "V", 0
- CMD:
- DB ":\>", 0
- BCMD:
- DB "Bad Command or File Name", 0
- VER:
- DB "Panteruta DOS Version 1.0", 0
- times 4096 - ($ - $$) db 00
- I/O
- ORG 0X8600
- OUTPUT:
- MOV DX, 0
- CMP AH, 0X09
- JE .TELETYPE
- CMP AH, 0X07
- JE .NEWLINE
- CMP AH, 0X08
- JE .INPUT
- .TELETYPE:
- MOV AH, 0X0E
- MOV AL, [SI]
- CMP AL, 0
- JE .END
- INT 0X10
- INC SI
- JMP .TELETYPE
- .END:
- RET
- .NEWLINE:
- MOV AH, 0X0E
- MOV AL, 0X0A
- INT 0X10
- MOV AL, 0X0D
- INT 0X10
- RET
- .INPUT:
- MOV DI, BUFFER
- MOV AH, 0X00
- INT 0X16
- CMP AL, 13
- JE .JMPFROMINPUT
- MOV [DI], AL
- INC DI
- MOV AH, 0X0E
- INT 0X10
- MOV BH, 1
- JMP .INPUT
- .JMPFROMINPUT:
- MOV DX, [BUFFER]
- RET
- BUFFER:
- TIMES 128 DB 0
- TIMES 512 - ($ - $$ ) DB 00
Advertisement
Add Comment
Please, Sign In to add comment