自制操作系统(八、实现图形界面)

这次的文章超4w字!全是干货!

一、先看看示例代码

    ; 初始化文本模式视频
    mov ah, 0x00
    mov al, 0x03 ; 80x25 文本模式
    int 0x10

    ; 设置矩形的起始坐标和大小
    mov dh, 0 ; 矩形上边的 y 坐标
    mov dl, 0 ; 矩形左边的 x 坐标
    mov bh, 0  ; 页面号
    mov cx, 0  ; 矩形的宽度和高度
    mov cl, 10  ; 宽度
    mov ch, 10  ; 高度

    ; 绘制矩形
    draw_rect1:
        ; 设置光标位置
        mov ah, 0x02
        int 0x10

        ; 设置矩形颜色
        mov ah, 0x09
        mov al, ' ' ; 空格字符
        mov bl, 0x1E ; 使用预设的蓝底黄字
        int 0x10
        add dl, 1
        loop draw_rect1

其实多多少少有点伪代码的意思

 和ipl编译一下,虚拟机看到蓝屏

!!!IPL.asm更新了!!!亲测有效


; TAB=4

CYLS	EQU		10				; 声明CYLS=10

		ORG		0x7c00			; 指明程序装载地址

; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code

		JMP		entry
		DB		0x90
		DB		"HAN     "		; 启动扇区名称(8字节)
		DW		512				; 每个扇区(sector)大小(必须512字节)
		DB		1				; 簇(cluster)大小(必须为1个扇区)
		DW		1				; FAT起始位置(一般为第一个扇区)
		DB		2				; FAT个数(必须为2)
		DW		224				; 根目录大小(一般为224项)
		DW		2880			; 该磁盘大小(必须为2880扇区1440*1024/512)
		DB		0xf0			; 磁盘类型(必须为0xf0)
		DW		9				; FAT的长度(必??9扇区)
		DW		18				; 一个磁道(track)有几个扇区(必须为18)
		DW		2				; 磁头数(必??2)
		DD		0				; 不使用分区,必须是0
		DD		2880			; 重写一次磁盘大小
		DB		0,0,0x29		; 意义不明(固定)
		DD		0xffffffff		; (可能是)卷标号码
		DB		"HANOS      "	; 磁盘的名称(必须为11字?,不足填空格)
		DB		"FAT12   "		; 磁盘格式名称(必??8字?,不足填空格)
		RESB	18				; 先空出18字节

; 程序主体

entry:
		MOV		AX,0			; 初始化寄存器
		MOV		SS,AX
		MOV		SP,0x7c00
		MOV		DS,AX

; 读取磁盘

		MOV		AX,0x0820
		MOV		ES,AX
		MOV		CH,0			; 柱面0
		MOV		DH,0			; 磁头0
		MOV		CL,2			; 扇区2

readloop:
		MOV		SI,0			; 记录失败次数寄存器

retry:
		MOV		AH,0x02			; AH=0x02 : 读入磁盘
		MOV		AL,1			; 1个扇区
		MOV		BX,0
		MOV		DL,0x00			; A驱动器
		INT		0x13			; 调用磁盘BIOS
		JNC		next			; 没出错则跳转到next
		ADD		SI,1			; 往SI加1
		CMP		SI,5			; 比较SI与5
		JAE		error			; SI >= 5 跳转到error
		MOV		AH,0x00
		MOV		DL,0x00			; A驱动器
		INT		0x13			; 重置驱动器
		JMP		retry
next:
		MOV		AX,ES			; 把内存地址后移0x200(512/16十六进制转换)
		ADD		AX,0x0020
		MOV		ES,AX			; ADD ES,0x020因为没有ADD ES,只能通过AX进行
		ADD		CL,1			; 往CL里面加1
		CMP		CL,18			; 比较CL与18
		JBE		readloop		; CL <= 18 跳转到readloop
		MOV		CL,1
		ADD		DH,1
		CMP		DH,2
		JB		readloop		; DH < 2 跳转到readloop
		MOV		DH,0
		ADD		CH,1
		CMP		CH,CYLS
		JB		readloop		; CH < CYLS 跳转到readloop
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'H'
	int 0x10

	mov al, 'a'
	int 0x10

	mov al, 'n'
	int 0x10

	mov al, 'O'
	int 0x10

	mov al, 'S'
	int 0x10


; 读取完毕,跳转到haribote.sys执行!
		MOV		[0x0ff0],CH		
		JMP		n

error:
		MOV		SI,msg

putloop:
		MOV		AL,[SI]
		ADD		SI,1			; 给SI加1
		CMP		AL,0
		JE		fin
		MOV		AH,0x0e			; 显示一个文字
		MOV		BX,15			; 指定字符颜色
		INT		0x10			; 调用显卡BIOS
		JMP		putloop

fin:
		HLT						; 让CPU停止,等待指令
		JMP		fin				; 无限循环

msg:
		DB		0x0a, 0x0a		; 换行两次
		DB		"load error"
		DB		0x0a			; 换行
		DB		0
