home *** CD-ROM | disk | FTP | other *** search
/ Vandalism News 38 / Vandalism_News_38_2002-05-31_Onslaught_Wrath_Designs_Side_C.d64 / brainfuck.src < prev    next >
Text File  |  2023-02-26  |  3KB  |  150 lines

  1.  
  2.  
  3.  ; brainfuck64 v1.0 BY nINJA/tHE dREAMS IN 2001
  4.  
  5.  
  6.  
  7.               ; BIGGER VERSION IS FASTER, HAS MORE ERROR CHECKS,
  8.  
  9.               ; RETURNS WITHOUT syntax error, HAS FILENAME AND cr-HANDLING
  10.  
  11.               ; AS PARAMETERS
  12.  
  13.  
  14.  
  15.               INCLUDE STANDARD.C64
  16.  
  17.  
  18.  
  19. CR_FLAG       = $02
  20.  
  21. SRC_PNT       = $7A
  22.  
  23. ARR_PNT       = $37
  24.  
  25. FILL_PNT      = $2B
  26.  
  27. W_CNT         = $33
  28.  
  29.  
  30.  
  31.               ORG $CF08
  32.  
  33.  
  34.  
  35.               JSR $AEFD     ; cHECK kOMMA
  36.  
  37.               JSR $E1E0     ; gET pARAMETER
  38.  
  39.               STY CR_FLAG
  40.  
  41.               LDA #16
  42.  
  43.               STA $B8
  44.  
  45.                STA $B9
  46.  
  47. OPEN_L1:
  48.  
  49.               DEC $B8
  50.  
  51.               BEQ ERROR
  52.  
  53.               JSR $FFC0
  54.  
  55.               BCS OPEN_L1
  56.  
  57.               LDY #0
  58.  
  59.               JSR $A68E
  60.  
  61.               LDX $B8
  62.  
  63.               JSR $FFC6
  64.  
  65. GET_INP:
  66.  
  67.               JSR $FFE4
  68.  
  69.               JSR $E419
  70.  
  71.               LDA $90
  72.  
  73.               BEQ GET_INP
  74.  
  75.               AND #$BF
  76.  
  77.               BNE ERROR
  78.  
  79.               DEC $01
  80.  
  81.               LSR ARR_PNT+1
  82.  
  83.               LDX #$CD
  84.  
  85.               TYA
  86.  
  87. CLMEM:
  88.  
  89.               STA (FILL_PNT),Y
  90.  
  91.               INY
  92.  
  93.               BNE *+4
  94.  
  95.               INC FILL_PNT+1
  96.  
  97.               CPX FILL_PNT+1
  98.  
  99.               BNE CLMEM
  100.  
  101. MAINLOOP:
  102.  
  103.               INC SRC_PNT
  104.  
  105.               BNE *+4
  106.  
  107.               INC SRC_PNT+1
  108.  
  109.               LDA (SRC_PNT),Y
  110.  
  111.               BNE NO_EXIT
  112.  
  113.               INC $01
  114.  
  115.               BNE EXIT
  116.  
  117. ERROR:
  118.  
  119.               INC $D020
  120.  
  121. EXIT:
  122.  
  123.               LDA $B8
  124.  
  125.               JSR $FFC3
  126.  
  127.               JSR $FFCC
  128.  
  129.               JSR $E3BF
  130.  
  131.               JMP $E39D
  132.  
  133. NO_EXIT:
  134.  
  135.               TAX
  136.  
  137.               LDA (ARR_PNT),Y
  138.  
  139.               CPY W_CNT
  140.  
  141.               BNE NO_PKT
  142.  
  143.               CPX #'+'
  144.  
  145.               BEQ BEF_PL
  146.  
  147.               CPX #'-'
  148.  
  149.               BEQ BEF_MI
  150.  
  151.               CPX #','
  152.  
  153.               BNE NO_KOM
  154.  
  155.               JSR $F15B
  156.  
  157.                CMP #$0D
  158.  
  159.                BNE NO_CR
  160.  
  161.                JSR $FFD2
  162.  
  163.                BIT CR_FLAG
  164.  
  165.                BEQ NO_CR
  166.  
  167.                LDA #$0A
  168.  
  169. NO_CR:
  170.  
  171.               STY $D0
  172.  
  173.               BYT $2C
  174.  
  175. BEF_MI:
  176.  
  177.               SBC #1
  178.  
  179.               BYT $2C
  180.  
  181. BEF_PL:
  182.  
  183.               ADC #1-1
  184.  
  185.               STA (ARR_PNT),Y
  186.  
  187. NO_KOM:
  188.  
  189.               CPX #'>'
  190.  
  191.               BNE NO_GR
  192.  
  193.               INC ARR_PNT
  194.  
  195.               BNE *+4
  196.  
  197.               INC ARR_PNT+1
  198.  
  199. NO_GR:
  200.  
  201.               CPX #'<'
  202.  
  203.               BNE NO_KL
  204.  
  205.               LDA ARR_PNT
  206.  
  207.               BNE *+4
  208.  
  209.               DEC ARR_PNT+1
  210.  
  211.               DEC ARR_PNT
  212.  
  213. NO_KL:
  214.  
  215.               CPX #'.'
  216.  
  217.               BNE NO_PKT
  218.  
  219.                CMP #$61
  220.  
  221.                BCC NO_SMALL
  222.  
  223.                CMP #$7B
  224.  
  225.                BCS NO_SMALL
  226.  
  227.                AND #$DF
  228.  
  229. NO_SMALL:
  230.  
  231.               JSR $FFD2
  232.  
  233. NO_PKT:
  234.  
  235.               CPX #'['
  236.  
  237.               BEQ BEF_AUF
  238.  
  239. NO_AUF:
  240.  
  241.               CPX #']'
  242.  
  243. B2MAIN:
  244.  
  245.               BNE MAINLOOP
  246.  
  247.               DEC W_CNT
  248.  
  249.               BPL MAINLOOP
  250.  
  251.               STY W_CNT
  252.  
  253.               PLA
  254.  
  255.               STA SRC_PNT+1
  256.  
  257.               PLA
  258.  
  259.               STA SRC_PNT
  260.  
  261.               LDA (ARR_PNT),Y
  262.  
  263. BEF_AUF:
  264.  
  265.               TAX
  266.  
  267.               BEQ SKIP
  268.  
  269.               LDA SRC_PNT
  270.  
  271.               PHA
  272.  
  273.               LDA SRC_PNT+1
  274.  
  275.               PHA
  276.  
  277.               BYT $2C
  278.  
  279. SKIP:
  280.  
  281.               INC W_CNT
  282.  
  283.               ROR           ; C=1
  284.  
  285.               BNE B2MAIN
  286.  
  287.  
  288.  
  289.               IF (*>$D000)
  290.  
  291.                WARNING ("cODE TOO BIG!")
  292.  
  293.               ENDIF
  294.  
  295.  
  296.  
  297.               END $CF08
  298.  
  299.