Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -0,0 +1,29 @@
#!/usr/local/bin/apl -s --
⎕IO0 ⍝ Index origin 0 is more intuitive with 'pointers'
Subleq;fn;text;M;A;B;C;X
(5⎕ARG)/usage ⍝ There should be one (additional) argument
fn⎕ARG[4] ⍝ This argument should be the file name
(''0text⎕FIO[26]fn)/filerr ⍝ Load the file
text[(text⎕TC)/text]' ' ⍝ Control characters to spaces
text[(text='-')/text]'¯' ⍝ Negative numbers get high minus
Mtext ⍝ The memory starts with the numbers in the text
pc0 ⍝ Program counter starts at PC
instr: (A B C)3pcM ⍝ Read instruction
M'(1+A⌈B⌈C⌈M)↑M'⎕EA'M⊣M[A,B,C]' ⍝ Extend the array if necessary
pcpc+3 ⍝ PC is incremented by 3
(A=¯1)/in ⍝ If A=-1, read input
(B=¯1)/out ⍝ If B=-1, write output
(0<M[B]M[B]-M[A])/instr ⍝ Do SUBLEQ instruction
pcC ⍝ Set PC if necessary
(C0)×instr ⍝ Next instruction if C≥0
in: X(M[B]1⎕FIO[41]1)⎕FIO[42]1 instr
out: XM[A]⎕FIO[42]1 instr
usage: 'subleq.apl <file> - Run the SUBLEQ program in <file>' 0
filerr: 'Error loading: ',fn 0
Subleq
)OFF