n:
		times 510-($-$$) db 0		; 填写0x00直到0x001fe

		DB		0x55, 0xaa

不用org了,org在nasm总是出问题

二、结合HanOS内核代码+优化

这里不放代码,太多代码容易晕

效果图

 

下面提供代码

密集恐惧症慎看

    mov ah, 0x00
    mov al, 0x03 ; 80x25 文本模式
    int 0x10

    ; 设置矩形的起始坐标和大小
    mov dh, 0 ; 矩形上边的 y 坐标
    mov dl, 0 ; 矩形左边的 x 坐标
    mov bh, 0  ; 页面号
    mov cx, 0  ; 矩形的宽度和高度
    mov cl, 10  ; 宽度
    mov ch, 10  ; 高度

    ; 绘制矩形
draw_rect:
    ; 设置光标位置
    mov ah, 0x02
    int 0x10

    ; 设置矩形颜色
    mov ah, 0x09
    mov al, ' ' ; 空格字符
    mov bl, 0x04 ; 使用预设的蓝色
    int 0x10
    add dl, 1
    loop draw_rect
	mov ah, 02h
	xor bh, bh
	mov dh, 0
	mov dl, 0
	int 10h
	jmp .start

.wait_input3:
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	je .error
	mov ah, 0x0E
	int 0x10
	jmp .wait_input3

.wait_input4:
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	je .error
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jmp .wait_input4

.error:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	jmp .check_input_pass
.start:
	mov si, 0
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '"'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '('
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ')'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ','
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

.check_input_pass:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '('
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'w'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, ':'
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'l'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'h'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'o'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'g'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'h'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'a'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input3
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'W'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4

_start:
    ; 初始化文本模式视频
    mov ah, 0x00
    mov al, 0x03 ; 80x25 文本模式
    int 0x10

    ; 设置矩形的起始坐标和大小
    mov dh, 0 ; 矩形上边的 y 坐标
    mov dl, 0 ; 矩形左边的 x 坐标
    mov bh, 0  ; 页面号
    mov cx, 0  ; 矩形的宽度和高度
    mov cl, 10  ; 宽度
    mov ch, 10  ; 高度

    ; 绘制矩形
    draw_rect1:
        ; 设置光标位置
        mov ah, 0x02
        int 0x10

        ; 设置矩形颜色
        mov ah, 0x09
        mov al, ' ' ; 空格字符
        mov bl, 0x1E ; 使用预设的蓝色
        int 0x10
        add dl, 1
        loop draw_rect1


    mov ah, 0x0E
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'd'
	int 0x10
    mov dh, 23 ; 矩形上边的 y 坐标
    mov dl, 43 ; 矩形左边的 x 坐标
    mov bh, 0  ; 页面号
    mov cx, 0  ; 矩形的宽度和高度
    mov cl, 1  ; 宽度
    mov ch, 1  ; 高度

    ; 绘制矩形
    draw_rect2:
        ; 设置光标位置
        mov ah, 0x02
        int 0x10

        ; 设置矩形颜色
        mov ah, 0x09
        mov al, ' ' ; 空格字符
        mov bl, 0xF0 ; 使用预设的蓝色
        int 0x10

        ; 更新坐标并绘制下一个字符
        add dl, 1
        loop draw_rect2

start:
	mov ah, 02h
	xor bh, bh
	mov dh, 0
	mov dl, 0
	int 10h
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '"'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '('
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ')'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ','
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10


.print:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'H'
	int 0x10

	mov al, 'a'
	int 0x10

	mov al, 'n'
	int 0x10

	mov al, 'O'
	int 0x10

	mov al, 'S'
	int 0x10

	mov al, '/'
	int 0x10
	
    inc cx
    cmp cx, 5
    je _start

	cmp si, 1
	je .c
	cmp si, 2
	je .d
	cmp si, 6
	je .cSystem

	mov al, '>'
	int 0x10

	mov al, '>'
	int 0x10

.wait_input:
	mov ah, 0x00
	int 0x16
	cmp al, 'c'
	je .check_input_c1
	cmp al, 'e'
	je .check_input_e
	cmp al, 'p'
	je .check_input_print.py
	cmp al, '.'
	je .check_input_.
	cmp al, 'l'
	je .check_input_l
	cmp al, 'W'
	je .check_input_WiFi
	cmp al, 'w'
	je .writer
	cmp al, 'R'
	je .README
	cmp al, 'h'
	je .help
	cmp al, 0x0D
	je .bad_input
	mov ah, 0x0E
	int 0x10
	jmp .wait_input

.wait_input2:
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	je .bad_input
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jmp .wait_input2


.c:
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '>'
	int 0x10
	mov al, '>'
	int 0x10
	jmp .wait_input

.cSystem:
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, '>'
	int 0x10
	mov al, '>'
	int 0x10
	jmp .wait_input

.d:
	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '>'
	int 0x10
	mov al, '>'
	int 0x10
	jmp .wait_input

