home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1989 October / 64er_Magazin_89-10_1989_Markt__Technik_de_Side_A.d64 / decomp2.src < prev    next >
Text File  |  2022-10-26  |  21KB  |  1,288 lines

  1. ;
  2. div7   ldx #0          ; Division durch 7
  3.        stx $63         ; nicht unbedingt sehr
  4.        stx $64         ; schoen und schnell,
  5. div70  sec             ; aber einfach
  6.        lda back
  7.        sbc tab7,x
  8.        sta back
  9.        lda back+1
  10.        sbc tab7+1,x
  11.        sta back+1
  12.        bcc div71
  13.        lda $63
  14.        adc tab4,x
  15.        sta $63
  16.        lda $64
  17.        adc tab4+1,x
  18.        sta $64
  19.        bcc div70
  20. div71  lda back
  21.        adc tab7,x
  22.        sta back
  23.        lda back+1
  24.        adc tab7+1,x
  25.        sta back+1
  26.        inx
  27.        inx
  28.        cpx #14
  29.        bne div70
  30.        mvw $63,back
  31.        rts
  32. ;
  33. tab7   .wor 28672,7168,1792,448,112,28,7
  34. tab4   .wor 4095,1023,255,63,15,3,0
  35. ;
  36. sline  jsr search ; konvertiert Zeilennr
  37.        lda $66
  38.        sec
  39.        sbc #$b0
  40.        sta back+1
  41.        pha
  42.        lda $65
  43.        pha
  44.        asl a
  45.        rol back+1
  46.        asl a
  47.        rol back+1
  48.        sta back
  49.        clc
  50.        pla
  51.        adc back
  52.        sta back
  53.        pla
  54.        adc back+1
  55.        sta back+1
  56.        rts
  57. ;
  58. datout mvw datst,count ; datas ausgeben
  59.        lda #32
  60.        ldy wp+1
  61.        sta pt
  62.        sty pt+1
  63.        ldy #0
  64.        lda #1
  65.        sta (pt),y
  66.        iny
  67.        sta (pt),y
  68.        iny
  69.        lda #<50000
  70.        sta (pt),y
  71.        iny
  72.        lda #>50000
  73.        sta (pt),y
  74.        iny
  75.        lda #131
  76.        sta (pt),y
  77.        iny
  78.        lda #' '
  79.        sta (pt),y
  80. dat00  lda #38
  81.        sta pt
  82. dat01  ldy #0
  83.        lda (count),y
  84.        sta i
  85.        cmp #255
  86.        bne dat02
  87.        rts
  88. dat02  iny
  89.        lda (count),y
  90.        cmp #','
  91.        beq dat03
  92.        cmp #':'
  93.        beq dat03
  94.        cmp #' '
  95.        bne dat02a
  96.        cpy #1
  97.        beq dat03
  98. dat02a cpy i
  99.        bcc dat02
  100.        clc
  101. dat03  php
  102.        ldy #0
  103.        bcc dat04
  104.        lda #'"'
  105.        sta (pt),y
  106.        inc pt
  107. dat04  iny
  108.        lda (count),y
  109.        dey
  110.        sta (pt),y
  111.        iny
  112.        cpy i
  113.        bcc dat04
  114.        tya
  115.        adc count
  116.        sta count
  117.        bcc dat04a
  118.        inc count+1
  119. dat04a plp
  120.        bcc dat05
  121.        lda #'"'
  122.        sta (pt),y
  123. dat05  tya
  124.        adc pt
  125.        sta pt
  126.        ldy #0
  127.        adc (count),y
  128.        bcs dat06
  129.        cmp #66
  130.        bcs dat06
  131.        lda #','
  132.        sta (pt),y
  133.        inc pt
  134.        bne dat01
  135. dat06  tya
  136.        sta (pt),y
  137.        lda pt
  138.        sbc #31
  139.        sta back
  140.        lda #32
  141.        sta pt
  142.        ldx #2
  143.        jsr ckout
  144.        ldy #0
  145. dat07  lda (pt),y
  146.        jsr bsout
  147.        iny
  148.        cpy back
  149.        bne dat07
  150.        jsr clrch
  151.        ldy #2
  152.        clc
  153.        lda #10
  154.        adc (pt),y
  155.        sta (pt),y
  156.        iny
  157.        lda #0
  158.        adc (pt),y
  159.        sta (pt),y
  160.        jmp dat00
  161. ;
  162. getst  mvw count,pf    ; Statement decompilieren
  163. gs00   jsr isexpr      ; Ausdruck ueberlesen
  164.        bcc gs000
  165.        jsr next
  166.        jmp gs00
  167. gs000  jsr islet       ; Zuweisung ?
  168.        bcs gs001
  169.        jmp gs03        ; nein ->
  170. gs001  mvw count,pl    ; Koennte Teil eines FOR sein
  171. gs002  jsr next
  172.        jsr isexpr
  173.        bcs gs002
  174.        ldy #0
  175.        lda (count),y
  176. gs01   cmp #17
  177.        beq gs010       ; for-to
  178.        cmp #18
  179.        beq gs010       ; for-to-step
  180.        jmp gs02        ; sicher eine einfache Zuweisung ->
  181. gs010  lda #129        ; FOR
  182.        sta (pt),y
  183.        inc pt
  184.        phw pl
  185.        phw count
  186.        jsr varnam      ; Variabelnname
  187.        lda #178
  188.        jsr addchr      ; '='
  189.        mvw back,pl
  190.        jsr getexp      ; Startausdruck
  191.        lda #164
  192.        jsr addchr      ; TO
  193.        plw pl
  194.        plw count
  195.        jsr next
  196.        mvw count,pf
  197.        phw pl
  198.        ldy #0
  199.        lda (pl),y
  200.        pha
  201.        phw pt
  202.        lda #32
  203.        ldy wp+1
  204.        sta pt
  205.        sty pt+1
  206.        jsr getexp      ; Variabelnname ueberlesen
  207.        plw pt
  208.        mvw back,pl
  209.        pla
  210.        cmp #17
  211.        bne gs011
  212.        jsr getexp      ; Endausdruck
  213.        plw count
  214.        rts
  215. gs011  phw pt
  216.        lda #132
  217.        ldy wp+1
  218.        sta pt
  219.        sty pt+1
  220.        jsr getexp      ; Variabelnname
  221.        lda #32
  222.        sta pt
  223.        mvw back,pl
  224.        jsr getexp      ; Endausdruck
  225.        lda #169        ; STEP
  226.        jsr addchr
  227.        lda #132
  228.        ldy wp+1
  229.        sta $5f
  230.        sty $60
  231.        ldy #255
  232. gs012  iny
  233.        lda ($5f),y
  234.        sta (pt),y
  235.        bne gs012
  236.        lda #32
  237.        sta $5f
  238.        plw pt
  239.        ldy #255
  240. gs013  iny
  241.        lda ($5f),y
  242.        sta (pt),y
  243.        bne gs013
  244.        plw count
  245.        rts
  246. gs02   phw pl ; let
  247.        lda (pl),y
  248.        cmp #$e6
  249.        bne gs020
  250.        lda #'t'
  251.        sta (pt),y
  252.        iny
  253.        lda #'i'
  254.        sta (pt),y
  255.        iny
  256.        lda #'$'
  257.        sta (pt),y
  258.        iny
  259.        bne gs023
  260. gs020  cmp #$e4
  261.        bcc gs022
  262.        phw pl
  263.        lda pt
  264.        pha
  265.        lda #160
  266.        sta pt
  267.        jsr getexp
  268.        mvw back,pl
  269.        pla
  270.        sta pt
  271.        plw count
  272.        jsr varna1
  273.        lda #178
  274.        jsr addchr
  275.        lda #160
  276.        ldy pt+1
  277.        sta back
  278.        sty back+1
  279.        ldy #255
  280. gs021  iny
  281.        lda (back),y
  282.        sta (pt),y
  283.        bne gs021
  284.        plw count
  285.        rts
  286. gs022  jsr varnam
  287.        jsr incpt
  288. gs023  lda #178
  289.        sta (pt),y
  290.        sec
  291.        tya
  292.        adc pt
  293.        sta pt
  294.        mvw back,pl
  295.        jsr getexp
  296.        plw count
  297.        rts
  298. gs03   cmp #16
  299.        beq gs030
  300.        jmp gs04
  301. gs030  lda #134    ; dim
  302.        sta (pt),y
  303.        inc pt
  304. gs031  iny
  305.        lda (count),y
  306.        pha
  307.        clc
  308.        lda #2
  309.        adc count
  310.        sta $61
  311.        ldy count+1
  312.        bcc gs032
  313.        iny
  314. gs032  sty $62
  315.        jsr vname
  316.        jsr varnc
  317.        pla
  318.        sta back
  319.        mvw count,pl
  320.        phw count
  321.        jsr incpt
  322.        jsr getmul
  323.        plw count
  324.        mvw count,pl
  325.        jsr linend
  326.        bcs gs034
  327. gs033  jsr next
  328.        jsr isexpr
  329.        bcs gs033
  330.        ldy #0
  331.        lda (count),y
  332.        cmp #16
  333.        beq gs035
  334. gs034  mvw pl,count
  335.        rts
  336. gs035  lda #','
  337.        jsr addchr
  338.        mvw pl,pf
  339.        ldy #0
  340.        jmp gs031
  341. gs04   cmp #19     ; next (1.version)
  342.        bne gs05
  343.        lda #130
  344.        sta (pt),y
  345.        tya
  346.        iny
  347.        sta (pt),y
  348.        rts
  349. gs05   cmp #20     ; next (2.version)
  350.        bne gs06
  351.        lda #130
  352.        sta (pt),y
  353.        inc pt
  354. gs050  phw count
  355.        mvw count,pl
  356.        jsr getexp
  357.        plw count
  358.        mvw count,pl
  359.        jsr linend
  360.        bcs gs052
  361. gs051  jsr next
  362.        jsr isexpr
  363.        bcs gs051
  364.        ldy #0
  365.        lda (count),y
  366.        cmp #20
  367.        beq gs053
  368. gs052  mvw pl,count
  369.        rts
  370. gs053  lda #','
  371.        jsr addchr
  372.        mvw pl,pf
  373.        jmp gs050
  374. gs06   cmp #21     ; clr
  375.        bne gs07
  376.        lda #156
  377.        sta (pt),y
  378.        tya
  379.        iny
  380.        sta (pt),y
  381.        rts
  382. gs07   cmp #23     ; poke
  383.        bne gs08
  384.        lda #151
  385.        sta (pt),y
  386.        inc pt
  387.        mvw count,pl
  388.        phw count
  389.        jsr getexp
  390.        mvw back,pl
  391.        lda #','
  392.        jsr addchr
  393.        jsr getexp
  394.        plw count
  395.        rts
  396. gs08   cmp #24     ; sys
  397.        bne gs09
  398.        lda #158
  399.        sta (pt),y
  400.        inc pt
  401.        phw count
  402.        mvw count,pl
  403.        jsr getexp
  404.        jsr incpt
  405.        plw count
  406.        mvw count,pl
  407.        inc pl
  408.        bne gs080
  409.        inc pl+1
  410. gs080  ldy #0
  411. gs081  lda (pl),y
  412.        cmp #':'
  413.        beq gs082
  414.        sta (pt),y
  415.        iny
  416.        bne gs081
  417. gs082  lda #0
  418.        sta (pt),y
  419.        rts
  420. gs09   cmp #25     ; goto
  421.        bne gs10
  422.        lda #137
  423.        sta (pt),y
  424. gs090  inc pt
  425.        iny
  426.        lda (count),y
  427.        sta back+1
  428.        iny
  429.        lda (count),y
  430.        sta back
  431.        lda 2
  432.        cmp #2
  433.        beq gs091
  434.        jsr sline
  435. gs091  jsr cint
  436.        rts
  437. gs10   cmp #26     ; gosub
  438.        bne gs11
  439.        lda #141
  440.        sta (pt),y
  441.        bne gs090
  442. gs11   cmp #27     ; on - goto/gosub
  443.        beq gs110
  444.        cmp #28
  445.        bne gs12
  446. gs110  pha
  447.        lda #145
  448.        sta (pt),y
  449.        inc pt
  450.        phw count
  451.        mvw count,pl
  452.        jsr getexp
  453.        plw count
  454.        mvw count,pl
  455.        pla
  456.        asl a
  457.        asl a
  458.        adc #29
  459.        jsr addchr
  460.        ldy #1
  461.        lda (count),y
  462.        lsr a
  463.        sta i
  464.        dec  i
  465. gs111  clc
  466.        lda #2
  467.        adc pl
  468.        sta pl
  469.        bcc gs112
  470.        inc pl+1
  471. gs112  ldy #0
  472.        lda (pl),y
  473.        sta back+1
  474.        iny
  475.        lda (pl),y
  476.        sta back
  477.        lda 2
  478.        cmp #2
  479.        beq gs113
  480.        jsr sline
  481. gs113  jsr cint
  482.        dec i
  483.        beq gs114
  484.        lda #','
  485.        jsr addchr
  486.        bcc gs111
  487.        bcs gs111
  488. gs114  rts
  489. gs12   cmp #29     ; return
  490.        bne gs13
  491.        lda #142
  492.        sta (pt),y
  493.        tya
  494.        iny
  495.        sta (pt),y
  496.        rts
  497. gs13   cmp #30     ; restore
  498.        bne gs14
  499.        lda #140
  500.        sta (pt),y
  501.        tya
  502.        iny
  503.        sta (pt),y
  504.        rts
  505. gs14   cmp #31     ; if
  506.        beq gs140
  507.        jmp gs15
  508. gs140  lda #139
  509.        sta (pt),y
  510.        inc pt
  511.        phw count
  512.        mvw count,pl
  513.        jsr getexp
  514.        plw count
  515.        lda #167
  516.        jsr addchr
  517.        ldy #1
  518.        lda (count),y
  519.        adc count
  520.        sta pl
  521.        ldy count+1
  522.        bcc gs141
  523.        iny
  524. gs141  sty pl+1
  525.        jsr next
  526. gs142  phw pl
  527.        jsr getst
  528.        plw pl
  529.        phw count
  530.        jsr next
  531.        lda count+1
  532.        cmp pl+1
  533.        bcc gs143
  534.        lda count
  535.        cmp pl
  536.        bcc gs143
  537.        plw count
  538.        rts
  539. gs143  pla
  540.        pla
  541.        lda #':'
  542.        jsr addchr
  543.        bcc gs142
  544.        bcs gs142
  545. gs15   cmp #55     ; def fn
  546.        beq gs150
  547.        jmp gs16
  548. gs150  lda #150
  549.        sta (pt),y
  550.        inc pt
  551.        lda #165
  552.        sta (pt),y
  553.        inc pt
  554.        iny
  555.        lda (count),y
  556.        sta back
  557.        iny
  558.        lda (count),y
  559.        sta back+1
  560.        jsr div7
  561.        lda back
  562.        asl a
  563.        rol back+1
  564.        adc vst
  565.        sta $61
  566.        lda back+1
  567.        adc vst+1
  568.        sta $62
  569.        jsr vname
  570.        jsr varnc
  571.        lda #'('
  572.        jsr addchr
  573.        ldy #3
  574.        lda (count),y
  575.        sta back
  576.        iny
  577.        lda (count),y
  578.        sta back+1
  579.        jsr div7
  580.        lda back
  581.        asl a
  582.        rol back+1
  583.        adc vst
  584.        sta $61
  585.        lda back+1
  586.        adc vst+1
  587.        sta $62
  588.        jsr vname
  589.        jsr varnc
  590.        lda #')'
  591.        jsr addchr
  592.        lda #178
  593.        sta (pt),y
  594.        inc pt
  595. gs151  jsr next
  596.        jsr isexpr
  597.        bcs gs151
  598.        mvw count,pl
  599.        phw count
  600.        jsr getexp
  601.        plw count
  602.        rts
  603. gs16   cmp #59     ; print
  604.        bcc gs1600
  605.        cmp #66
  606.        bcc gs1601
  607. gs1600 jmp gs17
  608. gs1601 pha
  609.        lda #153
  610.        sta (pt),y
  611.        inc pt
  612.        pla
  613.        cmp #63
  614.        bne gs1602
  615.        tya
  616.        sta (pt),y
  617.        rts
  618. gs1602 cmp #59
  619.        beq gs1608
  620.        cmp #64
  621.        bne gs1603
  622.        lda #166
  623.        bne gs1604
  624. gs1603 cmp #65
  625.        bne gs1605
  626.        lda #163
  627. gs1604 sta (pt),y
  628.        inc pt
  629. gs1605 pha
  630.        mvw count,pl
  631.        phw count
  632.        jsr getexp
  633.        plw count
  634.        jsr incpt
  635.        pla
  636.        cmp #64
  637.        bcc gs1606
  638.        lda #')'
  639.        sta (pt),y
  640.        iny
  641.        bne gs1609
  642. gs1606 cmp #62
  643.        bne gs1607
  644.        rts
  645. gs1607 cmp #61
  646.        bne gs1609
  647. gs1608 lda #','
  648.        bne gs1610
  649. gs1609 lda #';'
  650. gs1610 sta (pt),y
  651.        iny
  652.        lda #0
  653.        sta (pt),y
  654.        clc
  655.        tya
  656.        adc pt
  657.        sta pt
  658.        jsr linen1
  659.        bcc gs1611
  660.        rts
  661. gs1611 phw count
  662.        mvw count,pf
  663. gs1612 jsr next
  664.        jsr isexpr
  665.        bcs gs1612
  666.        cmp #59
  667.        bcc gs1613
  668.        cmp #66
  669.        bcc gs1614
  670. gs1613 plw count
  671.        rts
  672. gs1614 pla
  673.        pla
  674.        lda (count),y
  675.        jmp gs1602
  676. gs17   cmp #66     ; cmd/print#
  677.        beq gs170
  678.        jmp gs18
  679. gs170  jsr linen1
  680.        bcc gs172
  681. gs171  lda #157
  682.        sta (pt),y
  683.        inc pt
  684.        phw count
  685.        mvw count,pl
  686.        jsr getexp
  687.        plw count
  688.        rts
  689. gs172  phw count
  690. gs173  jsr next
  691.        jsr isexpr
  692.        bcs gs173
  693.        cmp #67
  694.        bcc gs174
  695.        cmp #70
  696.        bcc gs176
  697. gs174  jsr linen1
  698.        bcs gs175
  699.        ldy #0
  700.        lda (count),y
  701.        cmp #59
  702.        bcc gs175
  703.        cmp #62
  704.        beq gs175
  705.        cmp #63
  706.        beq gs175
  707.        cmp #66
  708.        bcc gs173
  709.        cmp #70
  710.        bcc gs176
  711. gs175  plw count
  712.        jmp gs171
  713. gs176  plw count
  714.        ldy #0
  715.        lda #152
  716.        sta (pt),y
  717.        inc pt
  718.        phw count
  719.        mvw count,pl
  720.        jsr getexp
  721.        plw count
  722.        jsr incpt
  723.        lda #59
  724.        jsr gs1602
  725.        phw count
  726. gs177  jsr next
  727.        jsr isexpr
  728.        bcs gs177
  729.        cmp #69
  730.        bne gs178
  731.        plw pl
  732.        rts
  733. gs178  cmp #68
  734.        bne gs179
  735.        dec pt
  736.        lda #0
  737.        sta (pt),y
  738.        plw count
  739.        rts
  740. gs179  phw count
  741.        mvw count,pl
  742.        jsr getexp
  743.        plw count
  744.        pla
  745.        pla
  746.        rts
  747. gs18   cmp #70     ; get
  748.        beq gs180
  749.        cmp #71
  750.        bne gs19
  751. gs180  lda #161
  752.        sta (pt),y
  753.        inc pt
  754.        phw count
  755.        mvw count,pl
  756.        jsr getexp
  757.        plw count
  758.        rts
  759. gs19   cmp #72     ; get#/input#
  760.        beq gs190
  761.        jmp gs20
  762. gs190  mvw count,pl
  763. gs191  jsr next
  764.        jsr isexpr
  765.        bcs gs191
  766.        cmp #85
  767.        beq gs195
  768.        cmp #83
  769.        beq gs195
  770.        lda #161
  771.        sta (pt),y
  772.        inc pt
  773.        lda #'#'
  774.        sta (pt),y
  775.        inc pt
  776.        phw pl
  777.        phw count
  778.        jsr getexp
  779. gs192  lda #','
  780.        jsr addchr
  781.        plw pl
  782.        plw pf
  783.        phw pl
  784.        jsr getexp
  785.        plw count
  786.        ldy #0
  787.        lda (count),y
  788.        cmp #71
  789.        bne gs193
  790.        rts
  791. gs193  phw count
  792. gs194  jsr next
  793.        jsr isexpr
  794.        bcs gs194
  795.        phw count
  796.        jmp gs192
  797. gs195  lda #132
  798.        sta (pt),y
  799.        inc pt
  800.        phw pl
  801.        phw count
  802.        jsr getexp
  803. gs196  lda #','
  804.        jsr addchr
  805.        plw pl
  806.        plw pf
  807.        phw pl
  808.        jsr getexp
  809.        plw count
  810.        ldy #0
  811.        lda (count),y
  812.        cmp #81
  813.        bne gs198
  814. gs197  rts
  815. gs198  cmp #83
  816.        beq gs197
  817.        phw count
  818. gs199  jsr next
  819.        jsr isexpr
  820.        bcs gs199
  821.        phw count
  822.        jmp gs196
  823. gs20   cmp #73     ; stop
  824.        bne gs21
  825.        lda #144
  826.        sta (pt),y
  827.        tya
  828.        iny
  829.        sta (pt),y
  830.        rts
  831. gs21   cmp #74     ; read
  832.        beq gs210
  833.        cmp #75
  834.        bne gs22
  835. gs210  lda #135
  836.        sta (pt),y
  837.        inc pt
  838.        phw count
  839.        mvw count,pl
  840.        jsr getexp
  841.        plw count
  842.        rts
  843. gs22   cmp #76     ; wait
  844.        beq gs220
  845.        cmp #77
  846.        bne gs23
  847. gs220  pha
  848.        lda #146
  849.        sta (pt),y
  850.        inc pt
  851.        phw count
  852.        mvw count,pl
  853.        jsr getexp
  854.        mvw back,pl
  855.        lda #','
  856.        jsr addchr
  857.        jsr getexp
  858.        plw count
  859.        pla
  860.        cmp #77
  861.        beq gs221
  862.        rts
  863. gs221  phw count
  864.        mvw back,pl
  865.        lda #','
  866.        jsr addchr
  867.        jsr getexp
  868.        plw count
  869.        rts
  870. gs23   cmp #78     ; new
  871.        bne gs24
  872.        lda #162
  873.        sta (pt),y
  874.        tya
  875.        iny
  876.        sta (pt),y
  877.        rts
  878. gs24   cmp #79     ; end
  879.        bne gs25
  880.        lda #128
  881.        sta (pt),y
  882.        tya
  883.        iny
  884.        sta (pt),y
  885.        rts
  886. gs25   cmp #80     ; input
  887.        bne gs26
  888.        lda #133
  889.        sta (pt),y
  890.        inc pt
  891. gs250  jsr next
  892.        jsr isexpr
  893.        bcs gs250
  894.        cmp #60
  895.        bne gs252
  896.        phw count
  897.        mvw count,pl
  898.        jsr getexp
  899.        plw count
  900.        lda #';'
  901.        jsr addchr
  902. gs251  jsr next
  903.        jsr isexpr
  904.        bcs gs251
  905. gs252  pha
  906.        phw count
  907.        mvw count,pl
  908.        jsr getexp
  909.        plw count
  910.        pla
  911.        cmp #85
  912.        bcs gs253
  913.        rts
  914. gs253  lda #','
  915.        jsr addchr
  916.        bcc gs251
  917.        bcs gs251
  918. gs26   cmp #93     ; load/save/verify/open
  919.        bcc gs27
  920.        cmp #97
  921.        bcs gs27
  922.        cmp #96
  923.        bne gs260
  924.        lda #159
  925.        bne gs261
  926. gs260  clc
  927.        adc #54
  928. gs261  sta (pt),y
  929.        inc pt
  930.        phw count
  931.        iny
  932.        lda (count),y
  933.        pha
  934.        mvw count,pl
  935. gs262  jsr getexp
  936.        mvw back,pl
  937.        pla
  938.        sec
  939.        sbc #1
  940.        bne gs263
  941.        plw count
  942.        rts
  943. gs263  pha
  944.        lda #','
  945.        jsr addchr
  946.        bcc gs262
  947.        bcs gs262
  948. gs27   cmp #97     ; close
  949.        bne gs28
  950.        lda #160
  951.        sta (pt),y
  952.        inc pt
  953.        phw count
  954.        mvw count,pl
  955.        jsr getexp
  956.        plw count
  957.        rts
  958. gs28   and #255    ; Extension
  959.        bne gs29
  960.        mvw count,pl
  961.        jsr next
  962.        sec
  963.        lda count
  964.        sbc pl
  965.        sec
  966.        sbc #7
  967.        tay
  968.        dey
  969.        sty i
  970.        lda #0
  971.        sta (pt),y
  972. gs280  lda (pl),y
  973.        dey
  974.        sta (pt),y
  975.        bne gs280
  976.        mvw pl,count
  977.        ldy i
  978.        rts
  979. gs29   lda #':'    ; unbekannt
  980.        sta (pt),y
  981.        tya
  982.        iny
  983.        sta (pt),y
  984.        rts
  985. ;
  986. pass1  print pa1
  987.        mvw prgst,back
  988.        jsr addlin
  989.        mvw prgst,count
  990. p100   jsr isexpr
  991.        bcc p101
  992.        jsr next
  993.        jmp p100
  994. p101   jsr coout
  995.        ldy #0
  996.        lda (count),y
  997.        cmp #16
  998.        bne p102
  999.        jsr getarn
  1000.        jmp p117
  1001. p102   cmp #25
  1002.        bne p104
  1003.        clc
  1004.        lda #3
  1005.        adc count
  1006.        sta back
  1007.        ldy count+1
  1008.        bcc p103
  1009.        iny
  1010. p103   sty back+1
  1011.        jsr addlin
  1012.        sec
  1013.        ldy #0
  1014.        bcs p105
  1015. p104   cmp #26
  1016.        bne p106
  1017. p105   iny
  1018.        lda (count),y
  1019.        sta back+1
  1020.        iny
  1021.        lda (count),y
  1022.        sta back
  1023.        jsr addlin
  1024.        jmp p117
  1025. p106   cmp #27
  1026.        beq p107
  1027.        cmp #28
  1028.        bne p111
  1029. p107   iny
  1030.        lda (count),y
  1031.        clc
  1032.        adc count
  1033.        sta back
  1034.        ldy count+1
  1035.        bcc p108
  1036.        iny
  1037. p108   sty back+1
  1038.        jsr addlin
  1039.        mvw count,p2
  1040.        ldy #1
  1041.        lda (p2),y
  1042.        lsr a
  1043.        sta i
  1044.        dec i
  1045. p109   clc
  1046.        lda #2
  1047.        adc p2
  1048.        sta p2
  1049.        bcc p110
  1050.        inc p2+1
  1051. p110   ldy #0
  1052.        lda (p2),y
  1053.        sta back+1
  1054.        iny
  1055.        lda (p2),y
  1056.        sta back
  1057.        jsr addlin
  1058.        dec i
  1059.        bne p109
  1060.        jmp p117
  1061. p111   cmp #31
  1062.        bne p113
  1063.        iny
  1064.        lda (count),y
  1065.        ldy count+1
  1066.        clc
  1067.        adc count
  1068.        sta back
  1069.        bcc p112
  1070.        iny
  1071. p112   sty back+1
  1072.        jsr addlin
  1073.        jmp p117
  1074. p113   cmp #29
  1075.        bne p116
  1076. p114   mvw count,back
  1077.        inc back
  1078.        bne p115
  1079.        inc back+1
  1080. p115   jsr addlin
  1081.        jmp p117
  1082. p116   cmp #57
  1083.        beq p114
  1084. p117   cmp #79
  1085.        bne p118
  1086.        jsr linen1
  1087.        bcc p119
  1088. p118   jsr next
  1089.        jmp p100
  1090. p119   ldy #0
  1091.        lda ($63),y
  1092.        iny
  1093.        and ($63),y
  1094.        cmp #255
  1095.        bne p117
  1096.        rts
  1097. ;
  1098. pass2  print pa2
  1099.        lda #2
  1100.        sta 2
  1101.        mvw prgst,count
  1102.        jsr pushrg
  1103.        ldy wp+1
  1104.        iny
  1105.        sty pt+1
  1106. p200   lda #36
  1107.        sta pt
  1108.        jsr coout
  1109.        jsr getst
  1110.        jsr incpt
  1111. p201   lda (count),y
  1112.        cmp #79     : END ?
  1113.        beq p205
  1114.        jsr linend
  1115.        bcs p203
  1116.        ldy #0
  1117.        lda #':'
  1118.        sta (pt),y
  1119.        inc pt
  1120.        jsr next
  1121.        phw count
  1122.        jsr getst
  1123.        jsr incpt
  1124.        lda pt
  1125.        cmp #76
  1126.        bcs p204
  1127.        pla
  1128.        pla
  1129.        jmp p201
  1130. p203   jsr next    ; Zeilenende
  1131.        mvw count,back
  1132.        jsr addlin
  1133.        jmp p200
  1134. p204   plw count   ; Ueberlange Zeile: zerlegen
  1135.        mvw count,back
  1136.        jsr addlin
  1137.        jmp p200
  1138. p205   jsr linen1
  1139.        bcc p207
  1140. p206   jsr next
  1141.        mvw count,back
  1142.        jsr addlin
  1143.        jmp p200
  1144. p207   ldy #0
  1145.        lda ($63),y
  1146.        iny
  1147.        and ($63),y
  1148.        cmp #255
  1149.        bne p206
  1150.        rts
  1151. ;
  1152. pass3  print pa3
  1153.        lda #3
  1154.        sta 2
  1155.        ldx #2
  1156.        jsr ckout
  1157.        lda #1
  1158.        jsr bsout
  1159.        lda #8
  1160.        jsr bsout
  1161.        jsr clrch
  1162.        mvw prgst,count
  1163.        jsr pushrg
  1164.        ldy wp+1
  1165.        iny
  1166.        sty pt+1
  1167. p300   lda #32
  1168.        sta pt
  1169.        jsr coout
  1170.        ldy #0
  1171.        lda #1
  1172.        sta (pt),y
  1173.        iny
  1174.        sta (pt),y
  1175.        mvw count,back
  1176.        jsr sline
  1177.        ldy #2
  1178.        lda back
  1179.        sta (pt),y
  1180.        iny
  1181.        lda back+1
  1182.        sta (pt),y
  1183.        lda #36
  1184.        sta pt
  1185. p301   jsr getst
  1186.        jsr incpt
  1187.        lda (count),y
  1188.        cmp #79
  1189.        beq p304
  1190.        jsr linen1
  1191.        bcs p302
  1192.        ldy #0
  1193.        lda #':'
  1194.        sta (pt),y
  1195.        inc pt
  1196.        jsr next
  1197.        jmp p301
  1198. p302   lda pt
  1199.        sbc #31
  1200.        sta back
  1201.        lda #32
  1202.        sta pt
  1203.        ldx #2
  1204.        jsr ckout
  1205.        ldy #0
  1206. p303   lda (pt),y
  1207.        jsr bsout
  1208.        iny
  1209.        cpy back
  1210.        bne p303
  1211.        jsr clrch
  1212.        jsr next
  1213.        jmp p300
  1214. p304   jsr linen1
  1215.        bcs p302
  1216.        lda pt
  1217.        sbc #30
  1218.        sta back
  1219.        lda #32
  1220.        sta pt
  1221.        ldx #2
  1222.        jsr ckout
  1223.        ldy #0
  1224. p305   lda (pt),y
  1225.        jsr bsout
  1226.        iny
  1227.        cpy back
  1228.        bne p305
  1229.        jsr clrch
  1230.        phw count
  1231.        jsr datout
  1232.        ldx #2
  1233.        jsr ckout
  1234.        lda #0
  1235.        jsr bsout
  1236.        jsr bsout
  1237.        plw count
  1238. p306   lda count
  1239.        cmp vst
  1240.        bne p307
  1241.        lda count+1
  1242.        cmp vst+1
  1243.        beq p308
  1244. p307   ldy #0
  1245.        lda (count),y
  1246.        jsr bsout
  1247.        inc count
  1248.        bne p306
  1249.        inc count+1
  1250.        bne p306
  1251. p308   jsr clrch
  1252.        rts
  1253. ;
  1254. pa1    .byt 13,'pass 1:arrays/goto/gosub/if',$8d
  1255. ;
  1256. pa2    .byt 13,13,'pass 2:zeilen',$8d
  1257. ;
  1258. pa3    .byt 13,13,'pass 3:basicprogramm',$8d
  1259. ;
  1260. coout  lda count+1
  1261.        jsr hout
  1262.        lda count
  1263.        jsr hout
  1264.        lda #145
  1265.        jsr bsout
  1266.        lda #13
  1267.        jsr bsout
  1268.        rts
  1269. ;
  1270. hout   pha
  1271.        lsr a
  1272.        lsr a
  1273.        lsr a
  1274.        lsr a
  1275.        jsr lout
  1276.        pla
  1277. lout   and #15
  1278.        ora #$30
  1279.        cmp #$3a
  1280.        bcc l1
  1281.        adc #6
  1282. l1     jsr bsout
  1283.        rts
  1284. ;
  1285. .list
  1286. ;
  1287. .end
  1288.