import os

asm = """
[BITS 16]
[ORG 0x7C00]
jmp start

banner: db 13,10,201,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,187,13,10
       db 186,'  NULLOS RGB PASTEL TERMINAL  ',186,13,10
       db 186,'  h=help w=wifi s=scan b=ble   ',186,13,10
       db 186,'  u=usb r=rf n=net t=tb       ',186,13,10
       db 186,'  TAB=panels KEYBOARD ONLY     ',186,13,10
       db 186,'  SEC LAB AUTHORIZED ONLY      ',186,13,10
       db 200,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,188,13,10,0

prompt: db 'nullos> ',0

tabs: dw t0,t1,t2,t3
t0: db '[TERM]',0
t1: db '[SET]',0
t2: db '[GUIDE]',0
t3: db '[TOOLS]',0

hlp: db 13,10,'h=HELP c=CLS w=WIFI s=SCAN b=BLE u=USB r=RF n=NET t=TB',13,10,0
wfi: db 13,10,'[WIFI] airmon/airodump/aireplay/deauth/handshake',13,10,0
scn: db 13,10,'[SCAN] nmap -sS -sV 10.0.0.0/24',13,10,0
ble: db 13,10,'[BLE] hcitool/gatttool/btlejuice/glitch',13,10,0
usb: db 13,10,'[USB] rubberducky/teensy/badusb/hidinject',13,10,0
rf: db 13,10,'[RF] rtl-sdr/gqrx/433/915/replay/jam',13,10,0
net: db 13,10,'[NET] ettercap/mitmproxy/arp-spoof/dns-spoof',13,10,0
tb: db 13,10,'[TB4] DMA/pcileech/REQUIRES THUNDERBOLT 4',13,10,0
unk: db 'Unknown. h for help.',13,10,0
crlf: db 13,10,0

start:
    mov ax,0x0003
    int 0x10
    mov si,banner
    call p

main:
    mov si,prompt
    call p
    xor di,di

rd:
    xor ah,ah
    int 0x16
    cmp al,13
    je cmd
    cmp al,8
    je bs
    cmp al,9
    je tab
    cmp di,31
    je rd
    mov ah,0x0E
    int 0x10
    mov [buf+di],al
    inc di
    jmp rd

bs:
    cmp di,0
    je rd
    dec di
    mov ah,0x0E
    mov al,8
    int 0x10
    mov al,' '
    int 0x10
    mov al,8
    int 0x10
    jmp rd

tab:
    mov si,crlf
    call p
    mov al,[tmode]
    inc al
    and al,3
    mov [tmode],al
    shl al,1
    xor ah,ah
    mov bx,tabs
    add bx,ax
    mov si,[bx]
    call p
    mov si,crlf
    call p
    jmp main

cmd:
    mov byte [buf+di],0
    cmp byte [buf],0
    je main
    mov al,[buf]
    cmp al,'h'
    je hp
    cmp al,'c'
    je clr
    cmp al,'w'
    je wf
    cmp al,'s'
    je sc
    cmp al,'b'
    je bl
    cmp al,'u'
    je us
    cmp al,'r'
    je rf
    cmp al,'n'
    je nt
    cmp al,'t'
    je tb4
    mov si,unk
    call p
    jmp main

hp: mov si,hlp jmp pdone
clr: mov ax,0x0003 int 0x10 mov si,banner jmp pdone
wf: mov si,wfi jmp pdone
sc: mov si,scn jmp pdone
bl: mov si,ble jmp pdone
us: mov si,usb jmp pdone
rf: mov si,rf jmp pdone
nt: mov si,net jmp pdone
tb4: mov si,tb
pdone:
    call p
    jmp main

p:
    lodsb
    cmp al,0
    je .r
    mov ah,0x0E
    int 0x10
    jmp p
.r: ret

tmode: db 0
buf: times 32 db 0

times 510-($-$$) db 0
dw 0xAA55
"""

with open('/home/workspace/nullos/src/kernel/kern.asm', 'w') as f:
    f.write(asm)
print("Written kern.asm")
