Minor cosmetic changes in M0's source
This commit is contained in:
parent
71e30cfae1
commit
20c03c0d25
|
@ -42,8 +42,10 @@ FFFFFFFF # HALT ; We are Done
|
|||
# ;; Prep TAPE_01
|
||||
E0002D201100 # LOADUI R0 0x1100
|
||||
42100000 # FOPEN_READ
|
||||
|
||||
0D00002D # FALSE R13 ; Head is NULL
|
||||
09000510 # MOVE R1 R0 ; Read Tape_01
|
||||
|
||||
:Tokenize_Line_0
|
||||
42100100 # FGETC ; Get a Char
|
||||
|
||||
|
@ -52,7 +54,7 @@ E000A0300023 # CMPSKIPI.NE R0 35
|
|||
3C00 @Purge_Line_Comment # JUMP @Purge_Line_Comment
|
||||
|
||||
# ;; Deal with Line comments starting with ;
|
||||
E000A030003b # CMPSKIPI.NE R0 59
|
||||
E000A030003B # CMPSKIPI.NE R0 59
|
||||
3C00 @Purge_Line_Comment # JUMP @Purge_Line_Comment
|
||||
|
||||
# ;; Deal with Tab
|
||||
|
@ -60,7 +62,7 @@ E000A0300009 # CMPSKIPI.NE R0 9
|
|||
3C00 @Tokenize_Line_0 # JUMP @Tokenize_Line_0 ; Throw away byte and try again
|
||||
|
||||
# ;; Deal with New line
|
||||
E000A030000a # CMPSKIPI.NE R0 10
|
||||
E000A030000A # CMPSKIPI.NE R0 10
|
||||
3C00 @Tokenize_Line_0 # JUMP @Tokenize_Line_0 ; Throw away byte and try again
|
||||
|
||||
# ;; Deal with space characters
|
||||
|
@ -163,10 +165,13 @@ E10023020004 # STORE32 R0 R2 4 ; Set node type
|
|||
E100210E0000 # STORE8 R0 R14 0 ; Store the Byte
|
||||
42100100 # FGETC ; Get next Byte
|
||||
E1000FEE0001 # ADDUI R14 R14 1 ; Prep for next loop
|
||||
|
||||
E000A0300009 # CMPSKIPI.NE R0 9 ; If char is Tab
|
||||
3C00 @Store_Atom_Done # JUMP @Store_Atom_Done ; Be done
|
||||
|
||||
E000A030000a # CMPSKIPI.NE R0 10 ; If char is LF
|
||||
3C00 @Store_Atom_Done # JUMP @Store_Atom_Done ; Be done
|
||||
|
||||
E000A0300020 # CMPSKIPI.NE R0 32 ; If char is Space
|
||||
3C00 @Store_Atom_Done # JUMP @Store_Atom_Done ; Be done
|
||||
|
||||
|
@ -260,6 +265,7 @@ E0002CA2 @Identify_Macros_0 # JUMP.NZ R2 @Identify_Macros_0 ; Loop if i not NULL
|
|||
444546494E450000 # "DEFINE" ;; Line_Macro Function
|
||||
|
||||
|
||||
# ;; Line_Macro Function
|
||||
# ;; Recieves a node pointer in R0
|
||||
# ;; Causes macros to be applied
|
||||
# ;; Returns to whatever called it
|
||||
|
@ -339,7 +345,7 @@ E1002310000c # STORE32 R1 R0 12 ; Set expression to Text + 1
|
|||
3C00 @Process_String_Done # JUMP @Process_String_Done ; And move on
|
||||
|
||||
:Process_String_1
|
||||
# ;; Deal with \"
|
||||
# ;; Deal with (")
|
||||
E0002D0F @Hexify_String # CALLI R15 @Hexify_String
|
||||
|
||||
:Process_String_Done
|
||||
|
@ -468,8 +474,10 @@ E1000F110001 # ADDUI R1 R1 1 ; Move to next
|
|||
|
||||
:numerate_string_dec
|
||||
E10014010000 # LOAD8 R0 R1 0 ; Get a byte
|
||||
|
||||
E000A0300000 # CMPSKIPI.NE R0 0 ; If NULL
|
||||
3C00 @numerate_string_done # JUMP @numerate_string_done ; Be done
|
||||
|
||||
05006334 # MUL R3 R3 R4 ; Shift counter by 10
|
||||
E10010000030 # SUBI R0 R0 48 ; Convert ascii to number
|
||||
E000A0100000 # CMPSKIPI.GE R0 0 ; If less than a number
|
||||
|
@ -477,6 +485,7 @@ E000A0100000 # CMPSKIPI.GE R0 0 ; If less than a number
|
|||
E000A050000a # CMPSKIPI.L R0 10 ; If more than a number
|
||||
3C00 @numerate_string_done # JUMP @numerate_string_done ; Terminate NOW
|
||||
05001330 # ADDU R3 R3 R0 ; Don't add to the count
|
||||
|
||||
E1000F110001 # ADDUI R1 R1 1 ; Move onto next byte
|
||||
3C00 @numerate_string_dec # JUMP @numerate_string_dec
|
||||
|
||||
|
@ -490,6 +499,7 @@ E1000F110002 # ADDUI R1 R1 2 ; Move to after leading 0x
|
|||
:numerate_string_hex_0
|
||||
E10014010000 # LOAD8 R0 R1 0 ; Get a byte
|
||||
E0002C90 @numerate_string_done # JUMP.Z R0 @numerate_string_done ; If NULL Be done
|
||||
|
||||
E0002D530004 # SL0I R3 4 ; Shift counter by 16
|
||||
E10010000030 # SUBI R0 R0 48 ; Convert ascii number to number
|
||||
E000A050000a # CMPSKIPI.L R0 10 ; If A-F
|
||||
|
@ -497,6 +507,7 @@ E10010000007 # SUBI R0 R0 7 ; Shove into Range
|
|||
E000A0500010 # CMPSKIPI.L R0 16 ; If a-f
|
||||
E10010000020 # SUBI R0 R0 32 ; Shove into Range
|
||||
05001330 # ADDU R3 R3 R0 ; Add to the count
|
||||
|
||||
E1000F110001 # ADDUI R1 R1 1 ; Get next Hex
|
||||
3C00 @numerate_string_hex_0 # JUMP @numerate_string_hex_0
|
||||
|
||||
|
@ -554,6 +565,7 @@ E0002D211101 # LOADUI R1 0x1101 ; Write to Tape_02
|
|||
E10018200000 # LOAD32 R2 R0 0 ; Load Node->Next
|
||||
E10018300004 # LOAD32 R3 R0 4 ; Load Node type
|
||||
E1001800000c # LOAD32 R0 R0 12 ; Load Expression pointer
|
||||
|
||||
E10010330001 # SUBI R3 R3 1 ; Check for Macros
|
||||
E0002C93 @Print_Hex_1 # JUMP.Z R3 @Print_Hex_1 ; Don't print Macros
|
||||
E0002D0F @Print_Line # CALLI R15 @Print_Line ; Print the Expression
|
||||
|
@ -592,5 +604,6 @@ E0002D20000a # LOADUI R0 10 ; Put in Newline char
|
|||
42100200 # FPUTC ; Write it out
|
||||
0D01001F # RET R15
|
||||
|
||||
|
||||
# ;; Where we are putting the start of our stack
|
||||
:stack
|
||||
|
|
|
@ -88,6 +88,7 @@
|
|||
|
||||
;; Everything else is an atom store it
|
||||
CALLI R15 @Store_Atom
|
||||
|
||||
:Tokenize_Line_1
|
||||
STORE32 R13 R2 0 ; Set p->next to head
|
||||
MOVE R13 R2 ; Set head to p
|
||||
|
@ -107,6 +108,7 @@
|
|||
COPY R0 R13 ; Using R0 as head
|
||||
FALSE R1 ; Using R1 as root
|
||||
; Using R2 as next
|
||||
|
||||
:reverse_list_0
|
||||
JUMP.Z R0 @reverse_list_done ; Stop if NULL == head
|
||||
LOAD R2 R0 0 ; next = head->next
|
||||
|
@ -114,6 +116,7 @@
|
|||
MOVE R1 R0 ; root = head
|
||||
MOVE R0 R2 ; head = next
|
||||
JUMP @reverse_list_0 ; Keep looping
|
||||
|
||||
:reverse_list_done
|
||||
;; Clean up
|
||||
MOVE R13 R1 ; Set token_list to root
|
||||
|
@ -192,10 +195,12 @@
|
|||
PUSHR R2 R15
|
||||
PUSHR R3 R15
|
||||
PUSHR R4 R15
|
||||
|
||||
;; Setup registers
|
||||
MOVE R2 R0 ; Put R0 in a safe place
|
||||
MOVE R3 R1 ; Put R1 in a safe place
|
||||
FALSE R4 ; Starting at index 0
|
||||
|
||||
:cmpbyte
|
||||
LOADXU8 R0 R2 R4 ; Get a byte of our first string
|
||||
LOADXU8 R1 R3 R4 ; Get a byte of our second string
|
||||
|
@ -203,6 +208,7 @@
|
|||
CMP R0 R0 R1 ; Compare the bytes
|
||||
CMPSKIPI.E R1 0 ; Stop if byte is NULL
|
||||
JUMP.E R0 @cmpbyte ; Loop if bytes are equal
|
||||
|
||||
;; Done
|
||||
;; Restore registers
|
||||
POPR R4 R15
|
||||
|
@ -339,7 +345,7 @@
|
|||
JUMP @Process_String_Done ; And move on
|
||||
|
||||
:Process_String_1
|
||||
;; Deal with "
|
||||
;; Deal with (")
|
||||
CALLI R15 @Hexify_String
|
||||
|
||||
:Process_String_Done
|
||||
|
@ -465,6 +471,7 @@
|
|||
TRUE R2 ; So that we know to negate
|
||||
CMPSKIPI.E R2 0 ; If toggled
|
||||
ADDUI R1 R1 1 ; Move to next
|
||||
|
||||
:numerate_string_dec
|
||||
LOAD8 R0 R1 0 ; Get a byte
|
||||
|
||||
|
@ -488,6 +495,7 @@
|
|||
CMPSKIPI.E R0 48 ; All hex strings start with 0x
|
||||
JUMP @numerate_string_done ; Be done if not a match
|
||||
ADDUI R1 R1 2 ; Move to after leading 0x
|
||||
|
||||
:numerate_string_hex_0
|
||||
LOAD8 R0 R1 0 ; Get a byte
|
||||
JUMP.Z R0 @numerate_string_done ; If NULL Be done
|
||||
|
@ -540,6 +548,7 @@
|
|||
JUMP.NZ R0 @Preserve_Other_0
|
||||
RET R15
|
||||
|
||||
|
||||
;; Print_Hex Function
|
||||
;; Print all of the expressions
|
||||
;; Starting with HEAD
|
||||
|
|
Loading…
Reference in New Issue