home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 203 / 203.d81 / src.beck module < prev    next >
Encoding:
Text File  |  2001-01-01  |  1.8 KB  |  112 lines

  1.   *=$0400             ;BECK Module
  2.  
  3. .nolist
  4.  
  5. jmp INIT
  6. jmp QUIT
  7.  
  8. NW: .byte 0         ;1030   # of words 
  9. .byte <KeyNum       ;1031
  10. .byte >KeyNum       ;1032
  11. .byte <KeyWords     ;1033
  12. .byte >KeyWords     ;1034
  13. .byte <Zip+1        ;1035
  14. .byte >Zip          ;1036
  15.  
  16. INIT:               ;set indirect vectors
  17.      lda #<Token
  18.      sta 780
  19.      lda #>Token
  20.      sta 781
  21.      lda #<List
  22.      sta 782
  23.      lda #>List
  24.      sta 783
  25.      lda #<State
  26.      sta 784
  27.      lda #>State
  28.      sta 785
  29.      rts
  30.  
  31. QUIT:               ;reset vectors
  32.      lda #33
  33.      sta 780
  34.      lda #67
  35.      sta 781
  36.      lda #205
  37.      sta 782
  38.      lda #81
  39.      sta 783
  40.      lda #169
  41.      sta 784
  42.      lda #75
  43.      sta 785
  44.      rts
  45.  
  46. Token:
  47.      sta 2          ;save current chr
  48.      ldy #<KeyWords
  49.      lda #>KeyWords
  50.      jsr 17378      ;search through table
  51.      bcc B3         ;no match found
  52.      adc #166       ;token = 38+list#+128
  53.      ldx #0         ;ext statement flag
  54.      clc            ;word found flag
  55.      jmp 17185      ;continue
  56. B3:  sec            ;no match flag
  57.      lda 2          ;original chr
  58.      jmp 17185
  59.  
  60. List:
  61.      cpx #0         ;test for statement
  62.      bne B4         ;exit if function
  63.      cmp NW         ;must be less
  64.      bcs B4
  65.      sec
  66.      sbc #39        ;change 39+ to 0+
  67.      tay
  68.      lda KeyNum,y
  69.      clc
  70.      adc #<KeyWords
  71.      tay
  72.      lda #0
  73.      adc #>KeyWords
  74.      sty 36
  75.      sta 37
  76.      clc
  77.      jmp 20941      ;continue
  78. B4:  sec
  79.      jmp 20941
  80.  
  81. State:
  82.      cmp NW         ;must be less
  83.      bcs B5
  84.      sec            ;change 39+ to 0+
  85.      sbc #39
  86.      sta 6
  87.      cmp #20        ;get rid of 20
  88.      bcc *+4
  89.      dec 6
  90.      lda #>Exec     ;high byte first
  91.      pha
  92.      lda #<Exec
  93.      pha
  94.      clc
  95. B5:  jmp 19369      ;continue
  96.  
  97. Exec:
  98.      nop
  99.      sta $ff01
  100. Zip: jsr $1234
  101.      lda #0
  102.      sta $ff00
  103.      rts
  104.  
  105. KeyNum: .byte 0
  106.  
  107. *=*+32
  108.  
  109. KeyWords: .byte 0
  110.  
  111. .end
  112.