Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,42 @@
|
|||
putch: equ 2 ; MS-DOS syscall to print character
|
||||
puts: equ 9 ; MS-DOS syscall to print string
|
||||
argmt: equ 5Dh ; MS-DOS still has FCB in same place as CP/M
|
||||
cpu 8086
|
||||
org 100h
|
||||
section .text
|
||||
mov cx,4 ; Default order is 4
|
||||
mov al,[argmt]
|
||||
sub al,'3' ; Argument is there and makes sense? (3 - 7)
|
||||
cmp al,7-3
|
||||
ja start ; If not, use default
|
||||
add al,3 ; If so, use it
|
||||
mov cl,al
|
||||
start: mov bl,1 ; Let BL be the size (2 ** order)
|
||||
shl bl,cl
|
||||
mov bh,bl ; Let BH be the current line
|
||||
line: mov cl,bh ; Let CL be the column
|
||||
mov dl,' ' ; Indent line with spaces
|
||||
mov ah,putch
|
||||
indent: int 21h
|
||||
loop indent
|
||||
column: mov al,cl ; line + column <= size?
|
||||
add al,bh
|
||||
cmp al,bl
|
||||
ja .done ; then column is done
|
||||
mov al,bh ; (line - 1) & column == 0?
|
||||
dec al
|
||||
test al,cl
|
||||
jnz .print ; space if not, star if so
|
||||
mov dl,'*'
|
||||
.print: int 21h
|
||||
mov dl,' '
|
||||
int 21h
|
||||
inc cx ; next column
|
||||
jmp column
|
||||
.done: mov dx,nl ; done, print newline
|
||||
mov ah,puts
|
||||
int 21h
|
||||
dec bh ; next line
|
||||
jnz line
|
||||
ret
|
||||
nl: db 13,10,'$'
|
||||
Loading…
Add table
Add a link
Reference in a new issue