.check_input_.:
	mov ah, 0x0E
	int 0x10
	cmp si, 6
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '\'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'O'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'S'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '"'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '('
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ')'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ','
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	jmp .print

.check_input_l:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 's'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	cmp si, 0
	je .check_input_l0
	cmp si, 1
	je .check_input_l1
	cmp si, 6
	je .check_input_l6
	cmp si, 2
	je .check_input_l2

.check_input_l0:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	jmp .print

.check_input_l1:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'Y'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, '4'
	int 0x10
	mov al, '4'
	int 0x10
	mov al, '0'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	jmp .print

.check_input_l6:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	jmp .print

.check_input_l2:

	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '2'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'Y'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, '2'
	int 0x10
	mov al, 'B'
	int 0x10
	jmp .print

.check_input_py:
	cmp si, 2
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'h'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'o'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, ' '
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'p'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'r'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '.'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'p'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'y'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '6'
	int 0x10
	mov al, '6'
	int 0x10
	mov al, '6'
	int 0x10

	jmp .print

.check_input_e:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'x'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	MOV AL,0x13
	MOV AH,0x00
	INT 0x10
	jmp .done

.check_input_cd0:
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, ' '
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'H'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'a'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'O'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'S'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '/'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'C'
	je .check_input_cd1
	cmp al, 'D'
	je .check_input_cd2
	cmp al, 0x0D
	jne .wait_input
	mov si, 0
	jmp .print

.check_input_cd1:
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, ':'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '/'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'S'
	je .cd11
	cmp al, 0x0D
	jne .wait_input
	mov si, 1
	jmp .print

.cd11:
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'y'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 's'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'e'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'm'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '/'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 0x0D
	jne .wait_input
	mov si, 6
	jmp .print


.check_input_cd2:
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, ':'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '/'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 0x0D
	jne .wait_input
	mov si, 2
	jmp .print

.check_input_c1:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'd'
	je .check_input_cd0
	cmp al, 'l'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 's'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ax, 0x0600
	mov bx, 0x0700
	mov cx, 0
	mov dx, 0x184f
	int 0x10
	mov ah, 02h
	xor bh, bh
	mov dh, 0
	mov dl, 0
	int 10h
	jmp _start

.help:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'e'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'l'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'p'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'x'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'w'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'W'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	jmp .print

.README:
	mov ah, 0x0E
	int 0x10
	cmp si, 6
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'E'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'A'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'D'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'M'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'E'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '.'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'm'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'd'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '#'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'u'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'g'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'b'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'g'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, ','
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'u'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'k'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'f'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'g'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'w'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'b'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 'f'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'g'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'x'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'w'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'W'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	jmp .print

.bad_input:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'b'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'd'
	int 0x10

	jmp .print
.done:
	ret
	jmp .done

.check_input_WiFi:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'F'
	jne .wait_input
	
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'N'
	int 0x10

	mov al, 'A'
	int 0x10

	mov al, 'M'
	int 0x10

	mov al, 'E'
	int 0x10

	mov al, ':'
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '1'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '2'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '3'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '4'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '5'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'P'
	int 0x10

	mov al, 'A'
	int 0x10

	mov al, 'S'
	int 0x10

	mov al, 'S'
	int 0x10
	mov al, 'W'
	int 0x10

	mov al, 'O'
	int 0x10

	mov al, 'R'
	int 0x10

	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	mov ah, 0x00
	int 0x16
	cmp al, '1'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '2'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '3'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '4'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '5'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '7'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '8'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '9'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '0'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'W'
	int 0x10

	mov al, 'i'
	int 0x10

	mov al, 'F'
	int 0x10

	mov al, 'i'
	int 0x10

	mov al, ' '
	int 0x10

	mov al, 'i'
	int 0x10

	mov al, 's'
	int 0x10

	mov al, ' '
	int 0x10

	mov al, 'r'
	int 0x10

	mov al, 'e'
	int 0x10

	mov al, 'a'
	int 0x10

	mov al, 'd'
	int 0x10

	mov al, 'y'
	int 0x10

	jmp .print

.check_input_print.py:
	mov ah, 0x0E
	int 0x10
	cmp si, 2
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'y'
	je .check_input_py
	cmp al, 'r'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input

	
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '.'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'p'
	jne .wait_input

	
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'y'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'p'
	int 0x10

	mov al, 'r'
	int 0x10

	mov al, 'i'
	int 0x10

	mov al, 'n'
	int 0x10

	mov al, 't'
	int 0x10

	mov al, '('
	int 0x10

	mov al, '"'
	int 0x10

	mov al, '6'
	int 0x10

	mov al, '6'
	int 0x10

	mov al, '6'
	int 0x10

	mov al, '"'
	int 0x10

	mov al, ')'
	int 0x10

	jmp .print


.writer:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'r'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'e'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'r'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '+'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	jmp .print

	


作者自己加了很多命令(如果作者不是小学生,不用做作业的话估计都要几万行了)

现在内核代码足足有4681行

算上ipl差不多5000行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值