Added message about compilation process on the compiler and fixed Makefile dependencies

This commit is contained in:
(Tim) Efthimis Kritikos 2023-02-25 01:42:09 +00:00
parent 6e8d951360
commit 0c36e9d78c
4 changed files with 92 additions and 70 deletions

View File

@ -17,10 +17,10 @@
# #
SYSTEM_VVP=system/system.vvp SYSTEM_VVP=system/system.vvp
BOOT_CODE=boot_code/brainfuck.txt BOOT_CODE=boot_code/brainfuck_mandelbrot.txt
GTKWSAVE=./gtkwave_savefile.gtkw GTKWSAVE=./gtkwave_savefile.gtkw
MICROCODE=system/ucode.txt MICROCODE=system/ucode.txt
BOOTABLES=boot_code/brainfuck_compiled.txt boot_code/brainfuck_mandelbrot.txt ${BOOT_CODE} BOOTABLES=boot_code/brainfuck_compiled.txt boot_code/brainfuck.txt ${BOOT_CODE}
NO_ASM=1 NO_ASM=1
include common.mk include common.mk

View File

@ -8,8 +8,8 @@ BUILD_FILES+=$(subst .asm,.bin,${SOURCE})
all: ${BINARIES} all: ${BINARIES}
brainfuck.bin: brainfuck_interpreter_v0.asm brainfuck.bin: brainfuck_interpreter_v0.asm
brainfuck_mandelbrot.bin: brainfuck_interpreter_v0.asm
brainfuck_compiled.bin: brainfuck_compiler_v1.asm brainfuck_compiled.bin: brainfuck_compiler_v1.asm
brainfuck_mandelbrot.bin: brainfuck_compiler_v1.asm
NO_ASM=0 NO_ASM=0
include ../common.mk include ../common.mk

View File

@ -5,3 +5,4 @@ prog:
.ASCII '+++++++.---.--.<<.>---------------------.>+++++.-----------------.++++++++.+++++.--------.+++++++++++++++.---------------' .ASCII '+++++++.---.--.<<.>---------------------.>+++++.-----------------.++++++++.+++++.--------.+++++++++++++++.---------------'
.ASCII '---.++++++++.<<<.>>>------------------.++++++++++++++++++++++.++++++.---.+.<<.>>+.--.+++.---------.+++++++++++++.<<++++++' .ASCII '---.++++++++.<<<.>>>------------------.++++++++++++++++++++++.++++++.---.+.<<.>>+.--.+++.---------.+++++++++++++.<<++++++'
.ASCII '++++++.------------.>----------.--------.++++++++.--.<<.' .ASCII '++++++.------------.>----------.--------.++++++++.--.<<.'
output_program:

View File

