.global _start
_start:
MOV.L filename,R4
MOV.L sa,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sb,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sc,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sd,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L se,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sf,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sg,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L sh,R6
MOV.L R6,@R4
MOV #0,R9
MOV.L hexaddr,R10
MOV.L R9,@R10
MOV #0,R10
MOV #0,R0
MOV.L headeradr,R4
MOV.L aA,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aB,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aC,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aD,R6
MOV.L R6,@R4
ADD #6,R4
MOV #0,R6
NOT R6,R6
MOV.W R6,@R4
ADD #12,R4
MOV #0,R6
NOT R6,R6
MOV.W R6,@R4
ADD #2,R4
MOV.L aE,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aF,R6
MOV.L R6,@R4
ADD #4,R4
MOV #0,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L R6,@R4
ADD #4,R4
MOV.L aG,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aH,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aI,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aJ,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aK,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aL,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aM,R6
MOV.L R6,@R4
ADD #4,R4
MOV #0,R6
MOV #98,R0
MOV #1,R1
fillA:
MOV.L R6,@R4
ADD #4,R4
SUB R1,R0
TST R0,R0
BF fillA
MOV.L aN,R6
MOV.L R6,@R4
ADD #4,R4
MOV.L aO,R6
MOV.L R6,@R4
ADD #4,R4
MOV #0,R6
MOV #9,R0
fillB:
MOV.L R6,@R4
SUB R1,R0
ADD #4,R4
TST R0,R0
BF fillB
clear:
MOV.L ramaddr,R4
ADD R0,R4
MOV.L spaces,R2
MOV.L R2,@R4
ADD #4,R0
CMP/EQ #32,R0
BF clear
loop:
MOV.L buffer,R4
MOV.L getkey,R0
MOV.L syscall,R2
JSR @R2
NOP
MOV.L buffer,R4
MOV.L @R4,R2
MOV.L ramaddr,R6
MOV.L del,R8
CMP/EQ R8,R2
BT delete
MOV.L savekey,R8
CMP/EQ R8,R2
BT save
MOV #1,R13
MOV.L minA,R8
CMP/HS R8,R2
BF checkF
MOV.L maxA,R8
CMP/HS R2,R8
BF checkF
MOV #15,R8
MOV R2,R12
AND R8,R12
BRA print
NOP
checkF:
MOV.L minB,R8
CMP/HS R8,R2
BF loop
MOV.L maxB,R8
CMP/HS R2,R8
BF loop
MOV.L value,R8
SUB R8,R2
MOV #54,R12
SUB R2,R12
BRA print
NOT R12,R12
print:
MOV.L space,R8
SHLL16 R2
SHLL8 R2
ADD R8,R2
MOV.L R2,@R6
MOV R9,R4
SHLL2 R4
MOV R10,R5
SHLL2 R5
ADD R10,R5
MOV #0,R7
MOV.L printmini,R0
MOV.L syscall,R2
JSR @R2
NOP
MOV #32,R0
MUL.L R10,R0
NOP
STS MACL,R0
ADD R9,R0
SHLR R0
BT nope
SHLL2 R12
SHLL2 R12
MOV.L hexaddr,R4
ADD R0,R4
ADD #1,R4
MOV #0,R11
MOV.B R11,@R4
nope:
MOV.L hexaddr,R4
ADD R0,R4
MOV R4,R14
MOV.B @R4,R11
TST R13,R13
BF normal
MOV #0,R11
MOV #0,R12
normal:
OR R11,R12
MOV.B R12,@R4
TST R13,R13
BT loop
MOV R9,R0
CMP/EQ #31,R0
BT reset
BRA loop
ADD #1,R9
reset:
MOV #0,R9
BRA loop
ADD #1,R10
delete:
MOV #0,R13
MOV #1,R1
MOV #20,R2
MOV R9,R0
CMP/EQ #0,R0
BT wrap
BRA print
SUB R1,R9
wrap:
MOV R10,R0
CMP/EQ #0,R0
BT loop
SUB R1,R10
BRA print
MOV #31,R9
save:
MOV.L filename,R4
MOV #0,R5
MOV.L deletefile,R0
MOV.L syscall,R2
JSR @R2
NOP
MOV.L filename,R4
MOV #1,R5
MOV.L filesize,R6
MOV #32,R14
MUL.L R10,R14
NOP
STS MACL,R14
ADD R9,R14
SHLR R14
MOV.L sizemask,R0
AND R0,R14
MOV.L headersize,R2
ADD R2,R14
MOV.L R14,@R6
MOV.L createfile,R0
MOV.L syscall,R2
JSR @R2
NOP
MOV.L filename,R4
MOV #3,R5
MOV #0,R6
MOV.L openfile,R0
MOV.L syscall,R2
JSR @R2
NOP
MOV R0,R4
MOV.L headeradr,R5
MOV R14,R6
MOV.L headeradr,R5
MOV.L writefile,R0
MOV.L syscall,R2
JSR @R2
NOP
BRA loop
NOP
.align 2
syscall:.long 0x80010070
   buffer:.long 0x08100000!key
getkey:.long 0x0000090F
  ramaddr:.long 0x08100004!text
headeradr:.long 0x08100158!header
  hexaddr:.long 0x08100358!code
printmini:.long 0x00000C4F
minA:.long 0x00000030
maxA:.long 0x00000039
minB:.long 0x00007539
maxB:.long 0x0000753E
del:.long 0x00007549
savekey:.long 0x000000A9
value:.long 0x000074F8
space:.long 0x00202020
spaces:.long 0x20202020
headersize:.long 0x00000200
  sizemask:.long 0xFFFFFFFE
  filename:.long 0x08100030
createfile:.long 0x00000434
 writefile:.long 0x00000435
  openfile:.long 0x0000042C
 closefile:.long 0x0000042D
deletefile:.long 0x00000439
  filesize:.long 0x08100100
        sa:.long 0x005C005C
        sb:.long 0x0066006C
        sc:.long 0x00730030
        sd:.long 0x005C0048
        se:.long 0x00450058
        sf:.long 0x002E0067
        sg:.long 0x00310061
        sh:.long 0x00000000
        aA:.long 0xAAACBDAF
        aB:.long 0x90889A8D
        aC:.long 0x0CFFEFFF
        aD:.long 0xEFFFFFFE
        aE:.long 0x40484558
        aF:.long 0x45444954
        aG:.long 0x36392E36
        aH:.long 0x392E3639
        aI:.long 0x36390000
        aJ:.long 0x39393939
        aK:.long 0x2E313233
        aL:.long 0x312E3233
        aM:.long 0x35390000
        aN:.long 0x48657861
        aO:.long 0x45646974
