home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-12-16 | 86.4 KB | 3,830 lines |
- ;/*beginfile BASIC5_asm
- ; --------------------------------------------------------------
- ; BASIC5_asm - BASIC bits
- ; - last modified 27/08/95
- ; QDOS-Amiga sources by Rainer Kowallik
- ; ...some changes by Mark J Swift
- ; --------------------------------------------------------------
- ; create coded program / code line #
- L08474:
- JSR L04E4C(PC) ;*/undomodify BSR L04E4C
- MOVEA.L BV_RIP(A6),A1 ;arith stack
- JSR CN_DTOI(PC) ;*/undomodify BSR CN_DTOI
- BNE.S L084A4
- TST.W 0(A6,A1.L)
- BLE.S L084A4
- TST.B BV_UNRVL(A6) ;Need to unravel
- ;($ff) or not (0)
- BEQ.S L08496
- L0848E ADDA.W #$C,A7
- MOVEQ #1,D0
- RTS
- L08496 MOVEQ #4,D1
- MOVEQ #-$73,D4
- MOVE.W 0(A6,A1.L),D5
- JSR L08E0A(PC) ;*/undomodify BSR L08E0A
- ADDQ.L #2,(A7)
- L084A4 RTS
- L084A6:
- DC.L $04050709,$0C012D01,$2B027E7E,$134E4F54
- L084B6:
- LEA L084A6(PC),A2
- JSR L08748(PC) ;*/undomodify BSR L08748
- BRA.S L084C8
- MOVEQ #-$7A,D4
- JSR L08DFA(PC) ;*/undomodify BSR L08DFA
- ADDQ.L #2,(A7)
- L084C8 RTS
- L084CA:
- MOVEQ #1,D3
- BRA.S L084D0
- L084CE:
- MOVEQ #0,D3
- L084D0 MOVEA.L A0,A3
- JSR L08706(PC) ;*/undomodify BSR L08706
- BRA.S L084F8
- MOVE.L A0,D5
- SUB.L A3,D5
- CMPI.W #$00FF,D5
- BGT.S L084F8
- MOVE.L A0,-(A7)
- JSR L08622(PC) ;*/undomodify BSR L08622
- ;check name in buffer and
- ;get address of name list
- BRA.S L084F6 ;error
- MOVEA.L (A7)+,A0
- MOVEQ #-$78,D4
- JSR L08E0A(PC) ;*/undomodify BSR L08E0A
- ADDQ.L #2,(A7)
- RTS
- L084F6 MOVEA.L (A7)+,A0
- L084F8 RTS
- L084FA:
- DC.W $1617,$191B,$1D1F,$2224,$2729,$2C2F,$3134,$373A
- DC.W $3C3E,$4145,$494D
- DC.B $51
- DC.B $01,'+'
- DC.B $01,'-'
- DC.B $01,'*'
- DC.B $01,'/'
- DC.B $02,'>='
- DC.B $01,'>'
- DC.B $02,'=='
- DC.B $01,'='
- DC.B $02,'<>'
- DC.B $02,'<='
- DC.B $01,'<'
- DC.B $02,'||'
- DC.B $02,'&&'
- DC.B $02,'^^'
- DC.B $01,'^'
- DC.B $01,'&'
- DC.B $12,'OR'
- DC.B $13,'AND'
- DC.B $13,'XOR'
- DC.B $13,'MOD'
- DC.B $13,'DIV'
- DC.B $15,'INSTR'
- DC.B $00
- L08552:
- LEA L084FA(PC),A2
- JSR L08748(PC) ;*/undomodify BSR L08748
- BRA.S L08564
- MOVEQ #-$7B,D4
- JSR L08DFA(PC) ;*/undomodify BSR L08DFA
- ADDQ.L #2,(A7)
- L08564 RTS
- L08566 ; table of 5 separators
- DC.B $05,$06,$08,$0A
- DC.W $0C0E
- DC.B $01,',',$01,';',$01,'\'
- DC.B $01,'!',$12,'TO'
- DC.B $00
- L08578:
- LEA L08566(PC),A2
- JSR L08748(PC) ;*/undomodify BSR L08748
- BRA.S L0858A ;error
- MOVEQ #-$72,D4
- JSR L08DFA(PC) ;*/undomodify BSR L08DFA
- ADDQ.L #2,(A7)
- L0858A RTS
- L0858C MOVEQ #0,D1
- MOVEQ #0,D5
- L08590 ADDQ.W #1,D5
- MOVE.B 0(A6,A0.L),D1
- ADDQ.W #1,A0
- CMPI.B #$20,D1
- BEQ.S L08590
- SUBQ.W #1,A0
- SUBQ.W #1,D5
- BEQ.S L085AA
- MOVEQ #-$80,D4
- JSR L08DFA(PC) ;*/undomodify BSR L08DFA
- L085AA RTS
- L085AC:
- MOVE.B 0(A6,A0.L),D2
- CMPI.B #$22,D2
- BEQ.S L085BC
- CMPI.B #$27,D2
- BNE.S L085DE
- L085BC LEA 1(A0),A2
- MOVEQ #-1,D5
- MOVEQ #$0A,D3
- L085C4 ADDQ.W #1,A0
- ADDQ.W #1,D5
- MOVE.B 0(A6,A0.L),D1
- CMP.B D3,D1
- BEQ.S L085DE
- CMP.B D2,D1
- BNE.S L085C4
- ADDQ.W #1,A0
- MOVEQ #-$75,D4
- JSR L08E38(PC) ;*/undomodify BSR L08E38
- ADDQ.L #2,(A7)
- L085DE RTS
- L085E0:
- JSR L0872C(PC) ;*/undomodify BSR L0872C
- BNE.S L085F2
- MOVEA.L BV_TKP(A6),A3 ;token list running pointer
- CMPI.B #$80,-$02(A6,A3.L)
- BNE.S L0860A
- L085F2 MOVEA.L A0,A2
- MOVE.L BV_BFP(A6),D5 ;buffer running pointer
- SUBQ.L #1,D5
- MOVEA.L D5,A0
- SUB.L A2,D5
- BEQ.S L08608
- MOVEQ #-$74,D4
- MOVEQ #0,D2
- JSR L08E38(PC) ;*/undomodify BSR L08E38
- L08608 ADDQ.L #2,(A7)
- L0860A RTS
- L0860C:
- JSR L04E4C(PC) ;*/undomodify BSR L04E4C
- MOVEA.L BV_RIP(A6),A1 ;arith stack
- JSR CN_DTOF(PC) ;*/undomodify BSR CN_DTOF
- BNE.S L08620
- JSR L08E12(PC) ;*/undomodify BSR L08E12
- ADDQ.L #2,(A7)
- L08620 RTS
- ; --------------------------------------------------------------
- ; A3 contains pointer to Buffer with name , D5 contains length
- ; of name.
- ; A2 contains pointer to table to compare with this routine
- ; checks the name in buffer, and put it into the name list.
- ; return address of name table in A2
- ; --------------------------------------------------------------
- L08622:
- MOVE.L A2,-(A7) ;save address of table to
- ;compare with
- MOVE.B D5,D2 ;length of name -> D2
- MOVE.B D2,D1 ;once more the length of
- ;the name
- MOVEQ #5,D3 ;bit to clear for capital
- ;letters
- MOVEA.L BV_NTBAS(A6),A2 ;base of name table
- MOVEA.L A3,A1 ;pointer to buffer with
- ;name -> A1
- L08630 CMPA.L BV_NTP(A6),A2 ;top of name table
- BGE.S L08684 ;if end of name table
- TST.L 0(A6,A2.L) ;what is this
- BEQ.S L0864C ;can not be the same name
- MOVEA.L BV_NLBAS(A6),A4 ;name list
- ADDA.W 2(A6,A2.L),A4 ;add pointer to name in
- ;table
- MOVE.B 0(A6,A4.L),D5 ;get length of name in
- ;table
- CMP.B D2,D5 ;compare it with the length
- ;of the name in buffer
- BEQ.S L08650 ;length is the same, so
- ;test the rest
- L0864C ADDQ.W #8,A2 ;try next name pointer
- BRA.S L08630
- L08650 ; compare name in buffer (A3/A1) with name in name
- ; table (A2)
- TST.B D2 ;have we checked all bytes
- ;in the buffer ?
- BEQ.S L08672 ;end of name in buffer
- MOVE.B 0(A6,A3.L),D4 ;next byte of name in
- ;buffer -> D4
- ADDQ.W #1,A3 ;increment pointer in
- ;buffer
- BCLR D3,D4 ;capital letters only
- TST.B D5 ;have we checked all bytes
- ;in the name list ?
- BEQ.S L0867C ;end of name in list => not
- ;the same name
- ADDQ.W #1,A4 ;increment pointer in name
- ;list
- MOVE.B 0(A6,A4.L),D6 ;next byte of name in list
- ;-> D6
- BCLR D3,D6 ;cabital letters only
- CMP.B D4,D6 ;are the bytes of buffer
- ;and name list equal
- BNE.S L0867C ;not the same name
- SUBQ.B #1,D2 ;decrement number of bytes
- ;in buffer
- SUBQ.B #1,D5 ;decrement number of bytes
- ;in name list
- BRA.S L08650 ;continue comparision
- L08672:
- TST.B D5 ;is the the name in the
- ;name list complete ?
- BNE.S L0867C ;no => the name are not
- ;identical
- FOUND_x:
- MOVE.L A2,D5 ;pointer to name table
- ;entry -> D5 !!!!
- ADDQ.W #4,A7 ;clean up stack
- BRA.S L086FA ;return with success
- L0867C:
- MOVEA.L A1,A3 ;restore pointer to name in
- ;buffer
- MOVE.B D1,D2 ;restore length of name in
- ;buffer
- ADDQ.W #8,A2 ;try next name table entry
- BRA.S L08630 ;continue searching
- ; name not found in name list , so try list supplyed in (A7)
- L08684:
- MOVEQ #0,D6
- MOVEA.L A3,A0 ;pointer to name in buffer
- MOVEA.L (A7)+,A2 ;pointer to second list
- JSR L08966(PC) ;*/undomodify BSR L08966
- ;try to find name there
- BRA.S L08692 ;name not found
- BRA.S L08704 ;name found
- L08692:
- TST.B BV_UNRVL(A6) ;Need to unravel
- ;($ff) or not (0)
- BEQ.S L0869E
- ADDQ.W #8,A7
- JMP L0848E(PC) ;*/undomodify BRA L0848E
- L0869E ; write new name into name list, start entry into name
- ; table
- MOVEQ #0,D4
- MOVE.B D2,D4
- JSR L04DE8(PC) ;*/undomodify BSR L04DE8
- ;reserve memory for name
- ;table entry
- MOVE.L D4,D2
- MOVE.L #-1,4(A6,A2.L) ;initialize address of
- ;routine
- MOVEA.L BV_NLP(A6),A4 ;name list running pointer
- MOVE.L A4,D3
- SUB.L BV_NLBAS(A6),D3 ;name list
- MOVE.W D3,2(A6,A2.L) ;store pointer to name list
- ADD.L A3,D2
- MOVE.B -1(A6,D2.L),D3
- MOVEQ #0,D1
- SUBI.B #'%',D3 ;integer ?
- BLT.S L086D2 ;$ string
- BGT.S L086D0 ;nothing -> floatimg point
- ADDQ.W #1,D1 ;% integer
- L086D0 ADDQ.W #1,D1
- L086D2 ADDQ.W #1,D1
- MOVE.W D1,0(A6,A2.L) ;store type
- MOVE.L A2,D5 ;Store name table pointer
- MOVEQ #1,D1
- ADD.W D4,D1
- JSR L04E72(PC) ;*/undomodify BSR L04E72
- MOVE.B D4,0(A6,A4.L) ;length of name
- L086E6 ADDQ.W #1,A4 ;copy name to name list
- MOVE.B 0(A6,A3.L),0(A6,A4.L)
- ADDQ.W #1,A3
- SUBQ.B #1,D4
- BNE.S L086E6 ;continue copy
- ADDQ.W #1,A4
- MOVE.L A4,BV_NLP(A6) ;name list running pointer
- L086FA MOVEA.L D5,A2 ;store pointer to name
- ;table entry
- SUB.L BV_NTBAS(A6),D5 ;name table
- LSR.L #3,D5 ;calculate number of entry
- ;-> D5
- ADDQ.L #2,(A7) ;return with success
- L08704 RTS
- ; ------------------------------------------------
- L08706 BSR.S L0872C
- BNE.S L0872A
- CMPI.B #1,D2
- BNE.S L0872A
- L08710 ADDQ.W #1,A0
- BSR.S L0872C
- BEQ.S L08710
- CMPI.B #$24,D2
- BEQ.S L08722
- CMPI.B #$25,D2
- BNE.S L08728
- L08722 TST.B D3
- BNE.S L0872A
- ADDQ.W #1,A0
- L08728 ADDQ.L #2,(A7)
- L0872A RTS
- L0872C MOVEQ #0,D1
- MOVE.B 0(A6,A0.L),D1
- BLT.S L08746
- LEA L03C28(PC),A1 ;table defines type of
- ;ASCII code
- MOVE.B 0(A1,D1.W),D2
- CMPI.B #1,D2
- BEQ.S L08746
- CMPI.B #2,D2
- L08746 RTS
- L08748 MOVE.L A0,-(A7)
- MOVEQ #0,D5
- L0874C MOVEA.L (A7),A0
- BSR.S L08794
- L08750 ADDQ.W #1,D5
- MOVEA.L A2,A1
- CMP.B (A1),D5
- BGT.S L08790
- MOVEQ #0,D1
- MOVE.B 0(A1,D5.W),D1
- ADDA.W D1,A1
- MOVE.B (A1)+,D1
- CMP.B (A1)+,D0
- BNE.S L08750
- MOVE.B D1,D0
- SWAP D1
- MOVE.B D0,D1
- ANDI.B #$0F,D1
- L08770 SUBQ.B #1,D1
- BLE.S L0877E
- ADDQ.W #1,A0
- BSR.S L08794
- CMP.B (A1)+,D0
- BEQ.S L08770
- BRA.S L0874C
- L0877E:
- SWAP D1
- LSR.B #4,D1
- ADDQ.W #1,A0
- BEQ.S L0878C
- JSR L0872C(PC) ;*/undomodify BSR.S L0872C
- ;*/undomodify nop
- BEQ.S L0874C
- L0878C:
- ADDQ.L #2,4(A7)
- L08790:
- ADDQ.W #4,A7
- RTS
- L08794 MOVEQ #0,D0
- MOVE.B 0(A6,A0.L),D0
- BLT.S L087AC
- LEA L03C28(PC),A3 ;table defines type of
- ;ASCII code
- CMPI.B #1,0(A3,D0.W)
- BNE.S L087AC
- BCLR #5,D0
- L087AC RTS
- L087AE:
- DC.W L084CE-L087C4
- DC.W L0860C-L087C4
- DC.W L0860C-L087C4
- DC.W L04FFC-L087C4 ;*/undomend DC.W L087AC-...
- DC.W L08552-L087C4
- DC.W L084B6-L087C4
- DC.W L08578-L087C4
- DC.W L085AC-L087C4
- DC.W L085E0-L087C4
- DC.W L08474-L087C4
- DC.W L084CA-L087C4
- L087C4 LSR.B #1,D6
- L087C6 JSR L0858C(PC) ;*/undomodify BSR L0858C
- ADD.B D6,D6
- MOVE.W L087AE-2(PC,D6.W),D6
- JMP L087C4(PC,D6.W)
- ; Basic syntax analyser
- ANA_SYNX:
- MOVEQ #0,D7
- MOVEQ #0,D6
- MOVE.L (A2)+,-(A7) ;push instruction table
- ;(END,FOR,DEFine,...)
- MOVE.L (A2),-(A7) ;push command syntax table
- MOVEA.L (A7),A5 ;Command syntax table -> A5
- MOVE.W (A5),D6 ;get first word (offset)
- ADDA.W D6,A5 ;add offset to address
- MOVEQ #0,D4
- JSR PUSHD4TG(PC) ;*/undomodify BSR PUSHD4TG
- ;push D4 (=0) on temporary
- ;stack
- MOVEA.L (A6),A0 ;get text line buffer base
- BRA.S L0880E
- L087EC SUBI.B #$80,D6
- LSR.B #1,D6
- BNE.S L087FE
- SUBQ.W #1,A5
- JSR L08A7A(PC) ;*/undomodify BSR L08A7A
- BRA L088CE
- L087FE MOVE.L A5,D4
- JSR PUSHD4TG(PC) ;*/undomodify BSR PUSHD4TG
- ADD.B D6,D6
- MOVEA.L (A7),A5
- MOVE.W -2(A5,D6.W),D6
- ADDA.W D6,A5
- L0880E JSR L08A7E(PC) ;*/undomodify BSR L08A7E
- ;push #0 and A0(=text line)
- ;on backtrack stack
- L08812 MOVEQ #0,D6
- MOVE.B (A5)+,D6 ;next byte commando syntax
- BEQ.S L0887A
- BMI.S L087EC
- BCLR #6,D6
- BEQ.S L0882C
- MOVEA.L 4(A7),A2 ;get instruction syntax
- ;table (END,FOR,DEFine,...)
- JSR L08966(PC) ;*/undomodify BSR L08966
- BRA.S L08846 ;error
- BRA.S L08864
- L0882C BCLR #5,D6
- BEQ.S L0883A
- JSR L08B34(PC) ;*/undomodify BSR L08B34
- BRA.S L08846 ;error
- BRA.S L08864
- L0883A:
- MOVEA.L 4(A7),A2 ;get instruction syntax
- ;table
- JSR L087C4(PC) ;*/undomodify BSR.S L087C4
- ;*/undomodify nop
- BRA.S L08846 ;error
- BRA.S L08864
- L08846:
- MOVEA.L BV_BTP(A6),A2 ;backtrack stack
- ;during parsing
- L0884A MOVEA.L 0(A6,A2.L),A3
- MOVEA.L 4(A6,A2.L),A0
- MOVE.L 8(A6,A2.L),D3
- ADDA.W #$0C,A2
- BLT.S L0884A
- ADDQ.W #1,A5
- MOVE.L A3,BV_TKP(A6) ;token list running pointer
- BRA.S L08812 ;go on analysing with next
- ;item
- L08864 JSR L08A7A(PC) ;*/undomodify BSR L08A7A
- L08868 MOVEQ #0,D6
- MOVE.B (A5),D6
- BEQ.S L088CE
- BMI.S L08874
- ADDA.W D6,A5
- BRA.S L08812
- L08874 NEG.B D6
- SUBA.W D6,A5
- BRA.S L08812
- L0887A MOVEA.L BV_BTP(A6),A4 ;backtrack stack
- ;during parsing
- CMPA.L BV_BTBAS(A6),A4 ;backtrack running pointer
- BGT.S L088B2
- MOVEA.L 0(A6,A4.L),A3
- MOVEA.L 4(A6,A4.L),A0
- MOVEA.L 8(A6,A4.L),A5
- ADDA.W #$0C,A4
- MOVE.L A4,BV_BTP(A6) ;backtrack stack
- ;during parsing
- MOVE.L A5,D3
- BGT.S L088A6
- BEQ.S L088B8
- MOVE.L A0,D4
- JSR PUSHD4TG(PC) ;*/undomodify BSR PUSHD4TG
- BRA.S L0887A
- L088A6 BTST D7,-1(A5)
- BEQ.S L08846
- MOVE.L -$10(A6,A4.L),D3
- BMI.S L08846
- L088B2 ADDQ.W #8,A7
- MOVEQ #-1,D0 ;Not complete error
- RTS
- L088B8 MOVEA.L BV_TGP(A6),A4 ;temporary graph stack
- ;during parsing
- MOVEA.L 0(A6,A4.L),A5
- ADDQ.W #4,A4
- MOVE.L A4,BV_TGP(A6) ;temporary graph stack
- ;during parsing
- MOVE.L A5,D3
- BEQ.S L088B2
- BRA L08846
- L088CE JSR L04E52(PC) ;*/undomodify BSR L04E52
- ;reserve 12 byte on
- ;arith stack
- MOVEA.L BV_BTP(A6),A4 ;backtrack stack
- ;during parsing
- MOVEA.L BV_TGP(A6),A2 ;temporary graph stack
- ;during parsing
- SUBQ.W #8,A4
- MOVE.L #-1,4(A6,A4.L)
- MOVE.L 0(A6,A2.L),0(A6,A4.L)
- MOVEA.L 0(A6,A4.L),A5
- SUBQ.W #4,A4
- MOVE.L BV_TKP(A6),0(A6,A4.L) ;token list running ptr
- ADDQ.W #4,A2
- MOVE.L A2,BV_TGP(A6) ;temporary graph stack
- ;during parsing
- MOVE.L A4,BV_BTP(A6) ;backtrack stack
- ;during parsing
- MOVE.L A5,D3
- BNE L08868
- ADDQ.W #8,A7
- MOVEQ #0,D0
- RTS
- INI_STCK ; Imitialize BASIC stacks
- MOVE.L BV_BTBAS(A6),BV_BTP(A6) ;backtrack running ptr
- MOVE.L BV_TGBAS(A6),BV_TGP(A6) ;graph stack running ptr
- MOVE.L BV_TKBAS(A6),BV_TKP(A6) ;token list
- MOVEQ #$7E,D1
- JSR L04E6E(PC) ;*/undomodify BSR L04E6E
- MOVEQ #$20,D1
- JSR BV_CHRIX(PC) ;*/undomodify BSR BV_CHRIX
- MOVE.L BV_RIP(A6),BV_TGBAS(A6) ;arith stack
- SUBI.L #$20,BV_TGBAS(A6) ;graph stack running ptr
- MOVE.L BV_TGBAS(A6),BV_TGP(A6) ;graph stack running ptr
- MOVEQ #$50,D1
- JSR L04E5A(PC) ;*/undomodify BSR L04E5A
- MOVE.L BV_TGP(A6),BV_BTBAS(A6) ;temporary graph stack
- ;during parsing
- SUBI.L #$50,BV_BTBAS(A6) ;backtrack running pointer
- MOVE.L BV_BTBAS(A6),BV_BTP(A6) ;backtrack running ptr
- MOVEQ #0,D0
- JSR L04E32(PC) ;*/undomodify BSR L04E32
- ;allocate memory
- MOVE.W #$0200,D1
- JMP L04E54(PC) ;*/undomodify BRA L04E54
- L08966:
- MOVEM.L D0-D5/A1-A5,-(A7)
- MOVEA.L A2,A3
- MOVEA.L A0,A1
- MOVEQ #0,D3
- MOVEQ #0,D4
- MOVEQ #0,D5
- MOVEQ #0,D0
- LSR.B #1,D6
- BEQ.S L08980
- JSR L0858C(PC) ;*/undomodify BSR L0858C
- BRA.S L08986
- L08980 ST D0
- SWAP D0
- MOVEQ #1,D6
- L08986 MOVEQ #0,D1
- CMP.B (A2),D6
- BGT L08A48
- MOVE.B 0(A2,D6.W),D1
- ADDA.L D1,A2
- MOVE.B (A2)+,D1
- ROR.L #4,D1
- MOVE.B D1,D4
- SWAP D1
- ROL.W #4,D1
- MOVE.B D1,D3
- L089A0 SUBQ.B #1,D4
- BLT.S L089FC
- MOVE.B (A2)+,D2
- CMPI.B #$60,D2
- BGT.S L089B2
- ST D0
- SF D5
- BRA.S L089BC
- L089B2 SF D0
- TST.B D5
- BNE.S L089A0
- SUBI.B #$20,D2
- L089BC MOVE.B 0(A6,A0.L),D1
- ADDQ.W #1,A0
- CMPI.B #$60,D1
- BLE.S L089CC
- SUBI.B #$20,D1
- L089CC CMP.B D2,D1
- BEQ.S L089A0
- TST.B D0
- BNE.S L089DA
- ST D5
- SUBQ.W #1,A0
- BRA.S L089A0
- L089DA SWAP D0
- TST.B D0
- BEQ.S L08A48
- SWAP D5
- TST.B D5
- SWAP D5
- BEQ.S L089EC
- TST.B D3
- BNE.S L089F4
- L089EC ADDQ.W #1,D6
- MOVEA.L A1,A0
- MOVEA.L A3,A2
- BRA.S L08986
- L089F4 MOVEA.L A4,A0
- SUBQ.B #1,D3
- ADDA.L D4,A2
- BRA.S L08A30
- L089FC SWAP D0
- TST.B D0
- BEQ.S L08A38
- MOVE.B 0(A6,A0.L),D1
- BLT.S L08A48
- LEA L03C28(PC),A5 ;table defines type of
- ;ASCII code
- CMPI.B #$01,0(A5,D1.W)
- BEQ.S L08A1E
- CMPI.B #$02,0(A5,D1.W)
- BEQ.S L08A48
- BRA.S L08A40
- L08A1E SWAP D5
- TST.B D5
- BNE.S L08A48
- TST.B D3
- BEQ.S L08A48
- ST D5
- SWAP D5
- SUBQ.B #1,D3
- MOVEA.L A0,A4
- L08A30 MOVE.B (A2)+,D4
- LSR.B #4,D4
- BRA L089A0
- L08A38 MOVEQ #-$7F,D4
- MOVE.B D6,D5
- JSR L08DFA(PC) ;*/undomodify BSR L08DFA
- L08A40 MOVEM.L (A7)+,D0-D5/A1-A5
- ADDQ.L #2,(A7)
- RTS
- L08A48 MOVEM.L (A7)+,D0-D5/A1-A5
- RTS
- COMP_ERR ; error when compiling
- MOVE.L BV_TKBAS(A6),BV_TKP(A6) ;token list
- MOVEA.L (A6),A0
- JSR L08474(PC) ;*/undomodify BSR L08474
- BRA.S L08A76 ;error
- MOVEQ #-$7F,D4 ;error
- MOVEQ #$1F,D5
- JSR L08DFA(PC) ;*/undomodify BSR L08DFA
- JSR L085F2(PC) ;*/undomodify BSR L085F2
- ;success
- BRA.S L08A76
- MOVEQ #-$7C,D4
- MOVEQ #$0A,D5
- JSR L08DFA(PC) ;*/undomodify BSR L08DFA
- MOVEQ #0,D0
- RTS
- L08A76 MOVEQ #-21,D0 ;Bad line error
- RTS
- L08A7A MOVE.L A5,D4
- BRA.S L08A80
- L08A7E MOVEQ #0,D4
- L08A80 JSR L04E52(PC) ;*/undomodify BSR L04E52
- ;reserve 12 byte on
- ;arith stack
- MOVEA.L BV_BTP(A6),A4 ;backtrack stack
- ;during parsing
- SUBA.W #$0C,A4
- MOVE.L D4,8(A6,A4.L) ;push D4 on Backtrack stack
- MOVE.L A0,4(A6,A4.L) ;push A0 on Backtrack stack
- MOVE.L BV_TKP(A6),0(A6,A4.L) ;token list running ptr
- MOVE.L A4,BV_BTP(A6) ;backtrack stack
- ;during parsing
- RTS
- PUSHD4TG:
- JSR L04E58(PC) ;*/undomodify BSR L04E58
- ;reserve 4 bytes on
- ;arith stack
- MOVEA.L BV_TGP(A6),A4 ;temporary graph stack
- ;during parsing
- SUBQ.W #4,A4
- MOVE.L D4,0(A6,A4.L) ;put D4 on stack
- MOVE.L A4,BV_TGP(A6) ;temporary graph stack
- ;during parsing
- RTS
- ; --------------------------------------------------------------
- ; Format precompiled BASIC line. The line has to be tokenized
- ; and starts from 8(A6) and ends at $C(A6)
- ; --------------------------------------------------------------
- FMT_LINE:
- MOVEA.L 8(A6),A0 ;token list
- L08AB8 CMPA.L BV_TKP(A6),A0 ;token list running pointer
- BGE.S L08ADA ;end of list ?
- CMPI.B #$81,0(A6,A0.L) ;Search for non keyword
- ;token in token list
- BNE.S L08ACC
- ADDQ.W #2,A0
- BSR.S GO_SPACE
- BRA.S L08AB8
- L08ACC CMPI.W #$8409,0(A6,A0.L) ;symbol 9 = ?
- ADDQ.W #2,A0
- BNE.S L08AB8
- BSR.S L08B10 ;remove item from token
- ;list
- BRA.S L08AB8
- L08ADA MOVEA.L BV_TKBAS(A6),A0 ;token list
- CMPI.B #$80,0(A6,A0.L) ;space token
- BNE.S L08AEA
- ADDQ.W #2,A0
- BSR.S L08B10 ;remove space from token
- ;list
- L08AEA CMPI.W #$8D00,0(A6,A0.L) ;line # ?
- BNE.S L08B0E ;return
- ADDQ.W #4,A0
- GO_SPACE ; remove waste spaces
- CMPI.B #$80,0(A6,A0.L) ;space token ?
- BNE.S L08B0E ;no -> return
- MOVE.B 1(A6,A0.L),D1
- ADDQ.W #2,A0 ;next token
- SUBQ.B #1,D1
- BGT.S L08B0A
- BSR.S L08B10 ;remove space from token
- ;list
- BRA.S L08B0E
- L08B0A MOVE.B D1,-1(A6,A0.L) ;really neccessary
- ;??????????? <----
- L08B0E RTS
- ; remove last item from token list
- L08B10 LEA -2(A0),A2 ;old value of token list
- ;pointer before inc.
- L08B14 MOVE.W 0(A6,A0.L),-2(A6,A0.L)
- ADDQ.W #2,A0
- CMPA.L BV_TKP(A6),A0 ;token list running pointer
- BLT.S L08B14
- SUBQ.L #2,BV_TKP(A6) ;token list running pointer
- MOVEA.L A2,A0
- RTS
- ; NOW SEPERATORS =:#,(){} SPACE AND CR
- ; THIS WAS INTERPRETED AS CODE !!! CORRECTED
- L08B2A DC.L $3D3A232C
- DC.L $28297B7D
- DC.W $200A
- L08B34 LSR.B #1,D6
- L08B36 MOVE.B 0(A6,A0.L),D1
- CMP.B L08B2A-1(PC,D6.W),D1
- BEQ.S L08B4C
- CMPI.B #$20,D1
- BNE.S L08B58
- JSR L0858C(PC) ;*/undomodify BSR L0858C
- BRA.S L08B36
- L08B4C ADDQ.W #1,A0
- MOVEQ #-$7C,D4
- MOVE.B D6,D5
- JSR L08DFA(PC) ;*/undomodify BSR L08DFA
- ADDQ.L #2,(A7)
- L08B58 RTS
- ; --------------------------------------------------------------
- ;*/beginoverlay
- ;*/beginfilling
- ;*/removecode TB_LIST
- TB_LIST:
- DC.L L08D2B-ORG0
- DC.L COM_SYNX-ORG0
-
- ;NOP08B62:
- ; DCB.w ($8B62-(NOP08B62-ORGN))/2,$4E71
- ;*/endfilling
- ;*/endoverlay
- ; --------------------------------------------------------------
- COM_SYNX ; Command syntax table
- DC.L $0022004E,$00AE0060
- DC.L $006600BC,$00C400E3,$00FA0163,$01780185
- DC.L $019901A2,$01B001BD,$01BE1401,$840F8A12
- DC.L $861E8809,$68F98C05,$90039201,$25F13500
- DC.L $00780625,$EA350000,$33E525E3,$35000035
- DC.L $0025018E,$DA004E02,$00500452,$02003202
- DC.L $00020200,$80940000,$44084812,$4C164608
- DC.L $00320200,$17160033,$02009800,$00320200
- DC.L $0200005C,$0A320200,$02190023,$0C008033
- DC.L $02009808,$00270900,$960D0080,$28F50098
- DC.L $0C00809A,$00007A09,$8028EE00,$8028E700
- DC.L $33020098,$F4004A02,$00320200,$6A041600
- DC.L $0033FC00,$660A6408,$6C0C6A11,$22150032
- DC.L $02000200,$00803202,$00980000,$32020002
- DC.L $EC006E00,$96020028,$FC800042,$0200480D
- DC.L $440B4600,$4A004C00,$4E020080,$32020002
- DC.L $00006216,$704D7219,$74217C2B,$7E29542A
- DC.L $6A337649,$9E4D0251
- DC.W $0080
- L08C74 DC.L $32020098,$00003202,$009C0200,$28FC8000
- DC.L $32020002,$049C0200,$28FA8000,$12000056
- DC.L $04580200,$32020098,$00003202,$00980200
- DC.L $54020056,$04580200,$33020098,$020028FC
- DC.L $80003202,$009E0200,$22020098,$0000A000
- DC.L $002B0200,$02042B07,$0028FA2D,$00000202
- DC.L $0028FC2D,$F7009802,$00560380,$00320200
- DC.B $98,$00,$00
- ; --------------------------------------------------------------
- ;*/beginoverlay
- ;*/removecode EXP_SYNX
- ;*/beginfilling
- EXP_SYNX ; Expression syntax table
- DC.B $0C,$01,$2A,$08,$10
- DC.L $0C040C02,$08009802
- DC.L $002C0400,$2A05800A,$EB00A202,$002CF600
- DC.L $0202002A,$02009802,$0028FC2C,$00000202
- DC.L $00802A02,$00A20200,$2CF80080,$0EFE2601
- DC.L $9802000E
- DC.B $F7,$80,$00
-
- ; DC.B $00
- ;NOP08D2A:
- ; DCB.w ($8D2A-(NOP08D2A-ORGN))/2,$4E71
- ; DC.B $00
- ;*/endfilling
- ;*/endoverlay
- ; --------------------------------------------------------------
- L08D2B ; Base of instruction list
- DC.B $1F
- DC.L $2024282B
- DC.W $3239
- DC.L $3E454F58
- DC.L $5B5E6267
- DC.L $6D71777F
- DC.L $84898E91
- DC.L $98A2A7AB
- DC.L $B1B5BABF
- DC.W $C636
- DC.B 'END',$30,'FOR'
- DC.B $20,'IF',$60,'REPeat'
- DC.B $60,'SELect',$40,'WHEN'
- DC.B $62,'DEFine',$90,'PROCedure'
- DC.B $80,'FuNction',$22,'GO TO'
- DC.B $30,'SUB',$41,'WHEN',$50,'ERRor'
- DC.B $30,'END',$50,'ERRor',$70,'RESTORE'
- L08DAA DC.B $40,'NEXT',$40,'EXIT',$40,'ELSE'
- DC.B $20,'ON',$60,'RETurn'
- DC.B $90,'REMAINDER',$40,'DATA'
- DC.B $30,'DIM',$50,'LOCal'
- DC.B $30,'LET',$40,'THEN',$40,'STEP'
- DC.B $60,'REMark',$70,'MISTake',$00
- L08DFA MOVEQ #2,D1
- BSR.S L08E68
- MOVE.B D4,0(A6,A3.L)
- MOVE.B D5,1(A6,A3.L)
- ADDQ.W #2,A3
- BRA.S L08E5E
- L08E0A MOVEQ #$04,D1
- MOVEQ #0,D2
- BSR.S L08E76
- L08E10 BRA.S L08E5E
- L08E12 MOVEQ #$06,D1
- L08E14 MOVE.L A1,BV_RIP(A6) ;arith stack
- BSR.S L08E68
- MOVEA.L $0058(A6),A1 ;arith stack
- ADDQ.L #6,BV_RIP(A6) ;arith stack
- MOVE.W 0(A6,A1.L),D2
- ADDI.W #$F000,D2
- MOVE.W D2,0(A6,A3.L)
- MOVE.L 2(A6,A1.L),2(A6,A3.L)
- ADDQ.W #6,A3
- BRA.S L08E5E
- L08E38 MOVEQ #1,D1
- ADD.W D5,D1
- BVS.S L08E64
- L08E3E ADDQ.W #4,D1
- BSR.S L08E76
- BEQ.S L08E5E
- MOVE.W D5,D1
- L08E46 MOVE.B 0(A6,A2.L),0(A6,A3.L)
- ADDQ.W #1,A3
- ADDQ.W #1,A2
- SUBQ.W #1,D1
- BNE.S L08E46
- BTST D7,D5
- BEQ.S L08E5E
- MOVE.B D7,0(A6,A3.L)
- ADDQ.W #1,A3
- L08E5E MOVE.L A3,BV_TKP(A6) ;token list running pointer
- L08E62 RTS
- L08E64 ADDQ.W #4,A7
- RTS
- L08E68 MOVE.B D2,-(A7)
- JSR L04E6E(PC) ;*/undomodify BSR L04E6E
- MOVE.B (A7)+,D2
- MOVEA.L BV_TKP(A6),A3 ;token list running pointer
- RTS
- L08E76 BSR.S L08E68
- MOVE.B D4,0(A6,A3.L)
- MOVE.B D2,1(A6,A3.L)
- MOVE.W D5,2(A6,A3.L)
- ADDQ.W #4,A3
- RTS
- STO_LINE ; Store compiled line
- MOVEA.L BV_TKBAS(A6),A1 ;token list
- CMPI.B #$8D,0(A6,A1.L)
- BNE L08F82
- MOVE.W 2(A6,A1.L),D2
- MOVE.L BV_TKP(A6),D1 ;token list running pointer
- SUB.L A1,D1
- SUBQ.W #6,D1
- SEQ D0
- ADDQ.W #6,D1
- MOVEQ #0,D6
- MOVEQ #0,D5
- MOVEA.L BV_PFBAS(A6),A0 ;program file
- MOVEQ #0,D3
- BRA.S L08EB6
- L08EB2 MOVE.W $02(A6,A0.L),D3
- L08EB6 ADD.W D5,D6
- ADDA.L D6,A0
- MOVE.W 0(A6,A0.L),D5
- ADDQ.W #2,A0
- CMPA.L BV_PFP(A6),A0 ;program running pointer
- BLT.S INS_LINE
- ADDQ.B #1,D0
- BGT.S L08F44
- SUBQ.W #2,A0
- BRA.S L08EFE
- INS_LINE ; insert new line in prog
- CMP.W 2(A6,A0.L),D2
- BGT.S L08EB2
- BEQ.S L08F00
- SUBQ.W #2,A0
- TST.B D0
- BNE.S L08EFE
- ADDQ.W #2,D1
- BSR L08F84
- BSR.S L08F3A
- SUBQ.W #2,D1
- MOVE.W D1,D5
- SUB.W D6,D5
- MOVE.W D5,0(A6,A0.L)
- MOVEQ #$01,D0
- L08EF0 BSR L08F92
- ADD.W 0(A6,A0.L),D6
- SUB.W D1,D6
- MOVE.W D6,0(A6,A0.L)
- L08EFE BRA.S L08F5C
- L08F00 ; replace existing line in prog
- TST.B D0
- BEQ.S L08F06
- MOVEQ #-$02,D1
- L08F06 ADD.W D6,D5
- LEA -$0002(A0),A3
- ADDA.L D5,A0
- CMPA.L BV_PFP(A6),A0 ;program running pointer
- BGE.S L08F3C
- SUB.W D5,D1
- BLT.S L08F1A
- BSR.S L08F84
- L08F1A BSR.S L08F3A
- MOVEA.L A3,A0
- ADD.W D5,D1
- BGT.S L08F2E
- ADD.W 0(A6,A0.L),D5
- SUB.W D6,D5
- MOVE.W D5,0(A6,A0.L)
- BRA.S L08F5C
- L08F2E MOVE.W D1,D4
- SUB.W D6,D4
- MOVE.W D4,0(A6,A0.L)
- MOVE.W D5,D6
- BRA.S L08EF0
- L08F3A BRA.S L08FA6
- L08F3C LEA 2(A3),A0
- MOVE.L A3,BV_PFP(A6) ;program running pointer
- L08F44 SUBQ.W #2,A0
- TST.B D0
- BLT.S L08F5C
- ADDQ.W #2,D1
- BSR.S L08F84
- SUBQ.W #2,D1
- SUB.W D6,D1
- MOVE.W D1,0(A6,A0.L)
- BSR.S L08F92
- MOVE.L A0,BV_PFP(A6) ;program running pointer
- L08F5C TST.B $00B9(A6)
- BEQ.S L08F80
- SF BV_AUTO(A6) ;Whether AUTO/EDIT
- ;is on ($FF) or off (0)
- BGT.S L08F70
- MOVE.W D3,BV_EDLIN(A6) ;Line # to edit next
- BNE.S L08F7C
- BRA.S L08F80
- L08F70 CMPA.L BV_PFP(A6),A0 ;program running pointer
- BGE.S L08F7C
- MOVE.W $04(A6,A0.L),BV_EDLIN(A6) ;Line # to
- ;edit next
- L08F7C ST BV_AUTO(A6) ;Whether AUTO/EDIT
- ;is on ($FF) or off (0)
- L08F80 ADDQ.L #2,(A7)
- L08F82 RTS
- L08F84 MOVEM.L D0-D3/A0-A3,-(A7)
- JSR L04E82(PC) ;*/undomodify BSR L04E82
- MOVEM.L (A7)+,D0-D3/A0-A3
- RTS
- L08F92 ADDQ.W #2,A0
- MOVE.W 0(A6,A1.L),0(A6,A0.L)
- ADDQ.W #2,A1
- CMPA.L BV_TKP(A6),A1 ;token list running pointer
- BLT.S L08F92
- ADDQ.W #2,A0
- RTS
- L08FA6 MOVEM.L D0-D3/A0-A3,-(A7)
- EXT.L D1
- TST.L D1
- BEQ.S L08FE0
- MOVEA.L BV_PFP(A6),A1 ;program running pointer
- BLT.S L08FCA
- LEA 0(A1,D1.W),A2
- L08FBA SUBQ.W #2,A1
- SUBQ.W #2,A2
- MOVE.W 0(A6,A1.L),0(A6,A2.L)
- CMPA.L A0,A1
- BGT.S L08FBA
- BRA.S L08FDC
- L08FCA LEA 0(A0,D1.W),A2
- L08FCE MOVE.W 0(A6,A0.L),0(A6,A2.L)
- ADDQ.W #2,A0
- ADDQ.W #2,A2
- CMPA.L A1,A0
- BLT.S L08FCE
- L08FDC ADD.L D1,BV_PFP(A6) ;program running pointer
- L08FE0 MOVEM.L (A7)+,D0-D3/A0-A3
- RTS
- L08FE6 ST BV_PRINT(A6) ;Print from prtok ($ff)
- ;or leave in buffer
- MOVEA.L BV_LNBAS(A6),A1 ;line # table
- MOVE.L BV_LNP(A6),D0 ;line # running ptr
- SUB.L A1,D0
- BNE.S L09000
- MOVE.W D2,D4
- BEQ.S L09060
- MOVE.W D2,D6
- BRA.S L09044
- L08FFE MOVE.W D4,D2
- L09000 MOVE.W 0(A6,A1.L),D4
- TST.W D2
- BEQ.S L08FFE
- MOVE.W BV_LSBAS(A6),D6 ;Bottom line in window
- CMP.W BV_LSBEF(A6),D2 ;Invisible top line
- BLT.S L09060
- CMP.W D4,D2
- BLT.S L09032
- CMP.W BV_LSAFT(A6),D2 ;Invisible bottom line
- BGT.S L09060
- CMP.W D6,D2
- BGT.S L0902A
- TST.B D5
- BGE.S L09044
- MOVE.W BV_LSAFT(A6),D6 ;Invisible bottom line
- BRA.S L09044
- L0902A TST.B D5
- BLT.S L09060
- MOVE.W D2,D6
- BRA.S L09044
- L09032 TST.B D5
- BLT.S L09060
- MOVE.W D2,D4
- MOVE.W BV_MAXLN(A6),D0 ;Max. number of window lines
- SUB.W BV_TOTLN(A6),D0 ;Number of window line so far
- BGT.S L09044
- SUBQ.W #1,D6
- L09044 MOVE.W D2,BV_LSFIL(A6) ;fill window when
- ;relisting up to here
- MOVEQ #$10,D0 ;SD.POS position cursor at
- ;row, column (char)
- MOVEQ #0,D2
- MOVEQ #0,D1
- BSR.S L0905C
- MOVEQ #0,D7
- JSR TKN_LIST(PC) ;*/undomodify BSR TKN_LIST
- MOVEQ #$24,D0 ;clears right hand end of
- ;cursor line
- BSR.S L0905C
- MOVEQ #$22,D0 ;Clears bottom of window
- L0905C MOVEQ #-1,D3
- TRAP #3
- L09060 RTS
- L09062:
- DC.L $02020404,$02020204,$040204FB,$FB040200
- L09072:
- MOVEQ #0,D0
- MOVEQ #6,D1
- MOVE.B 0(A6,A4.L),D0
- BEQ.S L09098
- SUBI.B #$80,D0
- CMPI.B #$70,D0
- BGE.S L09096
- MOVE.B L09062(PC,D0.W),D1
- BGE.S L09096
- NEG.B D1
- ADD.W 2(A6,A4.L),D1
- BCLR #0,D1
- L09096 ADDA.L D1,A4
- L09098 MOVE.B 0(A6,A4.L),D0
- MOVE.W 0(A6,A4.L),D1
- RTS
- L090A2 MOVE.L A1,-(A7)
- MOVEA.L BV_CHBAS(A6),A1 ;channel name
- ADDA.W #$50,A1
- MOVE.L 0(A6,A1.L),D0
- SUB.L A0,D0
- MOVEA.L (A7)+,A1
- RTS
- L090B6:
- MOVE.L A5,-(A7)
- MOVEA.L A0,A5
- BSR.S L090A2
- SEQ $9B(A6) ;whether checking list
- ;($FF) or not (0)
- BNE.S L09108
- MOVEQ #$0B,D0 ;get window size and cursor
- ;position
- LEA $A2(A6),A1 ;length of window line
- MOVEQ #-1,D3
- TRAP #3
- MOVE.L BV_LNBAS(A6),BV_LNP(A6) ;line # table ->
- ;running pointer
- CLR.W BV_TOTLN(A6) ;number of window lines so far
- MOVEQ #$64,D1
- ;*/undoinsert MOVEQ #$44,D2
- JSR L04E7E(PC) ;*/undomodify BSR L04E7E
- ;*/undomodify BSR L04E84
- MOVE.W BV_LINUM(A6),BV_LSBEF(A6) ;Current line # ->
- ;invisible top line
- MOVE.W #$7FFF,BV_LSAFT(A6) ;Invisible bottom line
- BRA.S L09108
- L090EA:
- DC.W L092F8-L090EA
- DC.W L09314-L090EA
- DC.W L09292-L090EA
- DC.W L09292-L090EA
- DC.W L09338-L090EA
- DC.W L0930E-L090EA
- DC.W L0931A-L090EA
- DC.W L09292-L090EA
- DC.W L0929C-L090EA
- DC.W L09292-L090EA
- DC.W L09292-L090EA
- DC.W L092E2-L090EA
- DC.W L092EC-L090EA
- DC.W L09238-L090EA
- DC.W L09308-L090EA
- L09108 MOVE.L (A2),-(A7)
- ADDQ.W #2,A4
- MOVEQ #0,D4
- MOVE.B #$8D,D4
- L09112 MOVE.L (A6),4(A6) ;Buffer base -> buffer
- ;running pointer
- L09116 CMPA.L BV_PFP(A6),A4 ;program running pointer
- BLT.S L09130
- TST.B BV_PRINT(A6) ;Print from prtok ($ff)
- ;or leave in buffer
- BNE L09202
- TST.B BV_AUTO(A6) ;Whether AUTO/EDIT
- ;is on ($FF) or off (0)
- BEQ L09202
- BSR L09250
- L09130 MOVEQ #$10,D1
- BSR L092C0
- MOVEA.L (A7),A1
- SUBI.B #$80,D4
- CMPI.B #$70,D4
- BGE L091F2
- ADD.B D4,D4
- MOVE.W L090EA(PC,D4.W),D4
- JSR L090EA(PC,D4.W)
- CMPI.B #$8D,D4
- BNE L091F4
- TST.B BV_PRINT(A6) ;Print from prtok ($ff)
- ;or leave in buffer
- BEQ L091FE
- TST.B BV_LSANY(A6) ;Whether checking
- ;list ($ff) or not (0)
- BEQ.S L091B8
- MOVEA.L (A6),A1
- MOVE.L BV_BFP(A6),D2 ;buffer running pointer
- SUB.L A1,D2
- MOVEA.L BV_LNP(A6),A2 ;line # running ptr
- MOVE.W BV_LSBAS(A6),0(A6,A2.L) ;Bottom line in window
- SUBQ.W #2,D2
- DIVU BV_LENLN(A6),D2 ;Length of window line
- ADDQ.W #1,D2
- MOVE.W D2,2(A6,A2.L)
- ADD.W BV_TOTLN(A6),D2 ;Number of window line so far
- L09186 CMP.W BV_MAXLN(A6),D2 ;Max. number of window lines
- BLE.S L091AC
- MOVE.W BV_LSFIL(A6),D0
- BEQ.S L09198
- CMP.W BV_LSBAS(A6),D0 ;Bottom line in window
- BLT.S L091E4
- L09198 MOVEA.L BV_LNBAS(A6),A2 ;line # table
- SUB.W 2(A6,A2.L),D2
- MOVE.W 0(A6,A2.L),BV_LSBEF(A6) ;Invisible top line
- ADDQ.L #4,BV_LNBAS(A6) ;line # table
- BRA.S L09186
- L091AC MOVE.W D2,BV_TOTLN(A6) ;Number of window line so far
- ADDQ.L #4,BV_LNP(A6) ;line # running ptr
- JSR L04F9E(PC) ;*/undomodify BSR L04F9E
- L091B8:
- MOVEQ #IO.SSTRG,D0 ;send a string of bytes
- MOVEA.L (A6),A1 ;string to be send
- MOVE.L 4(A6),D2 ;number of bytes
- SUB.L A1,D2
- MOVEA.L A5,A0
- MOVEQ #-1,D3
- TRAP #4
- TRAP #3
- TST.L D0
- BNE.S L09204
- ; --------------------------------------------------------------
- */beginoverlay
- ifd NoTas
- ;*/remove MOVE.L D1,D2
- ;*/note could be dangerous?
- MOVEQ #$24,D0 ;SD.CLRRT clears right hand
- ;end of cursor line
- TRAP #3
- BSET #7,BV_BRK(A6) ;*/mend TAS BV_BRK(A6)
- ;There has been a
- ;break (0) or not ($80)
- endc
- ;
- ifnd NoTas
- ;
- MOVE.L D1,D2
- MOVEQ #$24,D0
- TRAP #3
- TAS BV_BRK(A6)
- ;
- endc
- */endoverlay
- ; --------------------------------------------------------------
- BNE L09112
- MOVE.W BV_LSBAS(A6),BV_LSAFT(A6) ;windows last line
- BRA.S L09202
- L091E4:
- MOVE.W BV_LSBAS(A6),BV_LSAFT(A6) ;windows last line
- MOVE.W -$04(A6,A2.L),BV_LSBAS(A6)
- BRA.S L09202
- L091F2 BSR.S L09216
- L091F4 JSR L09072(PC) ;*/undomodify BSR L09072
- MOVE.W D0,D4
- BRA L09116
- L091FE SUBQ.L #1,4(A6)
- L09202 MOVEQ #0,D0
- L09204 ADDQ.W #4,A7
- MOVEA.L A5,A0
- MOVEA.L (A7)+,A5
- RTS
- L0920C JSR L04E4C(PC) ;*/undomodify BSR L04E4C
- MOVEA.L $0058(A6),A1 ;arith stack
- RTS
- L09216 BSR.S L0920C
- MOVE.W 0(A6,A4.L),D2
- SUBI.W #$F000,D2
- SUBQ.W #6,A1
- MOVE.W D2,0(A6,A1.L)
- MOVE.L 2(A6,A4.L),2(A6,A1.L)
- MOVEA.L 4(A6),A0
- JSR CN_FTOD(PC) ;*/undomodify BSR CN_FTOD
- BRA L09364
- L09238:
- BSR.S L0920C
- MOVE.W $02(A6,A4.L),D1
- TST.B BV_PRINT(A6) ;Print from prtok ($ff)
- ;or leave in buffer
- BNE.S L0925C
- TST.B BV_AUTO(A6) ;Whether AUTO/EDIT
- ;is on ($FF) or off (0)
- BEQ.S L0925C
- CMP.W BV_EDLIN(A6),D1 ;line # to edit next
- BEQ.S L0925C
- L09250 BSR.S L0920C
- MOVE.W BV_EDLIN(A6),D1 ;line # to edit next
- BSR.S L09276
- L09258 ADDQ.W #4,A7
- BRA.S L09202
- L0925C TST.B BV_LSANY(A6) ;Whether checking
- ;list ($ff) or not (0)
- BEQ.S L09288
- CMP.W D6,D1
- BLE.S L09272
- TST.W BV_LSFIL(A6)
- BNE.S L09272
- MOVE.W D1,BV_LSAFT(A6) ;Invisible bottom line
- BRA.S L09258
- L09272 MOVE.W D1,BV_LSBAS(A6) ;Bottom line in window
- L09276 SUBQ.W #2,A1
- MOVE.W D1,0(A6,A1.L)
- MOVEA.L BV_BFP(A6),A0 ;buffer running pointer
- JSR CN_ITOD(PC) ;*/undomodify BSR CN_ITOD
- BRA L09316
- L09288 CMP.W D6,D1
- BGT.S L09258
- BRA.S L09276
- L0928E DC.W $3F3F,$3F3F
- L09292:
- MOVEQ #4,D1
- LEA L0928E(PC),A1
- BRA L0935A
- L0929C:
- MOVE.W 2(A6,A4.L),D2
- LSL.L #3,D2
- MOVEA.L BV_NTBAS(A6),A1 ;name table
- ADDA.W D2,A1
- MOVE.W 2(A6,A1.L),D2
- BLT.S L09292
- MOVEA.L BV_NLBAS(A6),A1 ;name list
- ADDA.W D2,A1
- MOVEQ #0,D1
- MOVE.B 0(A6,A1.L),D1
- ADDQ.W #1,A1
- BRA L09354
- L092C0 SUBA.L BV_PFBAS(A6),A4 ;program file
- SUBA.L BV_PFBAS(A6),A1 ;program file
- MOVEM.L D1/A1/A4,-(A7)
- JSR L04E6A(PC) ;*/undomodify BSR L04E6A
- MOVEA.L 4(A6),A0
- MOVEM.L (A7)+,D1/A1/A4
- ADDA.L BV_PFBAS(A6),A1 ;program file
- ADDA.L BV_PFBAS(A6),A4 ;program file
- RTS
- L092E2:
- BSR.S L092E6
- BSR.S L092EC
- L092E6 MOVE.B $01(A6,A4.L),D2
- BRA.S L0934C
- L092EC:
- MOVE.W $02(A6,A4.L),D1
- BEQ.S L09306
- LEA 4(A4),A1
- BRA.S L09354
- L092F8:
- MOVE.B $1(A6,A4.L),D1
- BSR.S L092C0
- L092FE MOVEQ #$20,D2
- BSR.S L0934C
- SUBQ.B #1,D1
- BGT.S L092FE
- L09306 RTS
- L09308:
- LEA L0936C(PC),A1
- BRA.S L0931E
- L0930E:
- LEA L0938E(PC),A1
- BRA.S L0931E
- L09314:
- BSR.S L0931E
- L09316 MOVEQ #$20,D2
- BRA.S L0934C
- L0931A:
- LEA L0937E(PC),A1
- L0931E MOVE.B 1(A6,A4.L),D1
- MOVE.B 0(A1,D1.W),D1
- ADDA.L D1,A1
- MOVE.B (A1)+,D1
- LSR.L #4,D1
- BRA.S L0935A
- L0932E ; separators =:#,(){} space CR
- DC.W $3D3A,$232C,$2829,$7B7D,$200A
- L09338:
- MOVE.B $1(A6,A4.L),D1
- MOVE.B L0932E-1(PC,D1.W),D2
- MOVEQ #0,D4
- SUB.B D2,D1
- BNE.S L0934C
- ADDQ.W #4,A4
- MOVE.B #$8D,D4
- L0934C MOVE.B D2,0(A6,A0.L)
- ADDQ.W #1,A0
- BRA.S L09364
- L09354 BSR L092C0
- ADDA.L A6,A1
- L0935A MOVE.B (A1)+,0(A6,A0.L)
- ADDQ.W #1,A0
- SUBQ.W #1,D1
- BGT.S L0935A
- L09364 MOVE.L A0,4(A6)
- MOVEQ #0,D0
- RTS
- ; ASCII-CODE FOR SEPARATORS
- ; THERE ARE 5 -EACH BYTE SHOWS DISPLACEMENT
- L0936C:
- DC.B $05,$06,$08,$0A,$0C,$0E
- ; HERE THEY ARE - 10 MEANS LENGTH 1
- DC.B $10,','
- DC.B $10,';',$10,'\'
- DC.B $10,'!',$20,'TO',$00
- ; NEXT LIST OF 4 OPERATORS
- L0937E:
- DC.B $04,$05,$07,$09,$0C
- DC.B $10,'-',$10,'+'
- DC.B $20,'~~',$30,'NOT'
- * NEXT LIST OF $16 OPERATORS
- L0938E:
- DC.W $1617,$191B,$1D1F,$2224,$2729,$2C2F,$3134,$373A
- DC.W $3C3E,$4145,$494D
- DC.B $51
- DC.B $10,'+'
- DC.B $10,'-'
- DC.B $10,'*'
- DC.B $10,'/'
- DC.B $20,'>='
- DC.B $10,'>'
- DC.B $20,'=='
- DC.B $10,'='
- DC.B $20,'<>'
- DC.B $20,'<='
- DC.B $10,'<'
- DC.B $20,'||'
- DC.B $20,'&&'
- DC.B $20,'^^'
- DC.B $10,'^'
- DC.B $10,'&'
- DC.B $20,'OR'
- DC.B $30,'AND'
- DC.B $30,'XOR'
- DC.B $30,'MOD'
- DC.B $30,'DIV'
- DC.B $50,'INSTR'
- DC.B 0
- L093E6 ; create entry in name-table and store value
- ANDI.B #$F,1(A6,A2.L)
- TST.L 4(A6,A2.L)
- BGE.S L093F6
- MOVEQ #-12,D0 ;Bad Name error
- RTS
- L093F6 JSR L04E5E(PC) ;*/undomodify BSR L04E5E
- MOVEA.L BV_NTP(A6),A3 ;name table running pointer
- ADDQ.L #8,BV_NTP(A6) ;name table
- ;running pointer
- MOVE.W 0(A6,A2.L),0(A6,A3.L)
- MOVE.W D4,2(A6,A3.L)
- MOVEA.L 4(A6,A2.L),A2
- ADDA.L BV_VVBAS(A6),A2 ;variable values
- MOVE.W 4(A6,A2.L),D1
- LSL.L #2,D1
- ADDQ.W #6,D1
- JSR L07338(PC) ;*/undomodify BSR L07338
- L09420 MOVE.W 0(A6,A2.L),0(A6,A0.L)
- ADDQ.W #2,A2
- ADDQ.W #2,A0
- SUBQ.W #2,D1
- BGT.S L09420
- L0942E JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8401,D1
- BEQ.S L09456
- CMPI.W #$8405,D1
- BNE L094C2
- ADDQ.W #2,A4
- MOVEA.L A4,A0
- LEA 8(A3),A5
- JSR L06272(PC) ;*/undomodify BSR L06272
- LEA -8(A5),A3
- MOVEA.L A0,A4
- BNE.S L0948E
- BRA.S L0942E
- L09456 ADDQ.W #2,A4
- CMPI.B #$02,0(A6,A3.L)
- BEQ.S L09478
- CMPI.B #$01,$01(A6,A3.L)
- BGT.S L094C6
- MOVEA.L $04(A6,A3.L),A2
- ADDA.L BV_VVBAS(A6),A2 ;variable values
- CMPI.W #$0001,$04(A6,A2.L)
- BGT.S L094C6
- L09478 MOVEA.L A4,A0
- MOVE.B $01(A6,A3.L),D0
- MOVE.L A3,-(A7)
- JSR L05A84(PC) ;*/undomodify BSR L05A84
- MOVEA.L (A7)+,A3
- MOVEA.L A0,A4
- BNE.S L0948E
- JSR BP_LET(PC) ;*/undomodify BSR BP_LET
- L0948E CMPI.B #$03,0(A6,A3.L)
- BNE.S L094AA
- MOVEA.L $04(A6,A3.L),A2
- ADDA.L BV_VVBAS(A6),A2 ;variable values
- MOVE.L D0,-(A7)
- MOVE.L A3,-(A7)
- JSR L09A3C(PC) ;*/undomodify BSR L09A3C
- MOVEA.L (A7)+,A3
- MOVE.L (A7)+,D0
- L094AA CLR.L 0(A6,A3.L)
- CLR.L $04(A6,A3.L)
- ADDQ.W #8,A3
- CMPA.L BV_NTP(A6),A3 ;name table running pointer
- BNE.S L094BE
- SUBQ.L #8,BV_NTP(A6) ;name table running pointer
- L094BE TST.L D0
- RTS
- L094C2 MOVEQ #-$11,D0
- BRA.S L0948E
- L094C6 MOVEQ #-$13,D0
- BRA.S L0948E
- L094CA:
- ;*/undoinsert MOVEQ #$16,D1
- ;*/undoinsert MOVEQ #$3C,D2
- ;*/undomodify BSR L04E84
- JSR L04E64(PC) ;*/undomodify BSR L04E64
- MOVEA.L BV_RTP(A6),A5 ;return table running ptr
- TST.B D5
- BEQ.S L09504
- MOVE.L D4,D3
- MOVEA.L BV_NTP(A6),A3 ;name table running pointer
- MOVE.L A3,0(A6,A5.L)
- MOVE.L A3,$04(A6,A5.L)
- MOVE.L A3,$08(A6,A5.L)
- MOVE.W $04(A6,A2.L),D4
- BNE.S L094F2
- MOVEQ #-$07,D0
- RTS
- L094F2 MOVE.W D4,$0C(A6,A5.L)
- MOVE.B $01(A6,A2.L),$0E(A6,A5.L)
- SF $0F(A6,A5.L)
- ADDA.W #$0010,A5
- L09504 MOVE.B D5,0(A6,A5.L)
- MOVE.B BV_STMNT(A6),$01(A6,A5.L) ;current stmnt on line
- MOVE.W BV_LINUM(A6),$02(A6,A5.L) ;current line #
- MOVE.L BV_INLIN(A6),$04(A6,A5.L) ;Processing inline clause
- ADDQ.W #8,A5
- MOVE.L A5,BV_RTP(A6) ;return table running ptr
- TST.B D5
- BEQ.S L09580
- CMPI.B #$03,D5
- BEQ.S L09578
- MOVEA.L A4,A0
- JSR L0614A(PC) ;*/undomodify BSR L0614A
- MOVEA.L BV_RTP(A6),A5 ;return table running ptr
- MOVE.L BV_NTP(A6),-$14(A6,A5.L) ;name table running ptr
- MOVE.L BV_NTP(A6),-$10(A6,A5.L) ;name table running ptr
- TST.L D0
- BNE.S L09552
- MOVE.W 0(A6,A0.L),D1
- CMPI.B #$02,D5
- BEQ.S L09562
- BSR.S L0959E
- BEQ.S L09576
- L09552 BSR L097C8
- SUBI.L #$00000018,BV_RTP(A6) ;return table running ptr
- MOVEQ #-$0F,D0
- RTS
- L09562 CMPI.W #$8406,D1
- BNE.S L09552
- ADDQ.W #2,A0
- SUBA.L BV_TKBAS(A6),A0 ;token list
- MOVE.L A0,$0008(A7)
- ADDA.L BV_TKBAS(A6),A0 ;token list
- L09576 MOVEA.L A0,A4
- L09578 ST -$09(A6,A5.L)
- MOVEA.L -$18(A6,A5.L),A3
- L09580 TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BEQ.S L095A2
- BSR.S L0958E
- BEQ.S L095A2
- MOVEQ #-$07,D0
- BRA.S L095B4
- L0958E MOVEA.L BV_PFBAS(A6),A4 ;program file
- SF BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- CLR.W BV_LENGTH(A6) ;current length
- JMP L0A966(PC) ;*/undomodify BRA L0A966
- L0959E BRA L09686
- L095A2 TST.B D5
- BEQ L0A078
- BSR L09760
- BSR L09692
- L095B0 BSR.S L0960C
- BEQ.S L095DC
- L095B4 MOVEA.L BV_RTP(A6),A5 ;return table running ptr
- MOVE.L BV_NTP(A6),-$10(A6,A5.L) ;name table
- ;running pointer
- MOVE.L BV_NTBAS(A6),D1 ;name table
- SUB.L D1,-$18(A6,A5.L)
- SUB.L D1,-$14(A6,A5.L)
- SUB.L D1,-$10(A6,A5.L)
- TST.L D0
- BNE.S L095DA
- ADDQ.W #4,A7
- JMP L0A8C0(PC) ;*/undomodify BRA L0A8C0
- MOVEQ #0,D0
- L095DA RTS
- L095DC ADDQ.W #2,A4
- BSR.S L0965C
- CMPI.B #$88,D0
- BNE.S L095FE
- BSR.S L09660
- BSR.S L0965C
- CMPI.W #$8405,D1
- BNE.S L095FE
- ADDQ.B #1,0(A6,A2.L)
- SUBQ.W #4,A4
- JSR L098E8(PC) ;*/undomodify BSR L098E8
- BNE.S L095B4
- BSR.S L0965C
- L095FE CMPI.W #$8404,D1
- BEQ.S L095DC
- BSR.S L0959E
- BEQ.S L095B0
- MOVEQ #-21,D0 ;Bad line error
- BRA.S L095B4
- L0960C JSR L0A60E(PC) ;*/undomodify BSR L0A60E
- BNE.S L09628
- BSR.S L0965C
- MOVEQ #0,D0
- CMPI.W #$811E,D1
- BEQ.S L0960C
- CMPI.W #$8118,D1
- BEQ.S L0960C
- CMPI.W #$811A,D1
- RTS
- L09628 MOVEQ #-10,D0 ;End of file error
- RTS
- ; <---------- ??????????
- L0962C MOVEQ #0,D0
- MOVE.W 2(A6,A4.L),D0
- LSL.L #3,D0
- MOVEA.L BV_NTBAS(A6),A2 ;name table
- ADDA.L D0,A2
- MOVE.W 0(A6,A2.L),D0
- MOVE.W 0(A6,A3.L),0(A6,A2.L)
- MOVE.W D0,0(A6,A3.L)
- MOVE.L 4(A6,A2.L),D0
- MOVE.L 4(A6,A3.L),4(A6,A2.L)
- MOVE.L D0,4(A6,A3.L)
- ADDQ.W #8,A3
- ADDQ.W #4,A4
- RTS
- L0965C JMP L0A56C(PC) ;*/undomodify BRA L0A56C
- L09660 MOVEA.L BV_NTP(A6),A3 ;name table running ptr
- MOVE.B #$02,0(A6,A3.L)
- MOVE.W #$FFFF,$02(A6,A3.L)
- MOVE.L #$FFFFFFFF,$04(A6,A3.L)
- BSR.S L0962C
- MOVE.B -$07(A6,A3.L),$01(A6,A2.L)
- MOVE.L A3,BV_NTP(A6) ;name table running pointer
- RTS
- L09686 CMPI.W #$840A,D1
- BEQ.S L09690
- CMPI.W #$8402,D1
- L09690 RTS
- L09692 BSR.S L0965C
- ADDQ.W #2,A4
- BSR.S L0965C
- ADDQ.W #2,A4
- BSR.S L0965C
- TST.W D3
- BLT.S L096A6
- CMP.W $02(A6,A4.L),D3
- BNE.S L096B4
- L096A6 ADDQ.W #4,A4
- BSR.S L0965C
- CMPI.W #$8405,D1
- BEQ.S L096C0
- BSR.S L09686
- BEQ.S L096BA
- L096B4 ADDQ.W #4,A7
- L096B6 MOVEQ #-7,D0 ;Not found error
- RTS
- L096BA MOVEA.L -$14(A6,A5.L),A3
- RTS
- L096C0 ADDQ.W #2,A4
- L096C2 BSR.S L0965C
- CMPI.B #$88,D0
- BNE.S L096DE
- CMPA.L -$14(A6,A5.L),A3
- BLT.S L096D8
- BSR.S L09660
- MOVE.L A3,-$14(A6,A5.L)
- BRA.S L096C2
- L096D8 BSR L0962C
- BRA.S L096C2
- L096DE CMPI.W #$8406,D1
- BNE.S L096C0
- L096E4 RTS
- DO_RETURn ; execute RETURN
- MOVEA.L BV_RTP(A6),A5 ;return table running ptr
- CMPA.L BV_RTBAS(A6),A5 ;return table
- BLE.S L096B6
- MOVE.B -$08(A6,A5.L),D5
- BEQ.S L09718
- MOVE.B D5,D0
- SUBQ.B #2,D0
- BLT.S L09714
- MOVE.B -$0A(A6,A5.L),D0
- MOVEA.L A4,A0
- JSR L05A84(PC) ;*/undomodify BSR L05A84
- MOVEA.L A0,A4
- BLT.S L096E4
- BEQ.S L09710
- MOVEQ #-$11,D0
- RTS
- L09710 MOVEA.L BV_RTP(A6),A5 ;return table running ptr
- L09714 BSR.S L09768
- BNE.S L096E4
- L09718 MOVE.L -$04(A6,A5.L),BV_INLIN(A6) ;Processing inline clause
- MOVE.W -$06(A6,A5.L),D4
- BSR.S L09760
- MOVE.L -$04(A6,A5.L),BV_INLIN(A6) ;Processing inline clause
- MOVE.B -$07(A6,A5.L),D4
- JSR L0A00A(PC) ;*/undomodify BSR L0A00A
- SUBQ.W #8,A5
- TST.B D5
- BEQ.S L0973C
- SUBA.W #$0010,A5
- L0973C SF $0090(A6) ;Need to unravel
- ;($ff) or not (0)
- MOVE.L A5,BV_RTP(A6) ;return table running ptr
- MOVEQ #0,D0
- SUBQ.B #2,D5
- BLT.S L0975C
- MOVEA.L BV_NTP(A6),A5 ;name table running pointer
- MOVE.B #$01,-$08(A6,A5.L)
- ADDQ.W #8,A7
- MOVEA.L (A7)+,A0
- ADDA.L BV_TKBAS(A6),A0 ;token list
- L0975C TST.L D0
- RTS
- L09760 JSR L09FA2(PC) ;*/undomodify BSR L09FA2
- JMP L0A966(PC) ;*/undomodify BRA L0A966
- L09768 MOVE.L BV_NTBAS(A6),D0 ;name table
- ADD.L D0,-$18(A6,A5.L)
- ADD.L D0,-$14(A6,A5.L)
- ADD.L D0,-$10(A6,A5.L)
- CMPA.L BV_PFBAS(A6),A4 ;program file
- BLE.S L09784
- CMPA.L BV_PFP(A6),A4 ;program running pointer
- BLT.S L09788
- L09784 BSR L0958E
- L09788 TST.B -9(A6,A5.L)
- BEQ.S L097C8
- MOVE.W -$0C(A6,A5.L),D4
- MOVEA.L -$14(A6,A5.L),A3
- BSR.S L09760
- L09798 BSR L0960C
- BNE.S L097B0
- L0979E MOVE.W #$8800,D4
- JSR L0A5E0(PC) ;*/undomodify BSR L0A5E0
- BNE.S L09798
- BSR L0962C
- SUBQ.W #4,A4
- BRA.S L0979E
- L097B0 MOVE.W -$0C(A6,A5.L),D4
- MOVEA.L -$18(A6,A5.L),A3
- TST.B D0
- BEQ.S L097C0
- BSR L0958E
- L097C0 BSR.S L09760
- MOVEQ #-$01,D3
- BSR L09692
- L097C8 MOVEA.L -$18(A6,A5.L),A3
- MOVEA.L -$10(A6,A5.L),A5
- JSR STO_VARValue(PC) ;*/undomodify BSR STO_VARValue
- BNE.S L0975C
- MOVEA.L BV_RTP(A6),A5 ;return table running ptr
- RTS
- L097DC BSR.S L097E0
- RTS
- L097E0 MOVEA.L BV_CHBAS(A6),A0 ;channel name
- MOVEA.L 0(A6,A0.L),A0
- MOVE.L D0,-(A7)
- MOVEQ #-$1B,D0
- JSR UT_ERR(PC) ;*/undomodify BSR UT_ERR
- MOVE.L (A7)+,D0
- L097F2 MOVEA.L BV_RTP(A6),A5 ;return table running ptr
- CMPA.L BV_RTBAS(A6),A5 ;return table
- BLE.S L09828
- MOVE.B -$08(A6,A5.L),D5
- BEQ.S L0980A
- BSR L09768
- SUBA.W #$0010,A5
- L0980A SUBQ.W #8,A5
- MOVE.L A5,BV_RTP(A6) ;return table running ptr
- SUBQ.B #2,D5
- BLT.S L097F2
- MOVEA.L BV_NTP(A6),A5 ;name table running pointer
- SUBQ.W #8,A5
- L0981A MOVEQ #0,D2
- JSR L05CBC(PC) ;*/undomodify BSR L05CBC
- BNE.S L0981A
- MOVE.L A5,BV_NTP(A6) ;name table running pointer
- BRA.S L097F2
- L09828 SF BV_UNRVL(A6) ;Need to unravel
- ;($ff) or not (0)
- MOVEA.L (A7)+,A3
- MOVEA.L (A7)+,A5
- TRAP #0
- MOVEA.L BV_SSBAS(A6),A1 ;system stack running ptr
- ADDA.L A6,A1
- SUBQ.W #4,A1
- MOVE.L A1,USP
- MOVE.W #0,SR
- MOVE.L A5,-(A7)
- MOVE.L A3,-(A7)
- ST BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- TST.B $00B8(A6) ;
- BNE L0A6EE
- RTS
- L09852 MOVE.L A4,-(A7)
- JSR L09B32(PC) ;*/undomodify BSR L09B32
- BLT.S L09872
- L0985A ADDQ.W #2,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- MOVE.L A4,-(A7)
- JSR L09B32(PC) ;*/undomodify BSR L09B32
- CMPA.L (A7)+,A4
- BNE.S L09870
- TST.B D0
- BGE.S L0985A
- BRA.S L09872
- L09870 MOVEQ #0,D0
- L09872 MOVEA.L (A7)+,A4
- RTS
- L09876 MOVEQ #0,D6
- MOVE.L A4,D3
- L0987A MOVE.W 0(A6,A4.L),D1
- CMPI.W #$810A,D1
- BEQ.S L098A0
- JSR L09686(PC) ;*/undomodify BSR L09686
- BEQ.S L098A2
- CMPI.W #$8401,D1
- BNE.S L0989A
- TST.B D6
- BNE.S L0989A
- ADDQ.W #2,A4
- MOVE.L A4,D3
- MOVEQ #$01,D6
- L0989A JSR L09072(PC) ;*/undomodify BSR L09072
- BRA.S L0987A
- L098A0 MOVEQ #-1,D0
- L098A2 MOVEA.L D3,A4
- RTS
- L098A6 ;execute DEFine
- MOVEQ #7,D2
- L098A8 JSR L0A60E(PC) ;*/undomodify BSR L0A60E
- BNE.S L098C2
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8101,D1
- BNE.S L098A8
- ADDQ.W #2,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMP.B D2,D1
- BNE.S L098A8
- L098C2 MOVEQ #0,D0
- RTS
- L098C6 ;execute DIM
- MOVEM.L D4-D6/A5,-(A7)
- SUBQ.W #2,A4
- L098CC ADDQ.W #2,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- BSR.S L098E8
- BNE.S L098E2
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8404,D1
- BEQ.S L098CC
- MOVEQ #0,D0
- L098E2 MOVEM.L (A7)+,D4-D6/A5
- RTS
- L098E8 MOVEQ #0,D4
- MOVE.W $02(A6,A4.L),D4
- ADDQ.W #4,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- ADDQ.W #2,A4
- MOVEQ #0,D5
- MOVEA.L (A6),A5
- MOVEA.L A4,A0
- L098FC MOVE.L A5,-(A7)
- JSR L05A82(PC) ;*/undomodify BSR L05A82
- MOVEA.L (A7)+,A5
- MOVEA.L A0,A4
- BNE.S L09980
- ADDQ.L #1,D5
- MOVE.W 0(A6,A1.L),0(A6,A5.L)
- BLT.S L0997A
- ADDQ.W #4,A5
- ADDQ.L #2,BV_RIP(A6) ;arith stack
- ADDQ.W #2,A0
- CMPI.W #$8404,-$02(A6,A0.L)
- BEQ.S L098FC
- CMPI.W #$8406,-$02(A6,A0.L)
- BNE.S L0997E
- LSL.L #3,D4
- MOVEA.L BV_NTBAS(A6),A3 ;name table
- ADDA.L D4,A3
- CMPI.B #3,0(A6,A3.L) ;array ?
- BNE.S L09982
- MOVE.B 1(A6,A3.L),D6 ;get variablle type
- CMPI.B #1,D6 ;string ?
- BNE.S L09958
- MOVE.W -4(A6,A5.L),D1
- ADDQ.W #1,D1
- BCLR #0,D1
- MOVE.W D1,-4(A6,A5.L)
- BLE.S L0997A
- MOVEQ #2,D1
- BRA.S L0995A
- L09958 MOVEQ #1,D1
- L0995A MOVE.L D5,D0
- MOVEQ #1,D2
- L0995E SUBQ.W #4,A5
- MOVE.W D2,2(A6,A5.L)
- SUBQ.L #1,D0
- BEQ.S L09986
- MOVE.L D1,D3
- MOVEQ #1,D1
- ADD.W 0(A6,A5.L),D3
- MULU D3,D2
- MOVE.L D2,D3
- SWAP D3
- TST.W D3
- BEQ.S L0995E
- L0997A MOVEQ #-4,D0 ;out of range
- RTS
- L0997E MOVEQ #-17,D0 ;error in expression
- L09980 RTS
- L09982 MOVEQ #-12,D0 ;Bad name
- RTS
- L09986 MOVEA.L A0,A4
- MOVE.L 4(A6,A3.L),D4
- BLT.S L09990
- BSR.S L099FE
- L09990 MOVE.L D5,D1
- LSL.L #2,D1
- ADDQ.L #6,D1
- MOVE.L A3,-(A7)
- JSR L04DF6(PC) ;*/undomodify BSR L04DF6
- MOVEA.L (A7)+,A3
- MOVE.L A0,D1
- SUB.L BV_VVBAS(A6),D1 ;variable values
- MOVE.L D1,$04(A6,A3.L)
- MOVE.L A0,-(A7)
- MOVE.W D5,$04(A6,A0.L)
- ADDQ.W #6,A0
- L099B0 MOVE.L 0(A6,A5.L),0(A6,A0.L)
- ADDQ.W #4,A5
- ADDQ.W #4,A0
- SUBQ.L #1,D5
- BGT.S L099B0
- MOVEA.L (A6),A5
- MOVEQ #$01,D1
- ADD.W 0(A6,A5.L),D1
- MULU $02(A6,A5.L),D1
- SUBQ.B #2,D6
- BLT.S L099DC
- BEQ.S L099D4
- ADD.L D1,D1
- BRA.S L099DC
- L099D4 ADD.L D1,D1
- MOVE.L D1,D0
- ADD.L D1,D1
- ADD.L D0,D1
- L099DC MOVE.L A3,-(A7)
- JSR L04DF6(PC) ;*/undomodify BSR L04DF6
- MOVEA.L (A7)+,A3
- MOVE.L A0,D2
- SUB.L BV_VVBAS(A6),D2 ;variable values
- MOVEA.L (A7)+,A2
- MOVE.L D2,0(A6,A2.L)
- L099F0 CLR.W 0(A6,A0.L)
- ADDQ.W #2,A0
- SUBQ.L #2,D1
- BGT.S L099F0
- MOVEQ #0,D0
- RTS
- L099FE MOVEA.L BV_VVBAS(A6),A2 ;variable values
- ADDA.L D4,A2
- MOVEQ #$01,D2
- ADD.W $06(A6,A2.L),D2
- MULU $08(A6,A2.L),D2
- MOVE.B D6,D1
- SUBQ.B #2,D1
- BLT.S L09A22
- BEQ.S L09A1A
- ADD.L D2,D2
- BRA.S L09A22
- L09A1A ADD.L D2,D2
- MOVE.L D2,D1
- ADD.L D2,D2
- ADD.L D1,D2
- L09A22 MOVE.L D2,D1
- MOVEA.L BV_VVBAS(A6),A0 ;variable values
- ADDA.L 0(A6,A2.L),A0
- MOVE.L A3,-(A7)
- MOVE.L A2,-(A7)
- JSR L04FE8(PC) ;*/undomodify BSR L04FE8
- MOVEA.L (A7)+,A2
- BSR.S L09A3C
- MOVEA.L (A7)+,A3
- RTS
- L09A3C MOVEQ #0,D1
- MOVE.W $04(A6,A2.L),D1
- LSL.L #2,D1
- ADDQ.L #6,D1
- MOVEA.L A2,A0
- JMP L04FE8(PC) ;*/undomodify BRA L04FE8
- L09A4C ; execute ELSE
- MOVEQ #0,D4
- L09A4E JSR L09B32(PC) ;*/undomodify BSR L09B32
- BGE.S L09A5A
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BNE.S L09AA4
- L09A5A JSR L0A60E(PC) ;*/undomodify BSR L0A60E
- BNE.S L09AA4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.B #$81,D0
- BNE.S L09A4E
- ADDQ.W #2,A4
- CMPI.B #$03,D1
- BNE.S L09A8C
- JSR L09852(PC) ;*/undomodify BSR L09852
- BLT.S L09A88
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BNE.S L09A88
- L09A7E JSR L09B32(PC) ;*/undomodify BSR L09B32
- BLT.S L09A5A
- ADDQ.W #2,A4
- BRA.S L09A7E
- L09A88 ADDQ.W #1,D4
- BRA.S L09A4E
- L09A8C CMPI.B #$01,D1
- BNE.S L09A4E
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8103,D1
- BNE.S L09A4E
- TST.B D4
- BEQ.S L09AA4
- SUBQ.W #1,D4
- BRA.S L09A4E
- L09AA4 MOVEQ #0,D0
- RTS
- L09AA8 ; execute END
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8107,D1
- BEQ DO_RETURn
- CMPI.W #$8106,D1
- BEQ.S L09AE6
- MOVEQ #6,D5
- CMPI.W #$8104,D1
- BEQ.S L09ACA
- MOVEQ #7,D5
- CMPI.W #$8102,D1
- BNE.S L09B28
- L09ACA ADDQ.W #2,A4
- JSR L0A09E(PC) ;*/undomodify BSR L0A09E
- BNE.S L09B2A
- CMP.B D5,D1
- BNE.S L09B2E
- MOVE.W BV_LINUM(A6),$08(A6,A2.L) ;current line #
- MOVE.B BV_STMNT(A6),$0B(A6,A2.L) ;current stmnt on line
- JMP L0A37A(PC) ;*/undomodify BRA L0A37A
- L09AE6 TST.B $00C0(A6) ;
- BNE BAS_CONTinue
- L09AEE MOVE.W BV_LINUM(A6),D4 ;current line #
- MOVEQ #-1,D3
- JSR L0ACC2(PC) ;*/undomodify BSR L0ACC2
- BNE.S L09B28
- L09AFA MOVE.W $08(A6,A2.L),D4
- SEQ BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- MOVE.B $0A(A6,A2.L),-(A7)
- MOVE.B $0B(A6,A2.L),BV_INLIN(A6) ;Processing inline clause
- MOVE.W $0C(A6,A2.L),BV_INDEX(A6) ;Name tab row of last lp
- ST $08(A6,A2.L)
- JSR L09FA2(PC) ;*/undomodify BSR L09FA2
- BNE.S L09B2C
- JSR L0A96A(PC) ;*/undomodify BSR L0A96A
- BNE.S L09B2C
- MOVE.B (A7)+,D4
- JSR L0A00A(PC) ;*/undomodify BSR L0A00A
- L09B28 MOVEQ #0,D0
- L09B2A RTS
- L09B2C ADDQ.W #2,A7
- L09B2E MOVEQ #-$07,D0
- RTS
- L09B32 MOVEQ #0,D0
- MOVE.W 0(A6,A4.L),D1
- CMPI.W #$8402,D1
- BEQ.S L09B5C
- CMPI.W #$840A,D1
- BEQ.S L09B5A
- MOVEQ #$01,D0
- CMPI.W #$811C,D1
- BEQ.S L09B5C
- MOVEQ #$02,D0
- CMPI.W #$8114,D1
- BEQ.S L09B5C
- JSR L09072(PC) ;*/undomodify BSR L09072
- BRA.S L09B32
- L09B5A MOVEQ #-$01,D0
- L09B5C RTS
- L09B5E MOVE.W BV_LINUM(A6),BV_CNLNO(A6) ;current line #
- TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BEQ.S L09B70
- MOVE.W #$FFFF,BV_CNLNO(A6) ;Line to CONTINUE from
- L09B70 MOVE.B BV_STMNT(A6),BV_CNSTM(A6) ;current stmnt on line
- MOVE.B BV_INLIN(A6),BV_CNINL(A6) ;Processing inline clause
- MOVE.W BV_INDEX(A6),BV_CNIND(A6) ;Name tab row of last lp
- MOVE.L BV_RTP(A6),D1 ;return table running ptr
- SUB.L BV_RTBAS(A6),D1 ;return table
- SNE $0090(A6) ;Need to unravel
- ;($ff) or not (0)
- RTS
- L09B90 MOVEQ #-$01,D0
- L09B92 TST.B $00C0(A6)
- BNE.S L09BB6
- BSR.S L09B5E
- BRA.S L09BD4
- L09B9C ; error handling
- ST BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- CMPI.L #-21,D0 ;bad line
- BEQ.S L09B92
- L09BA8 CMPI.L #-1,D0 ;not complete
- BEQ.S L09B92
- TST.B $C0(A6)
- BEQ.S L09BC0
- L09BB6 BSR.S L09BD4
- MOVEQ #-26,D0
- JSR UT_ERR(PC) ;*/undomodify BSR UT_ERR
- BRA.S L09C18
- L09BC0 BSR.S L09B5E
- MOVE.W BV_LINUM(A6),$00C6(A6) ;current line #
- MOVE.L D0,$00C2(A6) ;
- BGE.S L09C18
- MOVE.W $00BC(A6),D4 ;
- BNE.S L09C1C
- L09BD4 MOVEA.L BV_CHBAS(A6),A0 ;channel name
- MOVEA.L 0(A6,A0.L),A0
- L09BDC MOVE.W #$FFFF,BV_NXLIN(A6) ;line # to start after
- TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BNE.S L09C14
- MOVE.L D0,-(A7)
- MOVEQ #-$16,D0
- JSR UT_ERR(PC) ;*/undomodify BSR UT_ERR
- MOVEA.L A0,A5
- MOVEA.W #$0068,A1
- MOVEA.L (A6),A0
- JSR CN_ITOD(PC) ;*/undomodify BSR CN_ITOD
- MOVE.B #$20,0(A6,A0.L)
- ADDQ.W #1,D1
- MOVEA.L (A6),A1 ;string to be send
- MOVE.W D1,D2 ;number of bytes to be send
- MOVEA.L A5,A0 ;channel ID
- MOVEQ #7,D0 ;IO.SSTRG send a string of
- ;bytes
- MOVEQ #-1,D3
- TRAP #4
- TRAP #3
- MOVE.L (A7)+,D0
- L09C14 JSR UT_ERR(PC) ;*/undomodify BSR UT_ERR
- L09C18 MOVEQ #-1,D0 ;not complete
- RTS
- L09C1C ST $C0(A6) ;not defined in advanced
- ;user guide !!!!!
- MOVE.L D0,-(A7)
- TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BEQ.S L09C2E
- JSR L0958E(PC) ;*/undomodify BSR L0958E
- BNE.S L09C56
- L09C2E JSR L09FA2(PC) ;*/undomodify BSR L09FA2
- JSR L0A966(PC) ;*/undomodify BSR L0A966
- BNE.S L09C56
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8106,D1
- BNE.S L09C56
- ADDQ.W #4,A7
- MOVE.B $00BF(A6),BV_INLIN(A6)
- MOVE.B $00BE(A6),D4
- JSR L0A00A(PC) ;*/undomodify BSR L0A00A
- JMP L0A90C(PC) ;*/undomodify BRA L0A90C
- L09C56 CLR.W $BC(A6)
- SF $C0(A6)
- MOVE.L (A7)+,D0
- BRA L09BD4
- L09C64 ; execute EXIT
- JSR L0A09E(PC) ;*/undomodify BSR L0A09E
- BNE L09CFC
- MOVE.W 8(A6,A2.L),D4
- BEQ.S L09C88
- JSR L09FA2(PC) ;*/undomodify BSR L09FA2
- BNE.S L09C86
- JSR L0A966(PC) ;*/undomodify BSR L0A966
- BNE.S L09C86
- MOVE.B $0B(A6,A2.L),D4
- JSR L0A00A(PC) ;*/undomodify BSR L0A00A
- L09C86 BRA.S L09CFA
- L09C88 MOVE.W -$02(A6,A4.L),D4
- MOVEQ #$07,D5
- SUB.B D1,D5
- L09C90 JSR L09B32(PC) ;*/undomodify BSR L09B32
- BLT.S L09C9E
- ADDQ.W #2,A4
- ADDQ.B #1,BV_STMNT(A6) ;current stmnt on line
- BRA.S L09CC0
- L09C9E TST.B BV_INLIN(A6) ;Processing inline clause?
- BEQ.S L09CB2
- SF BV_INLIN(A6) ;Processing inline clause
- MOVE.W BV_LINUM(A6),D0 ;current line #
- CMP.W $06(A6,A2.L),D0
- BEQ.S L09CFA
- L09CB2 TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BNE.S L09CFA
- ADDQ.W #2,A4
- JSR L0A966(PC) ;*/undomodify BSR L0A966
- BNE.S L09CFA
- L09CC0 JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8101,D1
- BNE.S L09C90
- ADDQ.W #2,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- TST.B D5
- BEQ.S L09CDC
- CMPI.W #$8104,D1
- BNE.S L09C90
- BRA.S L09CE2
- L09CDC CMPI.W #$8102,D1
- BNE.S L09C90
- L09CE2 ADDQ.W #2,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMP.W $02(A6,A4.L),D4
- BNE.S L09C90
- MOVE.W BV_LINUM(A6),$08(A6,A2.L) ;current line #
- MOVE.B BV_STMNT(A6),$0B(A6,A2.L) ;current stmnt on line
- L09CFA MOVEQ #0,D0
- L09CFC RTS
- L09CFE MOVEQ #0,D5
- L09D00 BSR.S L09D46
- BNE.S L09D56
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.B #$81,D0
- BNE.S L09D00
- ADDQ.W #2,A4
- CMPI.B #$01,D1
- BNE.S L09D26
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8105,D1
- BNE.S L09D00
- SUBQ.W #1,D5
- BLT.S L09D56
- BRA.S L09D00
- L09D26 CMPI.B #$05,D1
- BNE.S L09D00
- JSR L09852(PC) ;*/undomodify BSR L09852
- BLT.S L09D38
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BEQ.S L09D3C
- L09D38 ADDQ.W #1,D5
- BRA.S L09D00
- L09D3C JSR L09B32(PC) ;*/undomodify BSR L09B32
- BLT.S L09D00
- ADDQ.W #2,A4
- BRA.S L09D3C
- L09D46 JSR L0A60E(PC) ;*/undomodify BSR L0A60E
- BNE.S L09D64
- TST.B D0
- BEQ.S L09D56
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BNE.S L09D5A
- L09D56 MOVEQ #0,D0
- RTS
- L09D5A SUBQ.W #8,A4
- MOVE.W $02(A6,A4.L),D0
- SUB.W D0,BV_LENGTH(A6) ;current length
- L09D64 TST.B BV_INLIN(A6) ;Processing inline clause?
- BGT.S L09D6E
- SF BV_INLIN(A6) ;Processing inline clause
- L09D6E MOVEQ #$01,D0
- RTS
- L09D72 MOVEQ #0,D5
- L09D74:
- JSR L09D46(PC) ;*/undomodify BSR.S L09D46
- ;*/undomodify nop
- BNE.S L09DEC
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8401,D1
- BNE.S L09D8C
- ADDQ.W #2,A4
- TST.B D5
- BEQ.S L09DEE
- BRA.S L09D74
- L09D8C:
- CMPI.B #$81,D0
- BNE.S L09D74
- CMPI.B #$15,D1
- BNE.S L09DB6
- TST.B D5
- BNE.S L09D74
- JSR L09876(PC) ;*/undomodify BSR L09876
- BLT.S L09D74
- MOVEA.L A4,A3
- L09DA4 SUBQ.W #2,A3
- CMPI.W #$8800,0(A6,A3.L)
- BNE.S L09DA4
- CMP.W $02(A6,A3.L),D4
- BNE.S L09D74
- BRA.S L09DEE
- L09DB6 CMPI.B #$05,D1
- BNE.S L09DD6
- JSR L09852(PC) ;*/undomodify BSR L09852
- BLT.S L09DC8
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BEQ.S L09DCC
- L09DC8 ADDQ.W #1,D5
- BRA.S L09D74
- L09DCC JSR L09B32(PC) ;*/undomodify BSR L09B32
- BLT.S L09D74
- ADDQ.W #2,A4
- BRA.S L09DCC
- L09DD6 CMPI.B #$01,D1
- BNE.S L09D74
- ADDQ.W #2,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8105,D1
- BNE.S L09D74
- SUBQ.W #1,D5
- BGE.S L09D74
- L09DEC RTS
- L09DEE MOVEQ #0,D0
- RTS
- L09DF2 ; execute FOR
- MOVEA.L A4,A5
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- MOVEQ #0,D4
- MOVE.W 2(A6,A4.L),D4
- ADDQ.W #4,A4
- JSR L09852(PC) ;*/undomodify BSR L09852
- BLT.S L09E10
- MOVE.B #1,BV_INLIN(A6) ;Processing inline clause
- MOVE.W D4,BV_INDEX(A6) ;Name tab row of last lp
- L09E10 JSR L09F96(PC) ;*/undomodify BSR L09F96
- MOVE.B 1(A6,A2.L),D2
- SUBQ.B #2,D2
- BNE.S L09E30 ;bad name
- MOVE.B 0(A6,A2.L),D2
- MOVEQ #6,D1
- SUBQ.B #2,D2
- BEQ.S L09E34
- MOVEQ #$0C,D1
- SUBQ.B #4,D2
- BEQ.S L09E34
- SUBQ.B #1,D2
- BEQ.S L09E5C
- L09E30 MOVEQ #-12,D0 ;Bad name error
- RTS
- L09E34 MOVE.L A2,-(A7)
- MOVE.L 4(A6,A2.L),D2
- BLT.S L09E46
- MOVEA.L BV_VVBAS(A6),A0 ;variable values
- ADDA.L D2,A0
- JSR L04FE8(PC) ;*/undomodify BSR L04FE8
- L09E46 MOVEQ #$1A,D1
- JSR L04DF6(PC) ;*/undomodify BSR L04DF6
- SUBA.L BV_VVBAS(A6),A0 ;variable values
- MOVEA.L (A7)+,A2
- MOVE.B #$07,0(A6,A2.L) ;set FOR LOOP index Flag
- MOVE.L A0,4(A6,A2.L)
- L09E5C:
- JSR L0A2FE(PC) ;*/undomodify BSR L0A2FE
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- MOVE.L A4,D0
- SUB.L A5,D0
- MOVE.L D7,$0C(A6,A2.L)
- MOVE.L D7,$10(A6,A2.L)
- MOVE.L D7,$14(A6,A2.L)
- MOVE.W D0,$18(A6,A2.L)
- JSR L09E88(PC) ;*/undomodify BSR.S L09E88
- ;*/undomodify nop
- BGT.S L09E80
- RTS
- L09E80:
- MOVEQ #0,D5
- JMP L09C90(PC) ;*/undomodify BRA L09C90
- L09E86 DC.B $01
- L09E87 DC.B $40
- L09E88 MOVE.L A4,-(A7)
- MOVE.W 0(A6,A4.L),D1
- JSR L09686(PC) ;*/undomodify BSR L09686
- BNE.S L09E98
- MOVEQ #$01,D0
- BRA.S L09EA6
- L09E98 CMPI.W #$8401,D1
- BEQ.S L09EAA
- CMPI.W #$8404,D1
- BEQ.S L09EAA
- MOVEQ #-4,D0 ;out of ange error
- L09EA6 ADDQ.W #4,A7
- RTS
- L09EAA ADDQ.W #2,A4
- MOVEA.L A4,A0
- MOVE.L D4,D6
- JSR L05A7E(PC) ;*/undomodify BSR L05A7E
- MOVEA.L A0,A4
- BNE.S L09EA6
- BSR L09F7E
- MOVE.W 0(A6,A1.L),0(A6,A2.L)
- MOVE.L 2(A6,A1.L),2(A6,A2.L)
- ADDQ.L #6,BV_RIP(A6) ;arith stack
- CMPI.W #$810B,0(A6,A4.L)
- BEQ.S L09EF4
- MOVE.W 0(A6,A2.L),$0C(A6,A2.L)
- MOVE.L 2(A6,A2.L),$0E(A6,A2.L)
- MOVE.W D7,$12(A6,A2.L)
- MOVE.L D7,$14(A6,A2.L)
- MOVE.L A4,D0
- SUB.L (A7)+,D0
- ADD.W D0,$18(A6,A2.L)
- BRA L09F76
- L09EF4 ADDQ.W #2,A4
- MOVEA.L A4,A0
- JSR L05A7E(PC) ;*/undomodify BSR L05A7E
- MOVEA.L A0,A4
- L09EFE BNE.S L09EA6
- bsr.s L09F7E
- MOVE.W 0(A6,A1.L),$0C(A6,A2.L)
- MOVE.L $02(A6,A1.L),$0E(A6,A2.L)
- ADDQ.L #6,BV_RIP(A6) ;arith stack
- CMPI.W #$811D,0(A6,A4.L)
- BEQ.S L09F32
- MOVE.B #8,$12(A6,A2.L)
- MOVE.B L09E86(PC),$13(A6,A2.L) ;must have to do with
- ;STEP
- MOVE.L D7,$14(A6,A2.L)
- MOVE.B L09E87(PC),$14(A6,A2.L) ;must have to do with
- ;step
- BRA.S L09F50
- L09F32 ADDQ.W #2,A4
- MOVEA.L A4,A0
- JSR L05A7E(PC) ;*/undomodify BSR L05A7E
- MOVEA.L A0,A4
- BNE.S L09EFE
- BSR.S L09F7E
- MOVE.W 0(A6,A1.L),$12(A6,A2.L)
- MOVE.L $02(A6,A1.L),$14(A6,A2.L)
- ADDQ.L #6,BV_RIP(A6) ;arith stack
- L09F50 MOVE.L A4,D0
- SUB.L (A7)+,D0
- ADD.W D0,$18(A6,A2.L)
- JSR L04E4C(PC) ;*/undomodify BSR L04E4C
- MOVEA.L $0058(A6),A1 ;arith stack
- SUBQ.W #6,A1
- MOVE.L $02(A6,A2.L),$02(A6,A1.L)
- MOVE.W 0(A6,A2.L),0(A6,A1.L)
- JSR L0A404(PC) ;*/undomodify BSR L0A404
- BRA.S L09F78
- BRA.S L09F7A
- L09F76 MOVEQ #0,D0
- L09F78 RTS
- L09F7A BRA L09E88
- L09F7E MOVE.L D6,D4
- L09F80 BSR.S L09F96
- MOVE.B 0(A6,A2.L),D1
- MOVE.B 1(A6,A2.L),D2
- MOVE.L 4(A6,A2.L),D0
- MOVEA.L BV_VVBAS(A6),A2 ;variable values
- ADDA.L D0,A2
- RTS
- L09F96 MOVE.L D4,D0
- MOVEA.L BV_NTBAS(A6),A2 ;name table
- LSL.L #3,D0
- ADDA.W D0,A2
- RTS
- L09FA2 TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BEQ.S L09FAE
- MOVEA.L BV_TKBAS(A6),A4 ;token list
- BRA.S L0A006
- L09FAE CMPI.W #$840A,0(A6,A4.L)
- BEQ.S L09FBC
- JSR L09072(PC) ;*/undomodify BSR L09072
- BRA.S L09FAE
- L09FBC ADDQ.W #2,A4
- L09FBE MOVEQ #0,D1
- MOVEQ #0,D2
- CMP.W BV_LINUM(A6),D4 ;current line #
- BLE.S L09FEC
- L09FC8 CMPA.L BV_PFP(A6),A4 ;program running pointer
- BLT.S L09FD2
- JMP L0A994(PC) ;*/undomodify BRA L0A994
- L09FD2 CMP.W 4(A6,A4.L),D4
- BLE.S L0A006
- L09FD8 MOVE.W 4(A6,A4.L),D2
- MOVE.W 0(A6,A4.L),D1
- ADDQ.W #2,A4
- ADD.W D1,BV_LENGTH(A6) ;current length
- ADDA.W BV_LENGTH(A6),A4 ;current length
- BRA.S L09FC8
- L09FEC SUBA.W BV_LENGTH(A6),A4 ;current length
- SUBQ.W #2,A4
- MOVE.W 0(A6,A4.L),D1
- SUB.W D1,BV_LENGTH(A6) ;current length
- CMP.W $04(A6,A4.L),D4
- BGT.S L09FD8
- CMPA.L BV_PFBAS(A6),A4 ;program file
- BGT.S L09FEC
- L0A006 MOVEQ #0,D0
- RTS
- L0A00A CMP.B BV_STMNT(A6),D4 ;current stmnt on line
- BLE.S L0A01E
- JSR L09B32(PC) ;*/undomodify BSR L09B32
- BLT.S L0A01E
- ADDQ.W #2,A4
- ADDQ.B #1,BV_STMNT(A6) ;current stmnt on line
- BRA.S L0A00A
- L0A01E MOVEQ #0,D0
- RTS
- L0A022 ; execute GO
- MOVEQ #$01,D4
- BRA.S L0A038
- L0A026 ; execute ON ...
- JSR L09876(PC) ;*/undomodify BSR L09876
- BGE L09CFE
- BSR.S L0A086
- MOVE.W 0(A6,A1.L),D4
- BLE.S L0A082
- ADDQ.W #2,A4
- L0A038 JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.B #$0B,D1
- SEQ D5
- L0A042 MOVE.W 0(A6,A4.L),D1
- JSR L09686(PC) ;*/undomodify BSR L09686
- BEQ.S L0A082
- ADDQ.W #2,A4
- BSR.S L0A086
- BGT.S L0A042
- SUBQ.W #1,D4
- BNE.S L0A042
- MOVE.W 0(A6,A1.L),D4
- TST.B D5
- BEQ L094CA
- SF BV_INLIN(A6) ;Processing inline clause
- TST.B BV_SING(A6) ;Single line exection
- ;ON ($FF) or OFF (0)
- BEQ.S L0A078
- SF BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- MOVEA.L BV_PFBAS(A6),A4 ;program file
- JSR L0A966(PC) ;*/undomodify BSR L0A966
- BNE.S L0A07E
- L0A078 JSR L09FA2(PC) ;*/undomodify BSR L09FA2
- SUBQ.W #2,A4
- L0A07E MOVEQ #0,D0
- RTS
- L0A082 MOVEQ #-$04,D0
- RTS
- L0A086 MOVEA.L A4,A0
- JSR L05A82(PC) ;*/undomodify BSR L05A82
- MOVEA.L A0,A4
- BLT.S L0A09A
- BGT.S L0A098
- ADDQ.L #2,BV_RIP(A6) ;arith stack
- MOVEQ #0,D0
- L0A098 RTS
- L0A09A ADDQ.W #4,A7
- RTS
- L0A09E JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- MOVEQ #0,D4
- MOVE.W $02(A6,A4.L),D4
- ADDQ.W #4,A4
- L0A0AA JSR L09F80(PC) ;*/undomodify BSR L09F80
- MOVEQ #0,D0
- MOVE.B D1,D0
- SUBQ.B #6,D0
- BEQ.S L0A0BC
- SUBQ.B #1,D0
- BEQ.S L0A0BC
- MOVEQ #-$07,D0
- L0A0BC RTS
- L0A0BE ; execute IF
- MOVEA.L A4,A0
- JSR L05A7E(PC) ;*/undomodify BSR L05A7E
- MOVEA.L A0,A4
- BNE L0A150
- JSR L09852(PC) ;*/undomodify BSR L09852
- BLT.S L0A0DA
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BNE.S L0A0DA
- ST BV_INLIN(A6) ;Processing inline clause
- L0A0DA ADDQ.L #6,BV_RIP(A6) ;arith stack
- TST.W 0(A6,A1.L)
- BNE.S L0A14E
- MOVEQ #0,D4
- L0A0E6 JSR L09B32(PC) ;*/undomodify BSR L09B32
- BGE.S L0A0F2
- TST.B BV_INLIN(A6) ;Processing inline clause
- BNE.S L0A14E
- L0A0F2 JSR L0A60E(PC) ;*/undomodify BSR L0A60E
- BNE.S L0A14E
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.B #$81,D0
- BNE.S L0A0E6
- ADDQ.W #2,A4
- CMPI.B #$03,D1
- BNE.S L0A124
- JSR L09852(PC) ;*/undomodify BSR L09852
- BLT.S L0A120
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BNE.S L0A120
- L0A116 JSR L09B32(PC) ;*/undomodify BSR L09B32
- BLT.S L0A0F2
- ADDQ.W #2,A4
- BRA.S L0A116
- L0A120 ADDQ.W #1,D4
- BRA.S L0A0E6
- L0A124 CMPI.B #$01,D1
- BNE.S L0A13C
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8103,D1
- BNE.S L0A0E6
- TST.B D4
- BEQ.S L0A14E
- SUBQ.W #1,D4
- BRA.S L0A0E6
- L0A13C CMPI.B #$14,D1
- BNE.S L0A0E6
- TST.B D4
- BEQ.S L0A14C
- ADDQ.B #1,BV_STMNT(A6) ;current stmnt on line
- BRA.S L0A0E6
- L0A14C SUBQ.W #2,A4
- L0A14E MOVEQ #0,D0
- L0A150 RTS
- L0A152 ; used to execute depending instructions
- DC.W L09AA8-L0A190 ;END
- DC.W L09DF2-L0A190 ;FOR
- DC.W L0A0BE-L0A190 ;IF
- DC.W L0A7B6-L0A190 ;REPEAT
- DC.W L0A84A-L0A190 ;SELECT
- DC.W L0AC00-L0A190 ;WHEN
- DC.W L098A6-L0A190 ;DEFINE
- DC.W $0 ;PROCEDURE:USELESS IF ALONE
- DC.W $0 ;FUNCTION: USELESS IF ALONE
- DC.W L0A022-L0A190 ;GO
- DC.W $0 ;TO:USELESS IF ALONE
- DC.W $0 ;SUB: USELESS F ALONE
- DC.W $0 ;WHEN: USELESS IF ALONE
- DC.W $0 ;ERROR: USELESS IF ALONE
- DC.W $0 ;EOF
- DC.W $0 ;INPUT
- DC.W L0A820-L0A190 ;RESTORE
- DC.W L0A372-L0A190 ;NEXT
- DC.W L09C64-L0A190 ;EXIT
- DC.W L09A4C-L0A190 ;ELSE
- DC.W L0A026-L0A190 ;ON
- DC.W DO_RETURn-L0A190 ;RETURN
- DC.W $0 ;REMAINDER
- DC.W L0A7B2-L0A190 ;DATA
- DC.W L098C6-L0A190 ;DIM
- DC.W L0A2FA-L0A190 ;LOCAL
- DC.W L0A332-L0A190 ;LET
- DC.W $0 ;THEN
- DC.W $0 ;STEP
- DC.W L0A7B2-L0A190 ;REMARK
- DC.W L0A2FA-L0A190 ;MISTAKE
- L0A190:
- MOVEQ #0,D0
- MOVE.B 1(A6,A4.L),D0
- ADDQ.W #2,A4
- ADD.B D0,D0
- MOVE.W L0A150(PC,D0.W),D0
- BEQ.S L0A1A4
- JMP L0A190(PC,D0.W)
- L0A1A4 MOVEQ #-7,D0 ;Not found
- RTS
- L0A1A8 MOVEA.L A2,A3
- ANDI.B #$0F,1(A6,A3.L)
- MOVE.L A3,-(A7)
- MOVE.B $01(A6,A3.L),-(A7)
- JSR L07A8E(PC) ;*/undomodify BSR L07A8E
- BNE.S L0A1E8
- CMPI.W #$8405,D1
- BNE.S L0A1F6
- CMPI.B #1,1(A6,A3.L)
- BNE.S L0A242
- MOVE.L 4(A6,A3.L),D0
- BLT.S L0A242
- MOVEA.L BV_VVBAS(A6),A2 ;variable values
- ADDA.L D0,A2
- MOVE.L D0,-(A7)
- LEA 2(A4),A0
- JSR L06446(PC) ;*/undomodify BSR L06446
- MOVEA.L A0,A4
- MOVEA.L BV_VVBAS(A6),A2 ;variable values
- ADDA.L (A7)+,A2
- L0A1E8 BNE.S L0A244
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8401,D1
- BNE.S L0A242
- SF (A7)
- L0A1F6 CMPI.W #$8401,D1
- BNE.S L0A242
- ADDQ.W #2,A4
- MOVE.B (A7),D0
- MOVEA.L A4,A0
- SUBA.L BV_VVBAS(A6),A2 ;variable values
- ; --------------------------------------------------------------
- ;*/beginoverlay
- ;*/note when error fix donated by Simon N Goodwin
- move.l a2,-(a7) ;*/note movem.l a2/a4,-(a7)
- JSR L05A84(PC) ;*/undomodify BSR L05A84
- movea.l $0028(a6),a2 ;*/note movem.l (a7)+,a2/a4
- adda.l (a7)+,a2 ;*/note adda.l $0028(a6),a2
- movea.l a0,a4 ;*/note bne.s L0A23C
- bne.s L0A23C ;*/note movea.l a0,a4
- ;*/endoverlay
- ; --------------------------------------------------------------
- MOVE.B (A7)+,D0
- MOVEA.L (A7)+,A3
- MOVE.B D0,$01(A6,A3.L)
- JSR BP_LET(PC) ;*/undomodify BSR BP_LET
- BNE.S L0A23A
- TST.W $C8(A6)
- BEQ.S L0A23A
- MOVE.B 0(A6,A3.L),D1
- SUBQ.B #2,D1
- BEQ.S L0A248
- SUBQ.B #4,D1
- BEQ.S L0A248
- SUBQ.B #1,D1
- BEQ.S L0A248
- L0A23A RTS
- L0A23C BLT.S L0A244
- MOVEQ #-$11,D0
- BRA.S L0A244
- L0A242 ; handling of MISTake and LOCal
- MOVEQ #-$0C,D0
- L0A244 ADDQ.W #6,A7
- RTS
- L0A248 ; initialize WHEN
- MOVE.L A3,D4
- SUB.L BV_NTBAS(A6),D4 ;name table
- LSR.L #3,D4
- MOVEQ #1,D3
- JSR L0ACC2(PC) ;*/undomodify BSR L0ACC2
- L0A256 BNE L0A2DA
- TST.W $08(A6,A2.L)
- BLT.S L0A268
- L0A260 MOVEQ #1,D3
- JSR L0ACDA(PC) ;*/undomodify BSR L0ACDA
- BRA.S L0A256
- L0A268 MOVE.W BV_LINUM(A6),$08(A6,A2.L) ;current line #
- MOVE.B BV_STMNT(A6),$0A(A6,A2.L) ;current stmnt on line
- MOVE.B BV_INLIN(A6),$0B(A6,A2.L) ;Processing inline clause
- MOVE.W BV_INDEX(A6),$0C(A6,A2.L) ;Name tab row of last lp
- MOVE.W D4,-(A7)
- MOVE.W D2,-(A7)
- MOVE.L D1,-(A7)
- MOVE.W $02(A6,A2.L),D4
- MOVE.B $04(A6,A2.L),D1
- SUBA.L BV_VVBAS(A6),A2 ;variable values
- MOVE.L A2,-(A7)
- MOVE.B D1,-(A7)
- TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BEQ.S L0A2A0
- JSR L0958E(PC) ;*/undomodify BSR L0958E
- L0A2A0 JSR L09FA2(PC) ;*/undomodify BSR L09FA2
- BNE.S L0A2F2
- JSR L0A96A(PC) ;*/undomodify BSR L0A96A
- BNE.S L0A2F2
- MOVE.B (A7)+,D4
- JSR L0A00A(PC) ;*/undomodify BSR L0A00A
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- LEA 2(A4),A0
- JSR L05A7E(PC) ;*/undomodify BSR L05A7E
- MOVEA.L A0,A4
- MOVEA.L (A7)+,A2
- BNE.S L0A2F6
- ADDA.L BV_VVBAS(A6),A2 ;variable values
- ADDQ.L #6,BV_RIP(A6) ;arith stack
- TST.W 0(A6,A1.L)
- BEQ.S L0A2DE
- ADDQ.W #8,A7
- MOVE.B $0E(A6,A2.L),BV_INLIN(A6) ;Processing inline clause
- L0A2DA MOVEQ #0,D0
- RTS
- L0A2DE MOVE.L A2,-(A7)
- JSR L09AFA(PC) ;*/undomodify BSR L09AFA
- MOVEA.L (A7)+,A2
- BNE.S L0A2F6
- MOVE.L (A7)+,D1
- MOVE.W (A7)+,D2
- MOVE.W (A7)+,D4
- BRA L0A260
- L0A2F2 MOVEQ #-7,D0 ;Not found error
- ADDQ.W #6,A7
- L0A2F6 ADDQ.W #8,A7
- RTS
- L0A2FA ; execute LOCal and MISTake
- MOVEQ #-21,D0 ;bad line error
- RTS
- L0A2FE MOVEA.L $04(A6,A2.L),A2
- ADDA.L BV_VVBAS(A6),A2 ;variable values
- MOVE.W D7,0(A6,A2.L)
- MOVE.L D7,$02(A6,A2.L)
- MOVE.W BV_LINUM(A6),D1 ;current line #
- MOVE.B BV_STMNT(A6),D0 ;current stmnt on line
- CMP.W $06(A6,A2.L),D1
- BNE.S L0A322
- CMP.B $0A(A6,A2.L),D0
- BEQ.S L0A32E
- L0A322 MOVE.W D1,$06(A6,A2.L)
- MOVE.L D7,$08(A6,A2.L)
- MOVE.B D0,$0A(A6,A2.L)
- L0A32E MOVEQ #0,D0
- RTS
- L0A332 ; handling of LET
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.B #$88,D0
- BNE.S L0A36E
- L0A33C MOVEQ #0,D4
- MOVE.W 2(A6,A4.L),D4
- ADDQ.W #4,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- JSR L09F96(PC) ;*/undomodify BSR L09F96
- MOVE.B 0(A6,A2.L),D0
- CMPI.B #$03,D0
- BEQ L093E6
- CMPI.B #$08,D0
- BEQ L0A6F6
- MOVEQ #$01,D5
- CMPI.B #$04,D0
- BEQ L094CA
- JMP L0A1A8(PC) ;*/undomodify BRA L0A1A8
- L0A36E MOVEQ #-19,D0 ;not implemented error
- RTS
- L0A372 ; Execute NEXT
- JSR L0A09E(PC) ;*/undomodify BSR L0A09E
- BLT L0A402
- L0A37A MOVE.L D4,D6
- CMPI.B #$06,D1
- BEQ.S L0A3D4
- MOVE.L A2,-(A7)
- JSR L04E4C(PC) ;*/undomodify BSR L04E4C
- MOVEA.L (A7),A2
- MOVEA.L $0058(A6),A1 ;arith stack
- SUBA.W #$000C,A1
- MOVE.L $14(A6,A2.L),$02(A6,A1.L)
- BEQ.S L0A3DE
- MOVE.W $12(A6,A2.L),0(A6,A1.L)
- MOVE.W 0(A6,A2.L),$06(A6,A1.L)
- MOVE.L $02(A6,A2.L),$08(A6,A1.L)
- JSR RI_ADD(PC) ;*/undomodify BSR RI_ADD
- BLT.S L0A3D6
- MOVE.L A1,BV_RIP(A6) ;arith stack
- JSR RI_DUP(PC) ;*/undomodify BSR RI_DUP
- MOVEA.L (A7),A2
- BSR.S L0A404 ;test for end of function
- BRA.S L0A3D6 ;error
- BRA.S L0A3DA ;end of loop
- ; back to start of loop
- MOVEA.L (A7)+,A2
- MOVE.W 0(A6,A0.L),0(A6,A2.L)
- MOVE.L $02(A6,A0.L),$02(A6,A2.L)
- ADDQ.L #6,BV_RIP(A6) ;arith stack
- L0A3D4 BRA.S L0A3E4
- L0A3D6 ADDQ.W #4,A7
- RTS
- ; end of loop
- L0A3DA ADDQ.L #6,BV_RIP(A6) ;arith stack
- L0A3DE MOVEA.L (A7)+,A2
- MOVEQ #$01,D3
- BRA.S L0A3E6
- L0A3E4 MOVEQ #0,D3
- L0A3E6 BSR.S L0A44C
- BNE.S L0A402
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BGT.S L0A3F4
- SF BV_INLIN(A6) ;Processing inline clause
- L0A3F4 CMPI.B #$7F,BV_STMNT(A6) ;current stmnt on line
- BNE.S L0A400
- SF BV_INLIN(A6) ;Processing in inline clause
- L0A400 MOVEQ #0,D0
- L0A402 RTS
- L0A404 ; test start and end of a loop
- MOVE.L A2,-(A7)
- SUBQ.W #6,A1
- MOVE.L $0E(A6,A2.L),$02(A6,A1.L)
- MOVE.W $0C(A6,A2.L),0(A6,A1.L)
- JSR RI_SUB(PC) ;*/undomodify BSR RI_SUB
- MOVEA.L (A7)+,A2
- BLT.S L0A44A
- MOVEQ #$0D,D1
- ADD.W 0(A6,A1.L),D1
- CMP.W $12(A6,A2.L),D1
- BGT.S L0A42E
- LEA $C(A2),A0
- BRA.S L0A446
- L0A42E MOVEA.L $0058(A6),A0 ;arith stack
- TST.B $02(A6,A1.L)
- BLT.S L0A440
- TST.B $14(A6,A2.L)
- BLT.S L0A446
- BRA.S L0A448
- L0A440 TST.B $14(A6,A2.L)
- BLT.S L0A448
- L0A446 ADDQ.L #2,(A7)
- L0A448 ADDQ.L #2,(A7)
- L0A44A RTS
- L0A44C ; position pointer to code after loop
- MOVE.B BV_STMNT(A6),-(A7) ;current stmnt on line
- MOVE.L BV_LINUM(A6),-(A7) ;current line #
- MOVE.L A4,-(A7)
- MOVE.W $06(A6,A2.L),D4
- JSR L09FA2(PC) ;*/undomodify BSR L09FA2
- BNE.S L0A4AA
- JSR L0A96A(PC) ;*/undomodify BSR L0A96A
- BNE.S L0A4AA
- MOVE.B $0A(A6,A2.L),D4
- JSR L0A00A(PC) ;*/undomodify BSR L0A00A
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8102,D1
- BEQ.S L0A47E
- CMPI.W #$8104,D1
- BNE.S L0A4AA
- L0A47E ADDQ.W #2,A4
- MOVEA.L A4,A5
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMP.W $02(A6,A4.L),D6
- BNE.S L0A4AA
- TST.B D3
- BEQ.S L0A4A4
- MOVEA.L A5,A4
- ADDA.W $18(A6,A2.L),A4
- MOVE.L D6,D4
- JSR L09E88(PC) ;*/undomodify BSR L09E88
- BLT.S L0A4AC
- BEQ.S L0A4A4
- MOVEQ #0,D0
- BRA.S L0A4AC
- L0A4A4 ADDA.W #$000A,A7
- RTS
- L0A4AA MOVEQ #-$07,D0
- L0A4AC MOVEA.L (A7)+,A4
- MOVE.L (A7)+,BV_LINUM(A6) ;current line #
- MOVE.B (A7)+,BV_STMNT(A6) ;current stmnt on line
- TST.L D0
- RTS
- L0A4BA ; initialize all variables tables procs and funcs of
- ; proc or line
- MOVE.L A4,-(A7)
- MOVE.B BV_SING(A6),D6 ;Single line execution
- ;ON ($FF) or OFF (0)
- BEQ.S L0A4CC
- MOVEA.L BV_TKBAS(A6),A4 ;token list
- MOVEQ #0,D5
- BRA.S L0A4EE
- L0A4CA SF D6
- L0A4CC TST.B BV_EDIT(A6) ;Program has been
- ;edited ($ff) or not (0)
- SF BV_EDIT(A6) ;Program has been
- ;edited ($ff) or not (0)
- BEQ.S L0A4EA
- MOVEA.L BV_PFBAS(A6),A4 ;program file
- L0A4DA TST.B D6
- BNE.S L0A4CA
- MOVE.W $04(A6,A4.L),D5
- ADDQ.W #6,A4
- CMPA.L BV_PFP(A6),A4 ;program running pointer
- BLT.S L0A4EE
- L0A4EA MOVEA.L (A7)+,A4
- RTS
- L0A4EE BSR.S L0A56C ;omit spaces
- CMPI.B #$88,D0
- BEQ.S L0A526
- CMPI.B #$81,D0
- BNE.S L0A55C
- ADDQ.W #2,A4
- CMPI.B #$14,D1
- BEQ.S L0A4EE
- CMPI.B #$02,D1
- BNE.S L0A50E
- BSR.S L0A56C
- BRA.S L0A534
- L0A50E CMPI.B #$04,D1
- BNE.S L0A51E
- BSR.S L0A56C
- CMPI.B #$88,D0
- BNE.S L0A55C
- BRA.S L0A534
- L0A51E CMPI.B #$1B,D1
- BNE.S L0A53A
- BSR.S L0A56C
- L0A526 MOVE.L A4,D4
- ADDQ.W #4,A4
- BSR.S L0A56C
- CMPI.W #$8401,D1
- BNE.S L0A55C
- MOVEA.L D4,A4
- L0A534 MOVEQ #$02,D1
- L0A536 BSR.S L0A57E
- BRA.S L0A55C
- L0A53A CMPI.B #$07,D1
- BNE.S L0A554
- BSR.S L0A56C
- MOVE.W D1,D4
- ADDQ.W #2,A4
- BSR.S L0A56C
- MOVEQ #$04,D1
- CMPI.B #$08,D4
- BEQ.S L0A536
- MOVEQ #$05,D1
- BRA.S L0A536
- L0A554 CMPI.B #$19,D1
- BNE.S L0A55C
- BSR.S L0A5CE
- L0A55C JSR L09B32(PC) ;*/undomodify BSR L09B32
- BGE.S L0A568
- ADDQ.W #2,A4
- BRA L0A4DA
- L0A568 ADDQ.W #2,A4
- BRA.S L0A4EE
- L0A56C MOVE.W 0(A6,A4.L),D1
- MOVE.B 0(A6,A4.L),D0
- CMPI.B #$80,D0
- BNE.S L0A5CC
- JMP L09072(PC) ;*/undomodify BRA L09072
- L0A57E MOVEQ #0,D0
- MOVE.W 2(A6,A4.L),D0
- LSL.L #3,D0
- MOVEA.L BV_NTBAS(A6),A0 ;name table
- ADDA.L D0,A0
- MOVE.B 0(A6,A0.L),D0
- CMP.B D0,D1
- BEQ.S L0A5BC
- SUBQ.B #2,D0
- BLT.S L0A5BC
- BEQ.S L0A5AC
- SUBQ.B #1,D0
- BEQ.S L0A5CC
- SUBQ.B #2,D0
- BLE.S L0A5A6
- SUBQ.B #3,D0
- BLT.S L0A5AC
- L0A5A6 CMPI.B #$04,D1
- BGE.S L0A5BC
- L0A5AC MOVEA.L A0,A2
- MOVEM.L D1/A0,-(A7)
- JSR L05784(PC) ;*/undomodify BSR L05784
- MOVEM.L (A7)+,D1/A0
- BNE.S L0A5CC
- L0A5BC MOVE.B D1,0(A6,A0.L)
- SUBQ.B #4,D1
- BEQ.S L0A5C8
- SUBQ.B #1,D1
- BNE.S L0A5CC
- L0A5C8 MOVE.W D5,$04(A6,A0.L)
- L0A5CC RTS
- L0A5CE ; initialize variable in name table
- MOVEQ #0,D3
- SUBQ.W #2,A4
- L0A5D2 MOVE.W #$8800,D4
- BSR.S L0A5E0
- BNE.S L0A60C
- MOVEQ #$03,D1
- BSR.S L0A57E
- BRA.S L0A5D2
- L0A5E0 ; look for first variable without parenthesis
- MOVEQ #0,D3
- L0A5E2 JSR L09072(PC) ;*/undomodify BSR L09072
- CMP.W D4,D1
- BNE.S L0A5F0
- TST.B D3
- BEQ.S L0A60C
- BRA.S L0A5E2
- L0A5F0 CMPI.W #$8405,D1
- BNE.S L0A5FA
- ADDQ.B #1,D3
- BRA.S L0A5E2
- L0A5FA CMPI.W #$8406,D1
- BNE.S L0A604
- SUBQ.B #1,D3
- BRA.S L0A5E2
- L0A604 JSR L09686(PC) ;*/undomodify BSR L09686
- BNE.S L0A5E2
- MOVEQ #$01,D1
- L0A60C RTS
- L0A60E ; point to next instruction in line
- JSR L09B32(PC) ;*/undomodify BSR L09B32
- BGE.S L0A640
- TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BNE.S L0A63E
- ADDQ.W #2,A4
- CMPA.L BV_PFP(A6),A4 ;program running pointer
- BLT.S L0A626
- JMP L0A994(PC) ;*/undomodify BRA L0A994
- L0A626 MOVE.W 0(A6,A4.L),D0
- ADD.W D0,BV_LENGTH(A6) ;current length
- MOVE.W $04(A6,A4.L),BV_LINUM(A6) ;current line #
- MOVEQ #$01,D0
- MOVE.B D0,BV_STMNT(A6) ;current stmnt on line
- ADDQ.W #6,A4
- MOVEQ #0,D1
- L0A63E RTS
- L0A640 ADDQ.W #2,A4
- ADDQ.B #1,BV_STMNT(A6) ;current stmnt on line
- MOVEQ #0,D0
- RTS
- L0A64A ; point to according value of select
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8117,D1
- BEQ.S L0A6CE
- BSR.S L0A68C
- CMPI.W #$810B,0(A6,A4.L)
- BEQ.S L0A672
- BSR.S L0A6D6
- MOVE.W 0(A6,A1.L),D0
- BEQ.S L0A6CA
- ADDI.W #$18,D0
- SUB.W -6(A6,A1.L),D0
- BLE.S L0A6CA
- BRA.S L0A6A6
- L0A672 BSR.S L0A6D6
- TST.B $02(A6,A1.L)
- BGT.S L0A6A6
- ADDQ.W #2,A4
- ADDQ.L #6,BV_RIP(A6) ;arith stack
- BSR.S L0A68C
- BSR.S L0A6D6
- TST.B $02(A6,A1.L)
- BLT.S L0A6A6
- BRA.S L0A6CA
- L0A68C MOVEA.L A4,A0
- SUBA.L BV_VVBAS(A6),A2 ;variable values
- MOVE.L A2,-(A7)
- JSR L05A7E(PC) ;*/undomodify BSR L05A7E
- MOVEA.L BV_VVBAS(A6),A2 ;variable values
- ADDA.L (A7)+,A2
- MOVEA.L A0,A4
- BEQ.S L0A6D4
- ADDQ.W #4,A7
- RTS
- L0A6A6 ADDQ.L #6,BV_RIP(A6) ;arith stack
- L0A6AA MOVE.W 0(A6,A4.L),D0
- CMPI.W #$8404,D0
- BNE.S L0A6B8
- ADDQ.W #2,A4
- BRA.S L0A64A
- L0A6B8 CMPI.W #$840A,D0
- BEQ.S L0A6D2
- CMPI.W #$8402,D0
- BEQ.S L0A6D2
- JSR L09072(PC) ;*/undomodify BSR L09072
- BRA.S L0A6AA
- L0A6CA ADDQ.L #6,BV_RIP(A6) ;arith stack
- L0A6CE MOVEQ #0,D0
- RTS
- L0A6D2 MOVEQ #-$01,D0
- L0A6D4 RTS
- L0A6D6 SUBQ.W #6,A1
- MOVE.L $02(A6,A2.L),$02(A6,A1.L)
- MOVE.W 0(A6,A2.L),0(A6,A1.L)
- JSR RI_SUB(PC) ;*/undomodify BSR RI_SUB
- BEQ.S L0A6EC
- ADDQ.W #4,A7
- L0A6EC RTS
- L0A6EE ; execute BASIC instruction
- MOVEA.L $B0(A6),A4
- MOVEA.L $B4(A6),A2
- L0A6F6 SF $B8(A6)
- MOVE.L A4,$00B0(A6)
- MOVE.L A2,$00B4(A6)
- MOVE.L $04(A6,A2.L),D4
- MOVEA.L A4,A0
- MOVE.L BV_NTP(A6),D0 ;name table running pointer
- SUB.L BV_NTBAS(A6),D0 ;name table
- MOVE.L D0,-(A7)
- JSR L0614A(PC) ;*/undomodify BSR L0614A
- BNE.S L0A724
- MOVE.W 0(A6,A0.L),D1
- JSR L09686(PC) ;*/undomodify BSR L09686
- BEQ.S L0A732
- MOVEQ #-$0F,D0
- L0A724 MOVE.L BV_NTBAS(A6),D1 ;name table
- ADD.L (A7)+,D1
- MOVE.L D1,BV_NTP(A6) ;name table running pointer
- TST.L D0
- RTS
- L0A732 MOVE.L A5,D0
- SUB.L BV_NTBAS(A6),D0 ;name table
- MOVE.L D0,-(A7)
- MOVEA.L A0,A4
- MOVEA.L BV_NTBAS(A6),A3 ;name table
- ADDA.L $0004(A7),A3
- MOVEA.L D4,A2
- MOVEA.L BV_RIP(A6),A1 ;arith stack
- SUBA.L BV_RIBAS(A6),A1 ;arith stack running ptr
- SUBA.L BV_TKBAS(A6),A4 ;token list
- MOVEM.L D5-D7/A1/A4,-(A7)
- MOVE.L BV_LINUM(A6),-(A7) ;current line #
- MOVE.B BV_STMNT(A6),-(A7) ;current stmnt on line
- MOVE.L BV_INLIN(A6),-(A7) ;Processing in inline clause
- JSR (A2) ;call Machinecode procedure
- MOVE.L D0,D2 ;*** Procedure return ***
- MOVE.L (A7)+,BV_INLIN(A6) ;Processing inline clause
- MOVE.B (A7)+,BV_STMNT(A6) ;current stmnt on line
- MOVE.L (A7)+,BV_LINUM(A6) ;current line #
- MOVEM.L (A7)+,D5-D7/A1/A4
- ADDA.L BV_TKBAS(A6),A4 ;token list
- ADDA.L BV_RIBAS(A6),A1 ;arith stack running ptr
- MOVE.L A1,BV_RIP(A6) ;arith stack
- MOVEA.L BV_NTBAS(A6),A5 ;name table
- MOVEA.L A5,A3
- ADDA.L (A7)+,A5
- ADDA.L (A7)+,A3
- JSR STO_VARValue(PC) ;*/undomodify BSR STO_VARValue
- MOVE.L D2,D0
- TST.B $B8(A6) ;undo rt stack then redo
- ;procedure
- BNE L097E0
- RTS
- L0A79C MOVE.B #$7F,BV_STMNT(A6) ;current stmnt on line
- MOVEQ #0,D4
- MOVE.W BV_INDEX(A6),D4 ;Name tab row of last lp
- JSR L0A0AA(PC) ;*/undomodify BSR L0A0AA
- BGE L0A37A
- RTS
- L0A7B2 ; execute DATA and REMark lines
- MOVEQ #0,D0
- RTS
- L0A7B6 ; execute a conditional repeat
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.B #$88,D0
- BNE.S L0A7F0
- MOVEQ #0,D4
- MOVE.W 2(A6,A4.L),D4
- ADDQ.W #4,A4
- JSR L09852(PC) ;*/undomodify BSR L09852
- BLT.S L0A7D8
- MOVE.B #1,BV_INLIN(A6) ;Processing inline clause
- MOVE.W D4,BV_INDEX(A6) ;Name tab row of last lp
- L0A7D8 JSR L09F96(PC) ;*/undomodify BSR L09F96
- MOVE.B 0(A6,A2.L),D2
- MOVEQ #$06,D1
- SUBQ.B #2,D2
- BEQ.S L0A7F4
- SUBQ.B #4,D2
- BEQ.S L0A81C
- MOVEQ #$1A,D1
- SUBQ.B #1,D2
- BEQ.S L0A7F4
- L0A7F0 MOVEQ #-$0C,D0
- RTS
- L0A7F4 ; initialize conditions of REPeat loop
- MOVE.L A2,-(A7)
- MOVE.L 4(A6,A2.L),D2
- BLT.S L0A806
- MOVEA.L BV_VVBAS(A6),A0 ;variable values
- ADDA.L D2,A0
- JSR L04FE8(PC) ;*/undomodify BSR L04FE8
- L0A806 MOVEQ #$0C,D1
- JSR L04DF6(PC) ;*/undomodify BSR L04DF6
- SUBA.L BV_VVBAS(A6),A0 ;variable values
- MOVEA.L (A7)+,A2
- MOVE.L A0,$04(A6,A2.L)
- MOVE.B #$06,0(A6,A2.L)
- L0A81C JMP L0A2FE(PC) ;*/undomodify BRA L0A2FE
- L0A820 ; execute RESTore
- CLR.W BV_DALNO(A6) ;Current DATA line #
- MOVEA.L A4,A0
- JSR L05A82(PC) ;*/undomodify BSR L05A82
- MOVEA.L A0,A4
- BLT.S L0A848
- BGT.S L0A83A
- ADDQ.L #2,BV_RIP(A6) ;arith stack
- MOVE.W 0(A6,A1.L),BV_DALNO(A6) ;Current DATA line #
- L0A83A MOVE.B #$01,BV_DASTM(A6) ;Current DATA statement #
- MOVE.B #$01,BV_DAITM(A6) ;Next DATA item to read
- MOVEQ #0,D0
- L0A848 RTS
- L0A84A ; execute conditions fo SELect
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8115,D1
- BNE.S L0A85A
- ADDQ.W #2,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- L0A85A MOVEQ #0,D4
- MOVE.W $02(A6,A4.L),D4
- ADDQ.W #4,A4
- JSR L09F80(PC) ;*/undomodify BSR L09F80
- SUBQ.B #2,D2
- BNE.S L0A8A0
- TST.L D0
- BLT.S L0A89C
- JSR L09852(PC) ;*/undomodify BSR L09852
- BLT.S L0A88C
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BNE.S L0A87E
- ST BV_INLIN(A6) ;Processing inline clause
- L0A87E JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$8401,D1
- BNE.S L0A88C
- ADDQ.W #2,A4
- BRA.S L0A892
- L0A88C JSR L09D72(PC) ;*/undomodify BSR L09D72
- BNE.S L0A898
- L0A892 JSR L0A64A(PC) ;*/undomodify BSR L0A64A
- BLT.S L0A88C
- L0A898 MOVEQ #0,D0
- RTS
- L0A89C MOVEQ #-17,D0 ;Error in expression
- RTS
- L0A8A0 MOVEQ #-12,D0 ;Bad name
- RTS
- L0A8A4 ; supervisor of direct or programm lines
- MOVEA.L BV_PFBAS(A6),A4 ;program file
- L0A8A8 SF BV_INLIN(A6) ;Processing inline clause
- TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BNE.S L0A8B8
- L0A8B2 BSR L0A966
- BNE.S L0A8F8
- L0A8B8 MOVEQ #1,D0
- JSR L04E32(PC) ;*/undomodify BSR L04E32
- ;allocate memory
- MOVEQ #0,D0
- ; --------------------------------------------------------------
- ;*/beginoverlay
- ifd NoTas
- L0A8C0:
- BSR L0A56C ;*/modify JSR $A56C(PC)
- CMPI.B #$81,D0
- BNE.S L0A8D0
- BSR L0A190 ;*/modify JSR $A190(PC)
- BRA.S o0A8EA ;*/modify BRA.S $A8EA
- L0A8D0:
- SUBI.B #$88,D0 ;*/modify CMPI.B #$88,D0
- BNE.S L0A8DC
- BSR L0A33C ;*/modify JSR $A33C(PC)
- BRA.S o0A8EA ;*/modify BRA.S $A8EA
- L0A8DC:
- ADDQ.B #$04,D0 ;*/modify CMPI.B #$84,D0
- BNE.S o0A8E8 ;*/modify BNE.S $A8E8
- BSR L0ABF0 ;*/modify JSR $ABF0(PC)
- BRA.S o0A8EA ;*/modify BRA.S $A8EA
- ; test for errors and Break
- o0A8E8:
- MOVEQ #-19,D0 ;Not implemented error
- o0A8EA:
- TST.L D0
- BNE L09BA8
- BSET #7,BV_BRK(A6) ;*/mend TAS BV_BRK(A6)
- ;There has been a
- ;break (0) or not ($80)
- BEQ L09B90
- L0A8F8:
- BSET #7,BV_CONT(A6) ;*/mend TAS BV_CONT(A6)
- ;continue ($80)
- ;or stop (0) processing
- BEQ.S L0A938 ;*/modify BEQ.L L0A9BA
- TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BNE.S L0A90C
- CMPA.L BV_PFBAS(A6),A4 ;program file
- BLE.S L0A8A4
- L0A90C:
- BSR L09B32 ;*/modify JSR $9B32(PC)
- BGE.S L0A95C
- TST.B BV_INLIN(A6) ;Processing inline clause?
- BEQ.S L0A94E
- BLT.S L0A924
- BSR L0A79C ;*/modify JSR $A79C(PC)
- TST.B BV_INLIN(A6) ;Processing inline clause
- BNE.S o0A8EA ;*/modify BNE.S L0A8EA
- ;
- endc
- ;
- ifnd NoTas
- L0A8C0:
- JSR L0A56C(PC)
- CMPI.B #$81,D0
- BNE.S L0A8D0
- JSR L0A190(PC)
- BRA.S o0A8EA
- L0A8D0:
- CMPI.B #$88,D0
- BNE.S L0A8DC
- JSR L0A33C(PC)
- BRA.S o0A8EA
- L0A8DC:
- CMPI.B #$84,D0
- BNE.S L0A8E8
- JSR L0ABF0(PC)
- BRA.S o0A8EA
- L0A8E8:
- MOVEQ #$-13,D0
- o0A8EA:
- TST.L D0
- BNE L09BA8
- TAS $008F(A6)
- BEQ L09B90
- L0A8F8:
- TAS BV_CONT(A6)
- BEQ L0A9BA
- TST.B $6F(A6)
- BNE.S L0A90C
- CMPA.L $10(A6),A4
- BLE.S L0A8A4
- L0A90C:
- JSR L09B32(PC)
- BGE.S L0A95C
- TST.B $6E(A6)
- BEQ.S L0A94E
- BLT.S L0A924
- JSR L0A79C(PC)
- TST.B $6E(A6)
- BNE.S o0A8EA
- ;
- endc
- ;*/endoverlay
- ; --------------------------------------------------------------
- ; WHEN ERROR ?
- L0A924:
- TST.B $C0(A6)
- BEQ.S L0A93C
- TST.B $BF(A6)
- BEQ.S L0A94E
- JSR BAS_CONTinue(PC) ;*/undomodify BSR BAS_CONTinue
- ST BV_CONT(A6) ;continue ($80) or stop (0)
- L0A938:
- JMP L0A9BA(PC) ;*/undomodify BRA L0A9BA
- L0A93C:
- MOVE.W BV_LINUM(A6),D4 ;current line #
- MOVEQ #-1,D3
- JSR L0ACC2(PC) ;*/undomodify BSR L0ACC2
- BNE.S L0A94E
- JSR L09AEE(PC) ;*/undomodify BSR L09AEE
- BRA.S L0A90C
- L0A94E ; test for return after line end
- TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- ADDQ.W #2,A4
- BEQ L0A8B2
- BSR.S L0A998
- BRA.S L0A990
- L0A95C ADDQ.W #2,A4
- ADDQ.B #1,BV_STMNT(A6) ;current stmnt on line
- BRA L0A8B8
- L0A966 ; point to first instruction in line
- SF BV_INLIN(A6) ;Processing inline clause
- L0A96A CLR.W BV_LINUM(A6) ;current line #
- TST.B BV_SING(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- BNE.S L0A98A
- CMPA.L BV_PFP(A6),A4 ;program running pointer
- BGE.S L0A994
- MOVE.W 0(A6,A4.L),D0
- ADD.W D0,BV_LENGTH(A6) ;current length
- MOVE.W 4(A6,A4.L),BV_LINUM(A6) ;current line #
- ADDQ.W #6,A4
- L0A98A MOVE.B #1,BV_STMNT(A6) ;current stmnt on line
- L0A990 MOVEQ #0,D0
- RTS
- L0A994 ; set flags after end of prog
- SF BV_CONT(A6) ;continue ($80) or stop (0)
- L0A998 MOVE.W #$FFFF,BV_NXLIN(A6) ;line # to start after
- ;to start after
- MOVE.W #4,BV_STOPN(A6) ;Which stop number set
- RTS
- ; execute system commands
- ; Labels relativ to L0A9BA
- ; NOTE: ALL following commands have been rewritten
- ; by Tony Tebby - if you use TOOLKIT II you can easily
- ; omit all the code that is following
- L0A9A6 DC.W L0A9F2-L0A9BA ;CLEAR
- DC.W L0AADC-L0A9BA ;NEW
- DC.W L0ABCA-L0A9BA ;STOP
- DC.W L0AA5E-L0A9BA ;RUN
- DC.W L0AADC-L0A9BA ;LRUN
- DC.W L0AADC-L0A9BA ;LOAD
- DC.W L0ABDC-L0A9BA ;MRUN
- DC.W L0ABDC-L0A9BA ;MERGE
- DC.W L0ABA6-L0A9BA ;CONTINUE-RETRY
- DC.W L0A9C6-L0A9BA ;ERROR-RETURN
- L0A9BA MOVE.W BV_STOPN(A6),D1 ;Which stop number set
- MOVE.W L0A9A6(PC,D1.W),D1
- JMP L0A9BA(PC,D1.W)
- L0A9C6 ; restore system and error return
- JSR L09BA8(PC) ;*/undomodify BSR L09BA8
- MOVEA.L BV_RTP(A6),A0 ;return table running ptr
- SF BV_AUTO(A6) ;Whether AUTO/EDIT
- ;is on ($FF) or off (0)
- L0A9D2 CMPA.L BV_RTBAS(A6),A0 ;return table
- BLE.S L0A9FC
- MOVE.B -$08(A6,A0.L),D0
- BEQ.S L0A9EE
- MOVE.L -$18(A6,A0.L),D0
- ADD.L BV_NTBAS(A6),D0 ;name table
- MOVE.L D0,BV_NTP(A6) ;name table running pointer
- SUBA.W #$0010,A0
- L0A9EE SUBQ.W #8,A0
- BRA.S L0A9D2
- L0A9F2 ; system command clear
- TST.B BV_UNRVL(A6) ;Need to unravel
- ;($ff) or not (0)
- BEQ.S L0A9FC
- JSR L097E0(PC) ;*/undomodify BSR L097E0
- L0A9FC BSR L0AA88
- JSR L056C6(PC) ;*/undomodify BSR L056C6
- MOVEA.L BV_NTBAS(A6),A0 ;name table
- L0AA08 MOVE.B 0(A6,A0.L),D0
- SUBQ.B #1,D0
- BEQ.S L0AA4A
- SUBQ.B #3,D0
- BLT.S L0AA1C
- SUBQ.B #2,D0
- BLT.S L0AA52
- SUBQ.B #2,D0
- BGE.S L0AA52
- L0AA1C MOVE.W 2(A6,A0.L),D0
- BLT.S L0AA4A
- BSR L0AACC
- MOVE.B -1(A6,A1.L),D0
- MOVEQ #1,D1
- SUBI.B #$25,D0
- BLT.S L0AA38
- BGT.S L0AA36
- ADDQ.W #1,D1
- L0AA36 ADDQ.W #1,D1
- L0AA38 MOVE.B D1,1(A6,A0.L)
- MOVE.B D7,0(A6,A0.L)
- MOVE.L #$FFFFFFFF,4(A6,A0.L)
- BRA.S L0AA52
- L0AA4A MOVE.L D7,0(A6,A0.L)
- MOVE.L D7,4(A6,A0.L)
- L0AA52 ADDQ.W #8,A0
- CMPA.L BV_NTP(A6),A0 ;name table running pointer
- BLT.S L0AA08
- ST BV_EDIT(A6) ;Program has been
- ;edited ($ff) or not (0)
- L0AA5E ; execute RUN
- TST.B BV_UNRVL(A6) ;Need to unravel
- ;($ff) or not (0)
- BEQ.S L0AA80
- MOVE.W BV_NXLIN(A6),$B4(A6) ;line # to start after
- MOVE.W BV_STOPN(A6),$B6(A6) ;Which stop number set
- JSR L097E0(PC) ;*/undomodify BSR L097E0
- MOVE.W $B4(A6),BV_NXLIN(A6)
- MOVE.W $B6(A6),BV_STOPN(A6)
- L0AA80 JSR L0A4BA(PC) ;*/undomodify BSR L0A4BA
- BRA L0ABE6
- L0AA88 ; clear stacks and storage places
- MOVEQ #0,D7
- MOVE.L D7,BV_DALNO(A6) ;Current DATA line #
- MOVE.B #$01,BV_DAITM(A6) ;Next DATA item to read
- MOVE.L BV_VVBAS(A6),$2C(A6) ;variable values
- MOVE.L #$FFFFFFFF,$CA(A6) ;
- MOVE.W D7,$C8(A6) ;
- MOVE.L BV_RTBAS(A6),BV_RTP(A6) ;return table
- MOVEQ #$58,D0
- L0AAAE MOVE.L BV_RIBAS(A6),0(A6,D0.W) ;arith stack running ptr
- SUBQ.W #4,D0
- CMPI.B #$48,D0
- BGE.S L0AAAE
- SF $0090(A6) ;Need to unravel
- ;($ff) or not (0)
- MOVE.L D7,BV_VVFREE(A6) ;First free space in vvtable
- JSR L04F9E(PC) ;*/undomodify BSR L04F9E
- JMP L04F96(PC) ;*/undomodify BRA L04F96
- L0AACC ; point to end of name list
- MOVEA.L BV_NLBAS(A6),A1 ;name list
- ADDA.W D0,A1
- MOVEQ #$01,D0
- ADD.B 0(A6,A1.L),D0
- ADDA.W D0,A1
- RTS
- L0AADC:
- MOVEA.L BV_CHP(A6),A3 ;channel name running ptr
- MOVEA.L BV_CHBAS(A6),A2 ;channel name
- ADDA.W #$78,A2
- MOVE.L A2,BV_CHP(A6) ;channel name running ptr
- L0AAEC CMPA.L A3,A2
- BGE.S L0AB02
- MOVE.L 0(A6,A2.L),D0
- BLT.S L0AAFC
- MOVEA.L D0,A0
- MOVEQ #2,D0 ;IO.CLOSE
- TRAP #2
- L0AAFC ADDA.W #$0028,A2
- BRA.S L0AAEC
- L0AB02 MOVEQ #$10,D0 ;MT.DMODE sets or reads the
- ;display mode
- MOVEQ #-1,D1 ;read mode
- MOVEQ #-1,D2 ;read display
- TRAP #1
- MOVEQ #$10,D0 ;MT.DMODE sets this mode
- TRAP #1
- MOVE.L BV_LNBAS(A6),BV_LNP(A6) ;line # table
- CLR.W BV_LSBAS(A6) ;Bottom line in window
- BSR L0AA88
- MOVE.L BV_PFBAS(A6),BV_PFP(A6) ;program file
- MOVEQ #0,D0
- MOVEQ #0,D5
- MOVEA.L BV_NTBAS(A6),A0 ;name table
- MOVEQ #8,D1
- L0AB2C CMPA.L BV_NTP(A6),A0 ;name table running pointer
- BEQ.S L0AB84
- CMP.B 0(A6,A0.L),D1
- BGT.S L0AB42
- TST.B D5
- BNE.S L0AB50
- MOVE.W 2(A6,A0.L),D0
- BRA.S L0AB80
- L0AB42 TST.B D5
- BNE.S L0AB80
- MOVEA.L A0,A2
- BSR.S L0AACC
- MOVEA.L A1,A3
- ST D5
- BRA.S L0AB80
- L0AB50 MOVE.L 0(A6,A0.L),0(A6,A2.L)
- MOVE.L $04(A6,A0.L),$04(A6,A2.L)
- MOVE.W $02(A6,A2.L),D0
- BSR L0AACC
- SUBA.W D0,A1
- MOVE.L A3,D2
- SUB.L BV_NLBAS(A6),D2 ;name list
- MOVE.W D2,$02(A6,A2.L)
- ADDQ.W #8,A2
- L0AB72 MOVE.B 0(A6,A1.L),0(A6,A3.L)
- ADDQ.W #1,A1
- ADDQ.W #1,A3
- SUBQ.W #1,D0
- BGT.S L0AB72
- L0AB80 ADDQ.W #8,A0
- BRA.S L0AB2C
- L0AB84 TST.B D5
- BEQ.S L0AB90
- MOVE.L A2,BV_NTP(A6) ;name table running pointer
- MOVE.L A3,BV_NLP(A6) ;name list running pointer
- L0AB90 JSR L04F9A(PC) ;*/undomodify BSR L04F9A
- JSR L04F8E(PC) ;*/undomodify BSR L04F8E
- JSR L04F92(PC) ;*/undomodify BSR L04F92
- JSR L04F8A(PC) ;*/undomodify BSR L04F8A
- JSR L056C6(PC) ;*/undomodify BSR L056C6
- BRA.S L0ABC4
- L0ABA6 ; execute RETRY or CONTINUE
- MOVE.W BV_CNLNO(A6),BV_NXLIN(A6) ;Line to CONTINUE from
- MOVE.B BV_CNSTM(A6),$8A(A6) ;Statement to CONTINUE from
- MOVE.W #$FFFF,BV_CNLNO(A6) ;Line to CONTINUE from
- MOVE.B BV_CNINL(A6),BV_INLIN(A6) ;CONTINUE Inline loop flg
- MOVE.W BV_CNIND(A6),BV_INDEX(A6) ;Inline loop indx
- L0ABC4 SF BV_COMLN(A6) ;Command line saved ($ff)
- ;or not (0)
- BRA.S L0ABEC
- L0ABCA ; execute STOP
- TST.B $C0(A6)
- SF $C0(A6)
- BNE.S L0ABE6
- MOVEQ #0,D0
- JSR L09B5E(PC) ;*/undomodify BSR L09B5E
- BRA.S L0ABEC
- L0ABDC ; execute MRUN or MERGE
- TST.B BV_UNRVL(A6) ;Need to unravel
- ;($ff) or not (0)
- BEQ.S L0ABE6
- JSR L097E0(PC) ;*/undomodify BSR L097E0
- L0ABE6 MOVE.B BV_SING(A6),BV_COMLN(A6) ;Single line execution
- ;ON ($FF) or OFF (0)
- L0ABEC MOVEQ #0,D0
- RTS
- L0ABF0 ; handling of lines starting with =
- CMPI.W #$8401,D1
- BNE.S L0ABFC
- ADDQ.W #2,A4
- JMP L09CFE(PC) ;*/undomodify BRA L09CFE
- ;search end of SELect
- L0ABFC MOVEQ #0,D0
- RTS
- L0AC00 ; execute WHEN
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.W #$810E,D1
- BNE.S L0AC32
- MOVE.W BV_LINUM(A6),$00BC(A6) ;current line #
- MOVE.B BV_STMNT(A6),$00BE(A6) ;current stmnt on line
- JSR L09852(PC) ;*/undomodify BSR L09852
- SEQ $00BF(A6)
- BEQ.S L0AC28
- MOVEQ #$06,D2
- JMP L098A8(PC) ;*/undomodify BRA L098A8
- L0AC26 ADDQ.W #2,A4
- L0AC28 JSR L09B32(PC) ;*/undomodify BSR L09B32
- BGE.S L0AC26
- L0AC2E MOVEQ #0,D0
- RTS
- L0AC32 ; WHENvar
- MOVE.W 2(A6,A4.L),D4
- ADDQ.W #4,A4
- JSR L0A56C(PC) ;*/undomodify BSR L0A56C
- CMPI.B #$85,D0
- BEQ.S L0AC54
- L0AC42:
- MOVEQ #$01,D3
- JSR L0ACC2(PC) ;*/undomodify BSR.S L0ACC2
- ;*/undomodify nop
- BNE.S L0AC2E
- ST 0(A6,A2.L)
- SUBQ.W #1,$C8(A6)
- BRA.S L0AC42
- L0AC54:
- MOVEQ #$01,D3
- JSR L0ACC2(PC) ;*/undomodify BSR.S L0ACC2
- ;*/undomodify nop
- L0AC5A:
- BNE.S L0AC6C
- MOVE.W BV_LINUM(A6),D0 ;current line #
- CMP.W $02(A6,A2.L),D0
- BEQ.S L0AC76
- JSR L0ACDA(PC) ;*/undomodify BSR.S L0ACDA
- ;*/undomodify nop
- BRA.S L0AC5A
- L0AC6C:
- MOVEQ #0,D3
- JSR L0ACC2(PC) ;*/undomodify BSR.S L0ACC2
- ;*/undomodify nop
- ADDQ.W #1,$00C8(A6)
- L0AC76:
- MOVE.W D4,0(A6,A2.L)
- MOVE.W BV_LINUM(A6),$02(A6,A2.L) ;current line #
- MOVE.B BV_STMNT(A6),$04(A6,A2.L) ;current statement
- MOVE.W BV_LINUM(A6),$06(A6,A2.L) ;current line #
- MOVE.B #$7F,$05(A6,A2.L)
- CLR.L $0A(A6,A2.L)
- ST $08(A6,A2.L)
- MOVE.L A2,-(A7)
- JSR L09852(PC) ;*/undomodify BSR L09852
- MOVEA.L (A7)+,A2
- SEQ $0E(A6,A2.L)
- BEQ.S L0AC28
- MOVEQ #$06,D2
- MOVE.L A2,-(A7)
- JSR L098A8(PC) ;*/undomodify BSR L098A8
- MOVE.L (A7)+,D2
- MOVE.W BV_LINUM(A6),$06(A6,A2.L) ;current line #
- MOVE.B BV_STMNT(A6),$05(A6,A2.L) ;current stmnt on line
- BRA L0AC2E
- L0ACC2 MOVE.W $00C8(A6),D2
- BEQ.S L0AD06
- BSR.S L0AD10
- L0ACCA MOVE.W 0(A6,A2.L),D0
- BLT.S L0ACEC
- TST.B D3
- BLT.S L0ACF2
- BEQ.S L0ACDE
- CMP.W D0,D4
- BEQ.S L0ACFE
- L0ACDA SUBQ.W #1,D2
- BEQ.S L0AD02
- L0ACDE ADDA.W #$0010,A2
- SUBI.L #$00000010,D1
- BGE.S L0ACCA
- BRA.S L0AD26
- L0ACEC TST.B D3
- BNE.S L0ACDE
- RTS
- L0ACF2 CMP.W $06(A6,A2.L),D4
- BNE.S L0ACDA
- TST.W $08(A6,A2.L)
- BLT.S L0ACDA
- L0ACFE MOVEQ #0,D0
- RTS
- L0AD02 MOVEQ #-$01,D0
- RTS
- L0AD06 TST.B D3
- BNE.S L0AD02
- TST.L $CA(A6) ;
- BLT.S L0AD26
- L0AD10 MOVEA.L BV_VVBAS(A6),A2 ;variable values
- ADDA.L $CA(A6),A2 ;
- MOVE.L 0(A6,A2.L),D1
- SUBI.L #$14,D1
- ADDQ.W #4,A2
- RTS
- L0AD26 MOVE.L $CA(A6),D1 ;
- BGE.S L0AD32
- MOVEQ #0,D1
- MOVEQ #0,D0
- BRA.S L0AD3C
- L0AD32 MOVEA.L BV_VVBAS(A6),A2 ;variable values
- ADDA.L D1,A2
- MOVE.L 0(A6,A2.L),D0
- L0AD3C ADDI.L #$140,D1
- MOVE.L A2,-(A7)
- MOVE.L D0,-(A7)
- JSR L04DF6(PC) ;*/undomodify BSR L04DF6
- MOVE.L (A7)+,D0
- MOVEA.L (A7)+,A2
- MOVE.L D1,0(A6,A0.L)
- MOVE.L A0,-(A7)
- SUB.L D0,D1
- L0AD56 ADDQ.W #4,A2
- ADDQ.W #4,A0
- SUBQ.W #4,D0
- BLE.S L0AD66
- MOVE.L 0(A6,A2.L),0(A6,A0.L)
- BRA.S L0AD56
- L0AD66 MOVE.L A0,-(A7)
- L0AD68 ST 0(A6,A0.L)
- ADDA.W #$10,A0
- SUBI.L #$10,D1
- BGT.S L0AD68
- MOVE.L $CA(A6),D1
- BLT.S L0AD8C
- MOVEA.L BV_VVBAS(A6),A0 ;variable values
- ADDA.L D1,A0
- MOVE.L 0(A6,A0.L),D1
- JSR L04FE8(PC) ;*/undomodify BSR L04FE8
- L0AD8C MOVEA.L (A7)+,A2
- MOVE.L (A7)+,D1
- SUB.L BV_VVBAS(A6),D1 ;variable values
- MOVE.L D1,$CA(A6)
- RTS
- ; --------------------------------------------------------------
- ;*/endfile
-