@ -20,12 +20,21 @@
mov sp,#STACK mov sp,#STACK
mov bx,#bootup_msg mov bx,#bootup_msg
mov ah,#0x02 mov ah,#0x02
bootup_print: print1:
mov dl,[bx] mov dl,[bx]
int #0x21 int #0x21
inc bx inc bx
cmp dl,#0x0A cmp dl,#0x0A
jne bootup_print jne print1
mov bx,#compiling
mov ah,#0x02
print2:
mov dl,[bx]
int #0x21
inc bx
cmp dl,#0
jne print2
MOV SI,#prog MOV SI,#prog
MOV DI,#output_program MOV DI,#output_program
@ -33,21 +42,6 @@ MOV DI,#output_program
MOV CX,#0 MOV CX,#0
JMP COMPILE ; Moving some functions above the main switch to make shot jumps work JMP COMPILE ; Moving some functions above the main switch to make shot jumps work
;;;;;;;;; . ;;;;;;;;;
WAS_PRINT:
CALL FLUSH_MOVES
CALL FLUSH_WRITES
MOV AX,#0x02B4 ; mov $0x2,%ah
STOSW
MOV AX,#0x178A ; mov (%bx),%dl
STOSW
MOV AX,#0x21CD ; int $0x21
STOSW
JMP COMPILE
;;;;;;;;; ] ;;;;;;;;; ;;;;;;;;; ] ;;;;;;;;;
WAS_PR: WAS_PR:
@ -80,55 +74,6 @@ MOV [BX],DI
JMP COMPILE JMP COMPILE
;;;;;;;;;;; ACTUAL START ;;;;;;;;;;;;;;;
COMPILE:
MOV AL,[SI]
INC SI
CMP AL,#'+
JZ WAS_PLUS
CMP AL,#'-
JZ WAS_MINUS
CMP AL,#'>
JZ WAS_MR
CMP AL,#'<
JZ WAS_ML
CMP AL,#'[
JZ WAS_PL
CMP AL,#']
JZ WAS_PR
CMP AL,#'.
JZ WAS_PRINT
MOV AL,#0xF4 ; hlt
MOV [DI],AL
MOV BX,#DATA
MOV AX,#output_program
JMP AX
;;;;;;;;; + ;;;;;;;;;
WAS_PLUS:
CALL FLUSH_MOVES
INC CL
JMP COMPILE
;;;;;;;;; - ;;;;;;;;;
WAS_MINUS:
CALL FLUSH_MOVES
DEC CL
JMP COMPILE
;;;;;;;;; > ;;;;;;;;;
WAS_MR:
CALL FLUSH_WRITES
INC CH
JMP COMPILE
;;;;;;;;; < ;;;;;;;;;
WAS_ML:
CALL FLUSH_WRITES
DEC CH
JMP COMPILE
;;;;;;;;; [ ;;;;;;;;; ;;;;;;;;; [ ;;;;;;;;;
WAS_PL: WAS_PL:
CALL FLUSH_MOVES CALL FLUSH_MOVES
@ -171,6 +116,80 @@ STOSW
JMP COMPILE JMP COMPILE
;;;;;;;;;;; ACTUAL START ;;;;;;;;;;;;;;;
COMPILE:
MOV AL,[SI]
INC SI
CMP AL,#'+
JZ WAS_PLUS
CMP AL,#'-
JZ WAS_MINUS
CMP AL,#'>
JZ WAS_MR
CMP AL,#'<
JZ WAS_ML
CMP AL,#'[
JZ WAS_PL
CMP AL,#']
JZ WAS_PR
CMP AL,#'.
JZ WAS_PRINT
mov bx,#compiled
mov ah,#0x02
print3:
mov dl,[bx]
int #0x21
inc bx
cmp dl,#0x0A
jne print3
MOV AL,#0xF4 ; hlt
MOV [DI],AL
MOV BX,#DATA
MOV AX,#output_program
JMP AX
;;;;;;;;; . ;;;;;;;;;
WAS_PRINT:
CALL FLUSH_MOVES
CALL FLUSH_WRITES
MOV AX,#0x02B4 ; mov $0x2,%ah
STOSW
MOV AX,#0x178A ; mov (%bx),%dl
STOSW
MOV AX,#0x21CD ; int $0x21
STOSW
JMP COMPILE
;;;;;;;;; + ;;;;;;;;;
WAS_PLUS:
CALL FLUSH_MOVES
INC CL
JMP COMPILE
;;;;;;;;; - ;;;;;;;;;
WAS_MINUS:
CALL FLUSH_MOVES
DEC CL
JMP COMPILE
;;;;;;;;; > ;;;;;;;;;
WAS_MR:
CALL FLUSH_WRITES
INC CH
JMP COMPILE
;;;;;;;;; < ;;;;;;;;;
WAS_ML:
CALL FLUSH_WRITES
DEC CH
JMP COMPILE
FLUSH_WRITES: FLUSH_WRITES:
CMP CL,#0 CMP CL,#0
@ -238,7 +257,9 @@ MOVES_FLUSHED:
MOV CH,#0 MOV CH,#0
RET RET
bootup_msg: .ASCII 'Native brainfuck compiler v1\n' bootup_msg: .ASCII 'Native 8086 brainfuck compiler v1\n'
compiling: .ASCII 'Compiling...\0'
compiled: .ASCII '\rCompiled! \n'
DATA: .BLKB 560 DATA: .BLKB 560
.BLKB 200 .BLKB 200
STACK: STACK: