-
Notifications
You must be signed in to change notification settings - Fork 0
/
shelltemplate.asm
75 lines (71 loc) · 1.4 KB
/
shelltemplate.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
;@DESC This is a template shell for CQX96
;@NAME Shell
; THIS IS A SHELL TEMPLATE. YOU CAN USE IT TO CREATE YOUR
; OWN CQX96 SHELL.
org 32768
shell:
call 0009h ; Kernel API: NEWLINE
mov si, bracket
call 0003h ; Kernel API: PRINT_SI
call 0042h ; Kernel API: GET_USERNAME
mov ax, si
call 0045h ; Kernel API: STRING_UPPERCASE
mov si, ax
call 0003h ; Kernel API: PRINT_SI
mov si, thing
call 0003h ; Kernel API: PRINT_SI
mov ax, input
mov bx, 64
call 0012h ; Kernel API: USER_INPUT
mov ax, input
call 001Bh ; Kernel API: CHOMP
mov si, input
call 0060h
mov bx, 0
mov cx, 40960
call 0018h
jc .tryprgext
mov si, input
call 0060h
mov si, 0
mov di, 0
call 40960
jmp shell
.tryprgext:
mov ax, input
mov bx, prg
mov cx, input
call join
mov ax, input
call 001Bh ; Kernel API: CHOMP
mov si, input
mov bx, 0
mov cx, 40960
call 0018h ; Kernel API: LOAD_FILE
jc exit
mov ax, 0
mov bx, 0
mov cx, 0
mov dx, 0
mov si, 0
mov di, 0
call 40960
jmp shell
exit:
jmp shell
join:
pusha
mov si, ax
mov di, cx
call 0024h ; Kernel API: COPY_STR_TO_STR
call 002Ah ; Kernel API: GET_LENGTH
add cx, ax
mov si, bx
mov di, cx
call 0024h ; Kernel API: COPY_STR_TO_STR
popa
ret
bracket db "[",0
thing db "]:",0
input times 64 db 0
prg db ".PRG",0