home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-12-16 | 34.2 KB | 1,747 lines |
- */beginfile PROCS10_asm
- ; --------------------------------------------------------------
- ; PROCS10_asm - BASIC procedure and function definitions
- ; - last modified 06/09/95
- ; QDOS-Amiga sources by Rainer Kowallik
- ; ...latest changes by Mark J Swift
- ; --------------------------------------------------------------
- BAS_DLINe:
- CMPA.L A5,A3
- BGE L0750E
- ST D7
- JSR L07E30(PC) ;*/undomodify BSR L07E30
- BEQ.S L07476
- ST $00B8(A6)
- L07474 RTS
- L07476 BSR.S L0747A
- BRA.S L07492
- L0747A MOVEQ #$02,D1
- JMP L065E8(PC) ;*/undomodify BRA L065E8
- BAS_LIST:
- BSR.S L0747A
- BLT.S L07474
- L07484 ST BV_PRINT(A6) ;Print from prtok
- ;($ff) or leave in buffer
- CLR.W $BA(A6)
- CMPA.L A5,A3
- BGE L07512
- L07492 MOVE.L A5,-(A7)
- L07494 CMPA.L (A7),A3
- BGE.S L074DE
- BSR.S L07452
- BNE.S L074A0
- MOVEQ #0,D4
- BRA.S L074A6
- L074A0 BSR.S L074F0
- BNE.S L074DA
- MOVE.W D1,D4
- L074A6 SUBQ.B #5,D5
- BEQ.S L074B6
- ADDQ.B #5,D5
- MOVE.W D4,D6
- BNE.S L074CE
- TST.B D7
- BNE.S L07494
- BRA.S L074BE
- L074B6 CMPA.L (A7),A3
- BGE.S L074BE
- BSR.S L07452
- BNE.S L074C4
- L074BE MOVE.W #$7FFF,D6
- BRA.S L074CE
- L074C4 BSR.S L074F0
- BNE.S L074DA
- MOVE.W D1,D6
- CMP.W D4,D6
- BLT.S L074DA
- L074CE BSR.S TKN_LIST
- CMPI.B #$01,D5
- BEQ.S L07494
- TST.B D5
- BEQ.S L074DE
- L074DA MOVEQ #-$0F,D0
- BRA.S L074EC
- L074DE TST.B D7
- BEQ.S L074EA
- MOVEQ #0,D2
- MOVEQ #0,D5
- JSR L08FE6(PC) ;*/undomodify BSR L08FE6
- L074EA MOVEQ #0,D0
- L074EC MOVEA.L (A7)+,A5
- RTS
- L074F0 MOVEA.L A3,A5
- JSR L05EC8(PC) ;*/undomodify BSR L05EC8
- BNE.S L07510
- MOVEQ #$03,D0
- JSR L05996(PC) ;*/undomodify BSR L05996
- BNE.S L07510
- ADDQ.L #2,BV_RIP(A6) ;arith stack
- MOVE.W 0(A6,A1.L),D1
- BGT.S L0750E
- MOVEQ #-15,D0 ;Bad parameter
- RTS
- L0750E MOVEQ #0,D0
- L07510 RTS
- L07512 MOVEQ #0,D4
- MOVE.W #$7FFF,D6
- TKN_LIST ;Convert precompiled BASIC to ASCII text
- MOVEA.L BV_PFBAS(A6),A4 ;program file
- TKN_LST2 CLR.L BV_LINUM(A6) ;current line #
- TST.W D4
- BEQ.S L07530
- MOVE.L A0,-(A7)
- JSR L09FBE(PC) ;*/undomodify BSR L09FBE
- MOVEA.L (A7)+,A0
- MOVE.W D2,BV_LINUM(A6) ;current line #
- L07530 TST.B D7
- BNE.S L0753C
- RLOC16 movea.l #(TB_LIST-ORGN),a2 ;*/modify LEA TB_LIST(PC),A2
- JMP L090B6(PC) ;*/undomodify BRA L090B6
- L0753C CMP.W 4(A6,A4.L),D6
- BLT.S L0750E
- MOVE.L A4,-(A7)
- MOVE.W BV_LENGTH(A6),-(A7) ;current length
- L07548 CMPA.L BV_PFP(A6),A4 ;program running ptr
- BGE.S L07588
- 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
- CMP.W $04(A6,A4.L),D6
- BGE.S L07548
- MOVE.W 0(A6,A4.L),D1
- ADD.W BV_LENGTH(A6),D1 ;current length
- SUB.W (A7)+,D1
- MOVE.W D1,0(A6,A4.L)
- MOVEA.L (A7)+,A2
- L07572 MOVE.W 0(A6,A4.L),0(A6,A2.L)
- ADDQ.W #2,A4
- ADDQ.W #2,A2
- CMPA.L BV_PFP(A6),A4 ;program running ptr
- BLT.S L07572
- MOVE.L A2,BV_PFP(A6) ;program running ptr
- L07586 BRA.S L0750E
- L07588 ADDQ.W #2,A7
- MOVE.L (A7)+,BV_PFP(A6) ;program running ptr
- BRA.S L07586
- ; --------------------------------------------------------------
- ;*/beginoverlay
-
- ; fix for MRUN, LOAD and LRUN. If command channel is not #0,
- ; do a close before opening to a different input channel.
-
- L07E20fix:
- move.l BV_COMCH(a6),d0 ;BASICs Command channel
- beq.s L07E20o
-
- move.l d0,a0
- moveq #2,d0 ;IO.CLOSE close channel
- trap #2
-
- clr.l BV_COMCH(a6) ;Set Command channel to #0
-
- L07E20o:
- moveq #$01,d4
- jsr L069C4(pc)
- bne.s L07E2Eo
- move.l a0,BV_COMCH(a6) ;Command channel
- moveq #0,d0
-
- L07E2Eo:
- rts
-
- ;*/removecode BAS_MODE:
- ;*/removecode JSR GET_INT2(PC)
- ;*/removecode BNE.S L075AC
- ;*/removecode ADDQ.L #2,BV_RIP(A6)
- ;*/removecode MOVE.W #$0108,D1
- ;*/removecode AND.W D1,0(A6,A1.L)
- ;*/removecode BNE.S L075A6
- ;*/removecode MOVEQ #0,D1
- ;*/removecode L075A6:
- ;*/removecode MOVEQ #-1,D2
- ;*/removecode MOVEQ #$10,D0
- ;*/removecode TRAP #1
- ;*/removecode L075AC:
- ;*/removecode RTS
-
- ;*/removecode L075AE:
- ;*/removecode BAS_NET:
- ;*/removecode JSR GET_INT2(PC)
- ;*/removecode BNE.S L075C4
- ;*/removecode ADDQ.L #2,BV_RIP(A6)
- ;*/removecode MOVE.B 1(A6,A1.L),D1
- ;*/removecode BLE.S L075C6
- ;*/removecode MOVE.B D1,$28037
- ;*/removecode L075C4 RTS
- ;*/removecode L075C6 MOVEQ #-15,D0
- ;*/removecode RTS
-
- NOP075CA:
- DCB.w ($75CA-(NOP075CA-ORGN))/2,$4E71
-
- ;*/endoverlay
- ; --------------------------------------------------------------
- BAS_INK:
- MOVEQ #$29,D4
- BRA.S DO_BAS_Col
- BAS_STRIp:
- MOVEQ #$28,D4
- BRA.S DO_BAS_Col
- BAS_PAPEr:
- MOVEQ #$27,D4
- DO_BAS_Col:
- JSR L08038(PC) ;*/undomodify BSR L08038
- BNE.S L075EE
- BSR L07FD4
- BNE.S L075EE
- CMPI.B #$27,D4
- BNE.S L075EA
- BSR.S L075EA
- MOVEQ #$28,D4
- L075EA JMP L07FC4(PC) ;*/undomodify BRA L07FC4
- L075EE RTS
- BAS_CLS:
- MOVEQ #$20,D4
- BRA.S L075FA
- BAS_PAN:
- MOVEQ #$1B,D4
- BRA.S L075FA
- BAS_SCROll:
- MOVEQ #$18,D4
- L075FA JSR L08038(PC) ;*/undomodify BSR L08038
- BNE.S L07642
- MOVE.W 0(A6,A1.L),D1
- CMPI.B #$20,D4
- BEQ.S L0760E
- SUBQ.L #2,A1
- SUBQ.L #1,D3
- L0760E SUBQ.W #1,D3
- BHI.S L07640
- BLT.S L0762C
- MOVE.W D4,D3
- SUBI.W #$0017,D3
- LSR.W #2,D3
- LEA L07644(PC),A2
- BTST D1,0(A2,D3.W)
- BEQ.S L07640
- ADD.L D1,D4
- MOVE.W 0(A6,A1.L),D1
- L0762C JSR L090A2(PC) ;*/undomodify BSR L090A2
- BNE.S L0763C
- MOVE.L BV_LNBAS(A6),$0044(A6) ;line # table
- CLR.W BV_LSBAS(A6) ;Bottom line in window
- L0763C JMP L07FC4(PC) ;*/undomodify BRA L07FC4
- L07640 MOVEQ #-$0F,D0
- L07642 RTS
- L07644 BTST D3,(A1)+
- MOVE.B D0,-(A7)
- BAS_PAUSe:
- JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
- SUBQ.W #1,D3
- BLT.S L0765A
- BGT.S L07668
- ADDQ.L #2,BV_RIP(A6) ;arith stack
- MOVE.W 0(A6,A1.L),D3
- L0765A MOVEQ #0,D1
- JSR L0661E(PC) ;*/undomodify BSR L0661E
- MOVEQ #1,D0 ;IO.FBYTE fetch a byte
- TRAP #3
- MOVEQ #0,D0
- RTS
- L07668 MOVEQ #-15,D0
- RTS
- BAS_POKE:
- MOVEQ #0,D4 ;here we do not need even
- ;address
- BSR.S L07682
- MOVE.B D1,(A4)
- RTS
- POKE_W:
- BSR.S L07680
- MOVE.W D1,(A4)
- RTS
- POKE_L:
- BSR.S L07680
- MOVE.L D1,(A4)
- RTS
- L07680 MOVEQ #$01,D4 ;Check for even address
- L07682 JSR CA_GTLIN(PC) ;*/undomodify BSR CA_GTLIN
- BNE.S L076A4
- SUBQ.W #2,D3
- BNE.S L076A0
- ADDQ.L #8,BV_RIP(A6) ;arith stack
- MOVEA.L 0(A6,A1.L),A4
- MOVE.L 4(A6,A1.L),D1
- MOVE.L A4,D0
- AND.L D4,D0 ;address odd ?
- BNE.S L076A0
- RTS
- L076A0 ADDQ.W #4,A7
- MOVEQ #-15,D0 ;bad parameter error
- L076A4 RTS
- BAS_INPUt:
- ST D7
- BAS_PRINt:
- JSR L04E4C(PC) ;*/undomodify BSR L04E4C
- MOVEQ #0,D4
- JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
- BNE L0784E
- MOVE.L A5,-(A7)
- MOVEA.L A2,A5
- MOVEQ #0,D5
- TST.B D7
- BEQ.S L076D0
- MOVEQ #$0B,D0
- MOVEA.L (A6),A1
- BSR L0796E
- CMPI.W #$FFF1,D0
- BNE.S L076D0
- MOVEQ #$01,D7
- L076D0 CMPA.L (A7),A3
- BGE L0783E
- MOVE.B $01(A6,A3.L),D0
- MOVE.B D0,D5
- LSR.B #4,D5
- ANDI.B #$0F,D0
- BNE.S L076F2
- TST.B 0(A6,A3.L)
- BNE.S L076F2
- BSR L0795A
- BRA L07832
- L076F2 TST.W $02(A6,A3.L)
- SGE D1
- AND.B D7,D1
- BEQ.S L07714
- MOVE.W D0,-(A7)
- BSR L0795A
- MOVE.W (A7)+,D0
- MOVEA.L (A7),A4
- JSR L07A0C(PC) ;*/undomodify BSR L07A0C
- BNE L07850
- MOVE.L A4,(A7)
- BRA L07832
- L07714 TST.B D7
- BGT L07838
- MOVEA.L BV_VVBAS(A6),A0 ;variable values
- MOVE.L $04(A6,A3.L),D1
- BLT L07828
- ADDA.L D1,A0
- CMPI.B #$03,0(A6,A3.L)
- BNE L07824
- TST.B D5
- BEQ.S L07740
- CMPI.B #$05,D5
- BNE.S L07742
- SWAP D5
- BRA.S L07742
- L07740 MOVEQ #$03,D5
- L07742 MOVE.B D0,-(A7)
- MOVEA.L A0,A2
- BSR L0781A
- SUBA.L BV_VVBAS(A6),A2 ;variable values
- SUBA.L BV_CHBAS(A6),A5 ;channel name
- MOVEM.L A2-A3/A5,-(A7)
- JSR L04DF6(PC) ;*/undomodify BSR L04DF6
- MOVEM.L (A7)+,A2-A3/A5
- ADDA.L BV_CHBAS(A6),A5 ;channel name
- ADDA.L BV_VVBAS(A6),A2 ;variable values
- MOVEA.L A0,A4
- L07768 SUBQ.W #1,D1
- LEA 0(A4,D1.W),A1
- SF 0(A6,A1.L)
- BNE.S L07768
- MOVE.W $04(A6,A2.L),D1
- MOVE.B (A7),D0
- SUBQ.B #2,D0
- BLT.S L07788
- BEQ.S L07784
- MOVEQ #$02,D0
- BRA.S L0778C
- L07784 MOVEQ #$06,D0
- BRA.S L0778C
- L07788 SUBQ.W #1,D1
- MOVEQ #$01,D0
- L0778C MOVE.W D0,0(A6,A4.L)
- LSL.W #1,D1
- MOVE.W D1,$02(A6,A4.L)
- L07796 MOVEA.L BV_VVBAS(A6),A0 ;variable values
- ADDA.L 0(A6,A2.L),A0
- MOVE.W $04(A6,A2.L),D0
- LSL.W #2,D0
- LEA 2(A2,D0.W),A1
- MOVE.W 0(A6,A1.L),D3
- LSR.W #1,D0
- L077AE LEA 2(A4,D0.W),A1
- MOVE.W 0(A6,A1.L),D1
- LSL.W #1,D0
- LEA 4(A2,D0.W),A1
- LSR.W #1,D0
- MULU 0(A6,A1.L),D1
- MULU 0(A6,A4.L),D1
- ADDA.L D1,A0
- SUBQ.W #2,D0
- BNE.S L077AE
- MOVE.B (A7),D0
- BSR L0785E
- BNE.S L077FE
- MOVE.W $02(A6,A4.L),D0
- BEQ.S L077FE
- L077DA LSL.W #1,D0
- LEA 2(A2,D0.W),A1
- MOVE.W 0(A6,A1.L),D1
- LSR.W #1,D0
- LEA 2(A4,D0.W),A1
- CMP.W 0(A6,A1.L),D1
- BEQ.S L077F6
- ADDQ.W #1,0(A6,A1.L)
- BRA.S L07796
- L077F6 CLR.W 0(A6,A1.L)
- SUBQ.W #2,D0
- BNE.S L077DA
- L077FE BSR.S L0781A
- MOVEA.L A4,A0
- MOVE.L D0,-(A7)
- MOVE.L A3,-(A7)
- JSR L04FE8(PC) ;*/undomodify BSR L04FE8
- MOVEA.L (A7)+,A3
- MOVE.L (A7)+,D0
- ADDQ.W #2,A7
- BNE.S L0784C
- TST.B D5
- BNE.S L07838
- SWAP D5
- BRA.S L07832
- L0781A MOVEQ #$02,D1
- ADD.W $04(A6,A2.L),D1
- LSL.W #1,D1
- RTS
- L07824 BSR.S L0785E
- BRA.S L07836
- L07828 BSR L0795A
- MOVEQ #$2A,D1
- BSR L07960
- L07832 BSR L078E0
- L07836 BNE.S L0784C
- L07838 ADDQ.W #8,A3
- BRA L076D0
- L0783E TST.B D5
- BNE.S L0784A
- TST.B D7
- BGT.S L0784A
- BSR L07934
- L0784A MOVEQ #0,D0
- L0784C MOVEA.L (A7)+,A5
- L0784E RTS
- L07850 MOVE.L A4,(A7)
- MOVE.L D0,-(A7)
- MOVEQ #$0F,D0
- BSR L07970
- MOVE.L (A7)+,D0
- BRA.S L0784C
- L0785E MOVEA.L BV_RIP(A6),A1 ;arith stack
- SUBQ.W #6,A1
- TST.B D0
- BEQ.S L07878
- SUBQ.B #2,D0
- BGT.S L0787E
- BEQ.S L0788E
- MOVE.W 0(A6,A0.L),D2
- MOVEA.L A0,A1
- ADDQ.W #2,A1
- BRA.S L078AA
- L07878 MOVEA.L A0,A1
- MOVE.W D3,D2
- BRA.S L078AA
- L0787E MOVE.W 0(A6,A0.L),0(A6,A1.L)
- MOVEA.L (A6),A0
- ADDQ.W #1,A0
- JSR CN_ITOD(PC) ;*/undomodify BSR CN_ITOD
- BRA.S L078A2
- L0788E MOVE.L $02(A6,A0.L),$02(A6,A1.L)
- MOVE.W 0(A6,A0.L),0(A6,A1.L)
- MOVEA.L (A6),A0
- ADDQ.W #1,A0
- JSR CN_FTOD(PC) ;*/undomodify BSR CN_FTOD
- L078A2 MOVEA.L (A6),A1
- ADDQ.W #1,A1
- MOVE.L A0,D2
- SUB.L A1,D2
- L078AA TST.B D4
- BEQ.S L078D2
- SWAP D4
- ADDQ.W #1,D2
- SUBQ.W #1,A1
- MOVE.B 0(A6,A1.L),-(A7)
- SUB.W D2,D4
- BLT.S L078C4
- MOVE.B #$20,0(A6,A1.L)
- BRA.S L078D0
- L078C4 MOVE.B #$0A,0(A6,A1.L)
- MOVE.W #$FFFF,$20(A6,A5.L)
- L078D0 SWAP D4
- L078D2 BSR L07968
- TST.B D4
- BEQ.S L078E0
- SUBA.W D2,A1
- MOVE.B (A7)+,0(A6,A1.L)
- ; --------------------------------------------------------------
- */beginoverlay
- ifd NoTas
- L078E0:
- BSET #7,BV_BRK(A6) ;*/mend TAS BV_BRK(A6)
- ;There has been a
- ;break (0) or not ($80)
- BNE.S o078E8
- MOVEQ #-$01,D0
- o078E8 TST.L D0
- BNE.S L07958
- TST.B D7
- BGT.S L07956
- SF D4
- MOVE.B D5,D0 ;*/insert
- SUBQ.B #$01,D0 ;*/modify CMPI.B #$01,D5
- BEQ.S L0793E
- SUBQ.B #$02,D0 ;*/modify CMPI.B #$03,D5
- BEQ.S L07934
- endc
- ifnd NoTas
- L078E0:
- TAS BV_BRK(A6)
- BNE.S L078E8
- MOVEQ #$-$01,D0
- L078E8
- TST.L D0
- BNE.S L07958
- TST.B D7
- BGT.S L07956
- SF D4
- CMPI.B #$01,D5
- BEQ.S L0793E
- CMPI.B #$03,D5
- BEQ.S L07934
- endc
- */endoverlay
- ; --------------------------------------------------------------
- CMPI.B #$04,D5
- BEQ.S L07926
- CMPI.B #$05,D5
- BNE.S L07956
- MOVE.L A5,-(A7)
- ADDQ.W #8,A3
- LEA 8(A3),A5
- JSR GET_INT2(PC) ;*/undomodify BSR GET_INT2
- MOVEA.L (A7)+,A5
- BNE.S L07958
- MOVE.W 0(A6,A1.L),D2
- ADDQ.L #2,BV_RIP(A6) ;arith stack
- BSR.S L0797A
- BRA.S L0794A
- L07926 BSR.S L0797A
- SUB.W D0,D1
- MOVE.W D1,D4
- SWAP D4
- TST.W D0
- SNE D4
- BRA.S L07956
- L07934 MOVEQ #$0A,D1
- BSR.S L07960
- CLR.W $20(A6,A5.L)
- BRA.S L07956
- L0793E BSR.S L0797A
- MOVE.W D0,D2
- ADDQ.W #8,D2
- ANDI.W #$00F8,D2
- SUBQ.W #8,D1
- L0794A SUB.W D2,D1
- BLT.S L07934
- SUB.W D0,D2
- L07950 BSR.S L0795E
- SUBQ.W #1,D2
- BGT.S L07950
- L07956 MOVEQ #0,D0
- L07958 RTS
- L0795A TST.B D4
- BEQ.S L07958
- L0795E MOVEQ #$20,D1 ;Send a blank
- L07960 MOVEQ #5,D0 ;IO.SBYTE send a byte
- ADDQ.W #1,$20(A6,A5.L)
- BRA.S L07970
- L07968 MOVEQ #7,D0 ;IO.SSTRG sends a string of
- ;bytes
- ADD.W D2,$20(A6,A5.L) ;number of bytes to be send
- L0796E TRAP #4
- L07970 MOVEQ #-1,D3
- MOVEA.L 0(A6,A5.L),A0
- TRAP #3
- RTS
- L0797A MOVEQ #$0B,D0
- MOVEA.L (A6),A1
- BSR.S L0796E
- TST.L D0
- BNE.S L0798E
- MOVE.W $04(A6,A1.L),D0
- MOVE.W 0(A6,A1.L),D1
- RTS
- L0798E MOVE.W $22(A6,A5.L),D1
- MOVE.W $20(A6,A5.L),D0
- RTS
- BAS_RANDomise:
- JSR CA_GTLIN(PC) ;*/undomodify BSR CA_GTLIN
- BNE.S L079BE
- SUBQ.W #1,D3
- BGT.S L079C0
- BEQ.S L079AA
- MOVEQ #$13,D0 ;SD.PCOL position cursor on
- ;previous char column
- TRAP #1
- BRA.S L079B4
- L079AA MOVE.L 0(A6,A1.L),D1
- ADDQ.L #4,BV_RIP(A6) ;arith stack
- MOVEQ #0,D0
- L079B4 MOVE.L D1,D2
- SWAP D1
- ADD.L D2,D1
- MOVE.L D1,BV_RAND(A6) ;Random number
- L079BE RTS
- L079C0 MOVEQ #-$0F,D0
- RTS
- L079C4 MOVE.L D0,-(A7)
- MOVEQ #0,D4
- L079C8 MOVEQ #4,D0
- TRAP #4
- MOVEA.L BV_BFP(A6),A1 ;buffer running ptr
- MOVE.L BV_TKBAS(A6),D2 ;token list
- SUB.L (A6),D2
- MOVE.L A1,D1
- SUB.L (A6),D1
- MOVE.W D1,D4
- MOVE.L D4,D1
- TST.L (A7)
- BEQ.S L079E6
- MOVEQ #2,D0 ;IO.FLINE fetch line of
- ;chars terminated by <LF>
- SUB.W D1,D2
- L079E6 MOVEQ #-1,D3
- TRAP #3
- TST.L D0
- BGE.S L07A06
- CMPI.B #$FB,D0
- BNE.S L07A06
- MOVE.L D1,D4
- MOVE.L A1,BV_BFP(A6) ;buffer running
- MOVE.L A0,-(A7)
- MOVEQ #$7E,D1
- JSR L04E6A(PC) ;*/undomodify BSR L04E6A
- MOVEA.L (A7)+,A0
- BRA.S L079C8
- L07A06 ADDQ.W #4,A7
- L07A08 TST.L D0
- RTS
- L07A0C MOVE.L D7,-(A7)
- MOVE.W D0,-(A7)
- BSR.S L07A8E
- BEQ.S L07A1A
- L07A14 ADDQ.W #2,A7
- L07A16 MOVE.L (A7)+,D7
- BRA.S L07A08
- L07A1A MOVEA.L 0(A6,A5.L),A0
- MOVE.L (A6),BV_BFP(A6)
- TST.B D7
- SGT D0
- SUBA.L BV_TKBAS(A6),A3 ;token list
- SUBA.L BV_TKBAS(A6),A4 ;token list
- SUBA.L BV_TKBAS(A6),A5 ;token list
- MOVEM.L A3-A5,-(A7)
- BSR.S L079C4
- MOVEM.L (A7)+,A3-A5
- ADDA.L 8(A6),A3
- ADDA.L 8(A6),A4
- ADDA.L 8(A6),A5
- BNE.S L07A14
- MOVE.L A3,-(A7)
- MOVEQ #$13,D0 ;SD.PCOL position cursor on
- ;previous column
- TRAP #3
- MOVEQ #$14,D0 ;SD.NCOL position cursor on
- ;next column
- TRAP #3
- MOVEA.L (A7)+,A3
- MOVEA.L (A6),A0
- MOVE.L A1,D7
- MOVEA.L BV_RIP(A6),A1 ;arith stack
- MOVE.W (A7)+,D0
- SUBQ.B #2,D0
- BLT.S L07A74
- BEQ.S L07A6C
- JSR CN_DTOI(PC) ;*/undomodify BSR CN_DTOI
- BRA.S L07A70
- L07A6C JSR CN_DTOF(PC) ;*/undomodify BSR CN_DTOF
- L07A70 BNE.S L07A16
- BRA.S L07A7C
- L07A74 MOVEA.L D7,A0
- SUBQ.W #1,A0
- JSR L05A20(PC) ;*/undomodify BSR L05A20
- L07A7C MOVE.L A1,BV_RIP(A6) ;arith stack
- SUBA.L BV_CHBAS(A6),A5 ;channel name
- JSR BP_LET(PC) ;*/undomodify BSR BP_LET
- ADDA.L BV_CHBAS(A6),A5 ;channel name
- BRA.S L07A16
- L07A8E MOVE.B 0(A6,A3.L),D0
- SUBQ.B #2,D0
- BLE.S L07AC0
- SUBQ.B #1,D0
- BNE.S L07AB8
- MOVE.B 1(A6,A3.L),D0
- ANDI.B #$0F,D0
- SUBQ.B #1,D0
- BGT.S L07AC8
- MOVEA.L 4(A6,A3.L),A2
- ADDA.L BV_VVBAS(A6),A2 ;variable values
- CMPI.W #1,4(A6,A2.L)
- BGT.S L07AC8
- BRA.S L07AC0
- L07AB8 SUBQ.B #3,D0
- BLT.S L07AC4
- SUBQ.B #1,D0
- BGT.S L07AC4
- L07AC0 MOVEQ #0,D0
- RTS
- L07AC4 MOVEQ #-12,D0 ;bad name
- RTS
- L07AC8 MOVEQ #-19,D0 ;not implemented
- RTS
- BAS_RECOl:
- JSR L08038(PC) ;*/undomodify BSR L08038
- BNE.S L07AF4
- CMPI.W #8,D3
- BNE.S L07AF2
- MOVEA.L A1,A2
- MOVEQ #$07,D0
- L07ADC MOVE.B $01(A6,A2.L),$01(A6,A1.L)
- SUBQ.W #2,A2
- SUBQ.W #1,A1
- DBF D0,L07ADC
- ADDQ.W #2,A1
- MOVEQ #$26,D4
- JMP L07FC4(PC) ;*/undomodify BRA L07FC4
- L07AF2 MOVEQ #-$0F,D0
- L07AF4 RTS
- BAS_EDIT:
- MOVEQ #0,D4
- BRA.S L07AFC
- BAS_AUTO:
- MOVEQ #$0A,D4
- L07AFC ST BV_AUTO(A6) ;AUTO/EDIT on ($ff) or off (0)
- TST.B BV_UNRVL(A6) ;Need to unravel
- ;($ff) or not (0)
- BNE.S L07B32
- BRA.S L07B26
- L07B08 MOVEQ #0,D5
- CMPA.L $0004(A7),A3
- BEQ.S L07B20
- JSR L07452(PC) ;*/undomodify BSR L07452
- BEQ.S L07B20
- JSR L074F0(PC) ;*/undomodify BSR L074F0
- BEQ.S L07B22
- ADDQ.W #4,A7
- BRA.S L07B84
- L07B20 MOVEQ #$01,D0
- L07B22 RTS
- BAS_RENUm:
- MOVEQ #$0A,D4
- L07B26 JSR L07E30(PC) ;*/undomodify BSR L07E30
- BEQ.S L07B32
- ST $00B8(A6)
- RTS
- L07B32 MOVE.L A5,-(A7)
- MOVE.W #$7FFF,D7
- MOVEQ #$64,D6
- SWAP D4
- BSR.S L07B08
- CMPI.B #$05,D5
- BNE.S L07B5A
- TST.B D0
- BNE.S L07B4A
- MOVE.W D1,D4
- L07B4A BSR.S L07B08
- CMPI.B #$02,D5
- BNE.S L07B84
- TST.B D0
- BNE.S L07B66
- MOVE.W D1,D7
- BRA.S L07B66
- L07B5A CMPI.B #$02,D5
- BNE.S L07B68
- TST.B D0
- BNE.S L07B66
- MOVE.W D1,D4
- L07B66 BSR.S L07B08
- L07B68 TST.B D0
- BNE.S L07B6E
- MOVE.W D1,D6
- L07B6E SWAP D4
- CMPI.B #$01,D5
- BNE.S L07B7C
- BSR.S L07B08
- BNE.S L07B7C
- MOVE.W D1,D4
- L07B7C MOVE.W D4,D3
- SWAP D4
- TST.B D5
- BEQ.S L07B94
- L07B84 SF BV_AUTO(A6) ;AUTO/EDIT on ($ff) or off (0)
- ADDQ.W #4,A7
- MOVEQ #-$0F,D0
- RTS
- L07B8E ADDQ.W #2,A7
- MOVEQ #-$04,D0
- RTS
- L07B94 MOVE.W D7,D5
- ADDQ.W #4,A7
- TST.B BV_AUTO(A6) ;AUTO/EDIT on ($ff) or off (0)
- BEQ.S L07BAA
- MOVE.W D6,BV_EDLIN(A6) ;line # to edit next
- MOVE.W D3,BV_EDINC(A6) ;Increment on edit range
- L07BA6 MOVEQ #0,D0
- RTS
- L07BAA MOVEA.L BV_PFBAS(A6),A4 ;program file
- CMPA.L BV_PFP(A6),A4 ;program running ptr
- BGE.S L07BA6
- CLR.W -(A7)
- CLR.L BV_LINUM(A6) ;current line #
- TST.W D4
- BEQ.S L07BD8
- JSR L09FBE(PC) ;*/undomodify BSR L09FBE
- CMPA.L (A6),A4
- BEQ.S L07BD8
- SUBA.W BV_LENGTH(A6),A4 ;current length
- MOVE.W $02(A6,A4.L),D2
- CMP.W D2,D6
- BLE.S L07B8E
- ADDA.W BV_LENGTH(A6),A4 ;current length
- MOVE.W D2,(A7)
- L07BD8 MOVEQ #0,D0
- L07BDA ADDQ.W #1,D0
- BSR.S L07C4E
- BEQ.S L07BDA
- BGT.S L07BE6
- MOVE.W #$7FFF,D2
- L07BE6 MOVE.L D0,D1
- SUBQ.W #1,D1
- MULU D3,D1
- ADD.L D6,D1
- EXT.L D2
- CMP.L D2,D1
- BGE.S L07B8E
- MOVE.W D2,-(A7)
- MOVEQ #$02,D1
- ADD.L D0,D1
- LSL.L #2,D1
- JSR L04DF6(PC) ;*/undomodify BSR L04DF6
- MOVEA.L A0,A3
- SUBA.L BV_VVBAS(A6),A3 ;variable values
- MOVE.L D1,0(A6,A0.L)
- SUBA.W BV_LENGTH(A6),A4 ;current length
- MOVE.W 2(A6,A4.L),BV_LINUM(A6) ;current line #
- ADDA.W BV_LENGTH(A6),A4 ;current length
- JSR L09FBE(PC) ;*/undomodify BSR L09FBE
- BSR L07D56
- MOVE.W D6,D0
- MOVE.W 4(A6,A4.L),D2
- MOVE.W 2(A7),D6
- SWAP D4
- L07C2C MOVE.W D2,0(A6,A0.L)
- MOVE.W D0,2(A6,A0.L)
- MOVE.W D0,4(A6,A4.L)
- ADDQ.W #4,A0
- ADD.W D4,D0
- BSR.S L07C4E
- BEQ.S L07C2C
- MOVE.W (A7),D5
- MOVE.W D5,0(A6,A0.L)
- MOVE.W D5,$02(A6,A0.L)
- ADDQ.W #4,A7
- BRA.S L07C7A
- L07C4E 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
- CMPA.L BV_PFP(A6),A4 ;program running ptr
- BGE.S L07C72
- MOVE.W 4(A6,A4.L),D2
- CMP.W D2,D5
- BLT.S L07C6E
- MOVEQ #0,D1
- RTS
- L07C6E MOVEQ #1,D1
- RTS
- L07C72 MOVEQ #-1,D1
- RTS
- L07C76 JMP L0A56C(PC) ;*/undomodify BRA L0A56C
- L07C7A ST BV_EDIT(A6) ;Program has been
- ;edited ($ff) or not (0)
- JSR L0958E(PC) ;*/undomodify BSR L0958E
- BRA.S L07C8A
- L07C84 JSR L0A60E(PC) ;*/undomodify BSR L0A60E
- BNE.S L07D06
- L07C8A BSR.S L07C76
- CMPI.W #$8111,D1
- BEQ.S L07CB2
- CMPI.W #$810A,D1
- BEQ.S L07CAE
- CMPI.W #$8115,D1
- BNE.S L07C84
- L07C9E JSR L09072(PC) ;*/undomodify BSR L09072
- JSR L09686(PC) ;*/undomodify BSR L09686
- BEQ.S L07C84
- CMPI.W #$810A,D1
- BNE.S L07C9E
- L07CAE ADDQ.W #2,A4
- BSR.S L07C76
- L07CB2 ADDQ.W #2,A4
- BSR.S L07C76
- CMPI.W #$840A,D1
- BEQ.S L07C84
- SUBI.W #$F000,D1
- BGE.S L07CCE
- L07CC2 MOVE.W #$8404,D4
- JSR L0A5E0(PC) ;*/undomodify BSR L0A5E0
- BNE.S L07C84
- BRA.S L07CB2
- L07CCE MOVEA.L BV_RIP(A6),A1 ;arith stack
- SUBQ.W #6,A1
- MOVE.W D1,0(A6,A1.L)
- MOVE.L 2(A6,A4.L),2(A6,A1.L)
- JSR RI_NINT(PC) ;*/undomodify BSR RI_NINT
- MOVE.W 0(A6,A1.L),D1
- BSR.S L07D60
- BLE.S L07CC2
- MOVE.W D1,0(A6,A1.L)
- JSR RI_FLOAT(PC) ;*/undomodify BSR RI_FLOAT
- MOVE.W 0(A6,A1.L),D0
- ADDI.W #$F000,D0
- MOVE.W D0,0(A6,A4.L)
- MOVE.L $02(A6,A1.L),$02(A6,A4.L)
- BRA.S L07CC2
- L07D06 MOVE.W BV_LSBEF(A6),D1 ;Invisible top line
- BSR.S L07D60
- MOVE.W D1,BV_LSBEF(A6) ;Invisible top line
- MOVE.W BV_LSBAS(A6),D1 ;Bottom line in window
- BSR.S L07D60
- MOVE.W D1,BV_LSBAS(A6) ;Bottom line in window
- MOVE.W BV_LSAFT(A6),D1 ;Invisible bottom line
- BSR.S L07D60
- MOVE.W D1,BV_LSAFT(A6) ;Invisible bottom line
- MOVEA.L BV_LNBAS(A6),A1 ;line # table
- MOVE.W 0(A6,A1.L),D1
- BSR.S L07D60
- MOVE.W D1,0(A6,A1.L)
- ST BV_CONT(A6) ;continue ($80) or stop (0)
- BSR.S L07D56
- SUBQ.W #4,A0
- MOVE.L 0(A6,A0.L),D1
- JSR L04FE8(PC) ;*/undomodify BSR L04FE8
- MOVEQ #0,D2
- MOVEQ #0,D5
- SUBA.L A0,A0
- JSR L090A2(PC) ;*/undomodify BSR L090A2
- MOVEA.L D0,A0
- JSR L08FE6(PC) ;*/undomodify BSR L08FE6
- MOVEQ #0,D0
- RTS
- L07D56 MOVEA.L BV_VVBAS(A6),A0 ;variable values
- ADDA.L A3,A0
- ADDQ.W #4,A0
- RTS
- L07D60 CMP.W D6,D1
- BLE.S L07D76
- CMP.W D1,D5
- BLT.S L07D76
- BSR.S L07D56
- L07D6A CMP.W 0(A6,A0.L),D1
- ADDQ.W #4,A0
- BGT.S L07D6A
- MOVE.W -$02(A6,A0.L),D1
- L07D76 RTS
- BAS_REPOrt:
- MOVEQ #0,D1
- JSR L065E8(PC) ;*/undomodify BSR L065E8
- MOVE.L $C2(A6),D0 ;Not listet in Adrian
- ;Dickens !!!
- MOVE.W BV_LINUM(A6),-(A7) ;current line #
- MOVE.W $C6(A6),BV_LINUM(A6) ;make ??? the current line
- ;number
- JSR L09BDC(PC) ;*/undomodify BSR L09BDC
- MOVE.W (A7)+,BV_LINUM(A6) ;get back old line #
- MOVEQ #0,D0
- RTS
- BAS_CLEAr:
- MOVEQ #0,D6
- MOVEQ #0,D0
- MOVE.W #$FFFF,BV_NXLIN(A6) ;line # to start after
- BRA.S L07DE0
- BAS_RUN:
- JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
- BNE.S L07E1E
- MOVEQ #$06,D6
- MOVE.W D7,BV_NXLIN(A6) ;line # to start after
- SUBQ.W #1,D3
- BLT.S L07E14
- BEQ.S L07DBA
- MOVEQ #-$0F,D0
- RTS
- L07DBA MOVE.W 0(A6,A1.L),BV_NXLIN(A6) ;line # to after
- MOVE.B D7,$8A(A6) ;which statement to start
- ;after
- ADDQ.L #2,BV_RIP(A6) ;arith stack
- BRA.S L07E14
- BAS_MERGe:
- BSR.S L07E30
- MOVEQ #$0E,D6
- TST.B $6F(A6) ;single line execution on
- ;or off ?
- BNE.S L07DF6
- BAS_MRUN:
- BSR.S L07E30
- MOVEQ #$0C,D6
- BSR.S L07E20
- BNE.S L07E0E
- MOVE.W D7,BV_NXLIN(A6) ;line # to start after
- L07DE0 TST.B $6F(A6) ;single line execution on
- ;or off ?
- BNE.S L07E14
- MOVE.W BV_LINUM(A6),BV_NXLIN(A6) ;current line # ->
- ;line to start
- MOVE.B $6C(A6),$8A(A6) ;current statement on line
- ;-> statement
- BRA.S L07E14 ;to start after
- BAS_LOAD:
- MOVEQ #$0A,D6
- L07DF6 BSR.S L07E20
- BRA.S L07E0E
- BAS_LRUN:
- MOVEQ #$08,D6
- BSR.S L07E20
- BNE.S L07E0E
- MOVE.W D7,BV_NXLIN(A6) ;line # to start after
- BRA.S L07E14
- BAS_NEW:
- MOVEQ #$02,D6
- BRA.S L07E0C
- BAS_STOP:
- MOVEQ #$04,D6
- L07E0C MOVEQ #0,D0
- L07E0E MOVE.W #$FFFF,BV_NXLIN(A6) ;line # to start after
- L07E14 SF BV_CONT(A6) ;STOP processing flag
- MOVE.W D6,$8C(A6) ;which stop number set
- TST.L D0
- L07E1E RTS
-
- ; --------------------------------------------------------------
- ;*/beginoverlay
-
- L07E20:
- bra L07E20fix
-
- ;*/removecode MOVEQ #$01,D4
- ;*/removecode JSR L069C4(PC)
- ;*/removecode BNE.S L07E1E
- ;*/removecode MOVE.L A0,BV_COMCH(A6) ;Command channel
- ;*/removecode MOVEQ #0,D0
- ;*/removecode RTS
-
- NOP07E30:
- DCB.w ($7E30-(NOP07E30-ORGN))/2,$4E71
-
- ;*/endoverlay
- ; --------------------------------------------------------------
-
- L07E30 TST.B BV_UNRVL(A6) ;Need to unravel
- ;($ff) or not (0)
- BNE.S L07E44
- MOVE.L BV_RTP(A6),D0 ;return table running ptr
- SUB.L BV_RTBAS(A6),D0 ;return table
- BEQ.S L07E44
- ADDQ.W #4,A7
- MOVEQ #-$13,D0
- L07E44 RTS
- BAS_RETRy:
- SUBQ.B #1,BV_CNSTM(A6) ;Statement to continue from
- BGE.S BAS_CONTinue
- SF BV_CNSTM(A6) ;Statement to CONTINUE from
- BAS_CONTinue:
- SF $C0(A6) ;not documented !!!
- MOVEQ #$10,D6
- BRA.S L07E0C
- BAS_TRA:
- JSR CA_GTLIN(PC) ;*/undomodify BSR CA_GTLIN
- BNE.S L07E8A
- CLR.L D2
- SUBQ.W #1,D3
- BEQ.S L07E78
- SUBQ.W #1,D3
- BNE.S L07E8C
- ADDQ.L #4,BV_RIP(A6) ;arith stack
- MOVE.L 4(A6,A1.L),D2
- BNE.S L07E78
- RLOC0D MOVE.L #(MSG_LIST-ORG0),D2 ;*/modify MOVE.L $BFE6,D2
- ;error message pointers
- L07E78 ADDQ.L #4,BV_RIP(A6) ;arith stack
- MOVE.L 0(A6,A1.L),D1
- MOVEQ #$24,D0 ;not defined in advanced
- ;user guide !!!!!!
- TRAP #1
- TST.L D0
- BMI.S L07E8C
- MOVEQ #0,D0
- L07E8A RTS
- L07E8C:
- MOVEQ #-15,D0 ;Bad parameter
- RTS
- ; --------------------------------------------------------------
- ;*/beginundoinsert
- ; Procedure to disable the Directory device driver search list
- CLR_SEALst:
- ; BSET #0,$28002
- ; MOVEQ #0,D0
- ; RTS
- ; Procedure to enable Overflow error on arithmetic operations
- OV_ON:
- ; BCLR #1,$28002
- ; MOVEQ #0,D0
- ; RTS
- ; Procedure to disable Overflow error on arithmetic operations
- OV_OFF:
- ; BSET #1,$28002
- ; MOVEQ #0,D0
- ; RTS
- ;*/endundoinsert
- ; --------------------------------------------------------------
- TURNTO:
- BSR L07F24
- BNE.S L07ED0
- BRA.S L07EA6
- TURN:
- BSR L07F24
- BNE.S L07ED0
- BSR L07F42
- JSR RI_ADD(PC) ;*/undomodify BSR RI_ADD
- L07EA6 LEA L07F52(PC),A3 ;table for TURN operations
- LEA $0006(A1),A4
- SUBQ.W #6,A1
- MOVE.W #$0809,0(A6,A1.L)
- MOVE.L #$5A000000,$02(A6,A1.L)
- JSR RI_EXECB(PC) ;*/undomodify BSR RI_EXECB
- MOVE.W 0(A6,A1.L),$10(A6,A2.L)
- MOVE.L $02(A6,A1.L),$12(A6,A2.L)
- L07ECE MOVEQ #0,D0
- L07ED0 RTS
- BAS_PENUp:
- MOVEQ #0,D4
- BRA.S L07ED8
- BAS_PENDown:
- MOVEQ #$01,D4
- L07ED8 JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
- BNE.S L07ED0
- MOVE.B D4,$16(A6,A2.L)
- BRA.S L07ECE
- BAS_MOVE:
- BSR.S L07F24
- BNE.S L07F22
- BSR.S L07F42
- SUBQ.W #6,A1
- MOVE.W #$07FB,0(A6,A1.L)
- MOVE.L #$477D1A89,$02(A6,A1.L)
- JSR RI_MULT(PC) ;*/undomodify BSR RI_MULT
- JSR L06D6E(PC) ;*/undomodify BSR L06D6E
- JSR L06D7E(PC) ;*/undomodify BSR L06D7E
- LEA L07F5A(PC),A3
- LEA $0018(A1),A4
- JSR RI_EXECB(PC) ;*/undomodify BSR RI_EXECB
- JSR L06D8E(PC) ;*/undomodify BSR L06D8E
- TST.B $16(A6,A2.L)
- BEQ.S L07ECE
- MOVEQ #$31,D0 ;SD.LINE plots a line
- TRAP #4
- TRAP #3
- L07F22 RTS
- L07F24 MOVE.W #$100,D1
- JSR BV_CHRIX(PC) ;*/undomodify BSR BV_CHRIX
- JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
- BNE.S L07F40
- MOVE.L BV_RIP(A6),-(A7) ;arith stack
- JSR GET_REAL(PC) ;*/undomodify BSR GET_REAL
- MOVE.L (A7)+,BV_RIP(A6) ;arith stack
- TST.L D0
- L07F40 RTS
- L07F42 SUBQ.W #6,A1
- MOVE.W $10(A6,A2.L),0(A6,A1.L)
- MOVE.L $12(A6,A2.L),$02(A6,A1.L)
- RTS
- L07F52 ;table for TURN operations
- DC.L $FAF41004,$080E0C00
- L07F5A DC.L $FAF4180E,$EE0AFAF4,$1A0EE80A
- DC.W 0
- BAS_WIDTh:
- JSR L08038(PC) ;*/undomodify BSR L08038
- BNE.S L07F78
- SUBQ.W #1,D3
- BNE.S L07F7A
- MOVE.W 0(A6,A1.L),$22(A6,A2.L)
- L07F78 RTS
- L07F7A:
- MOVEQ #-15,D0
- RTS
- BAS_WINDow:
- JSR L08038(PC) ;*/undomodify BSR L08038
- BNE.S L07FA2
- MOVEQ #$0D,D4
- MOVEQ #-$80,D1
- CLR.W D2
- BRA.S L07F9C
- BAS_BLOCk:
- JSR L08038(PC) ;*/undomodify BSR L08038
- BNE.S L07FA2
- MOVEQ #$2E,D4 ;SD.FILL fill rectangular
- ;block within window
- SUBQ.W #4,D3
- JSR L07FD4(PC) ;*/undomodify BSR.S L07FD4
- ;*/undomodify nop
- BNE.S L07FA2
- L07F9C:
- SUBQ.W #6,A1
- JMP L07FC4(PC) ;*/undomodify BRA.S L07FC4
- ;*/undomodify nop
- L07FA2:
- RTS
- BAS_BORDer:
- JSR L08038(PC) ;*/undomodify BSR L08038
- BNE.S L07FA2
- MOVEQ #$0C,D4 ;SD.BORDR sets the border
- ;width and colour
- MOVEQ #-$80,D1
- CMPI.W #1,D3
- BLS.S L07FBC
- SUBQ.W #1,D3
- JSR L07FD4(PC) ;*/undomodify BSR.S L07FD4
- ;*/undomodify nop
- BNE.S L07FA2
- L07FBC:
- MOVE.W 0(A6,A1.L),D2
- JMP L07FC4(PC) ;*/undomodify nop
- ;*/undomodify nop
- L07FC4:
- MOVE.L D4,D0
- MOVEQ #-1,D3
- MOVE.L A1,-(A7)
- TRAP #4
- TRAP #3
- MOVEA.L (A7)+,A1
- TST.L D0
- RTS
- L07FD4 MOVE.W 0(A6,A1.L),D1
- SUBQ.L #2,A1
- SUBQ.W #1,D3
- BEQ.S L0801A
- CMPI.W #$07,D1
- BHI.S L08024
- ORI.W #$18,D1
- CMPI.W #$01,D3
- BEQ.S L08004
- ANDI.W #$0007,D1
- MOVE.W 0(A6,A1.L),D2
- SUBQ.L #2,A1
- SUBQ.W #1,D3
- LSL.W #3,D1
- CMPI.W #$0007,D2
- BHI.S L08024
- OR.W D2,D1
- L08004 MOVE.W 0(A6,A1.L),D2
- SUBQ.L #2,A1
- SUBQ.W #1,D3
- BNE.S L08024
- CMPI.W #$0007,D2
- BHI.S L08024
- EOR.W D2,D1
- LSL.W #3,D1
- OR.W D2,D1
- L0801A CMPI.W #$00FF,D1
- BHI.S L08024
- L08020 MOVEQ #0,D0
- RTS
- L08024 MOVEQ #-$0F,D0
- RTS
- L08028 CMPI.W #$0001,D3
- BNE.S L08024
- MOVE.W 0(A6,A1.L),D1
- CMP.W D3,D1
- BHI.S L08024
- BRA.S L08020
- L08038 JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
- BNE.S L08052
- SEA_PARA ;search for parameter
- JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
- BNE.S L08052
- ADD.L D3,D3
- ADD.L D3,BV_RIP(A6) ;arith stack
- ADDA.L D3,A1
- SUBQ.L #2,A1
- LSR.W #1,D3
- MOVEQ #0,D0
- L08052 RTS
- BAS_ACOS:
- LEA RI_ACOS(PC),A4
- BRA.S L080C6
- BAS_ACOT:
- LEA RI_ACOT(PC),A4
- BRA.S L080C6
- BAS_ASIN:
- LEA RI_ASIN(PC),A4
- BRA.S L080C6
- BAS_ATAN:
- LEA RI_ATAN(PC),A4
- BRA.S L080C6
- BAS_COS:
- LEA RI_COS(PC),A4
- BRA.S L080C6
- BAS_COT:
- LEA RI_COT(PC),A4
- BRA.S L080C6
- BAS_EXP:
- LEA RI_EXP(PC),A4
- BRA.S L080C6
- BAS_LN:
- LEA RI_LN(PC),A4
- BRA.S L080C6
- BAS_LOG10:
- LEA RI_LOG10(PC),A4
- BRA.S L080C6
- BAS_SIN:
- LEA RI_SIN(PC),A4
- BRA.S L080C6
- BAS_SQRT:
- LEA RI_SQRT(PC),A4
- BRA.S L080C6
- BAS_TAN:
- LEA RI_TAN(PC),A4
- BRA.S L080C6
- BAS_DEG:
- LEA RI_DIV(PC),A4
- BRA.S L080A6
- BAS_RAD:
- LEA RI_MULT(PC),A4
- L080A6 JSR GET_REAL(PC) ;*/undomodify BSR GET_REAL
- BNE.S L080DE
- BSR L08162
- SUBQ.W #6,A1
- MOVE.W #$07FB,0(A6,A1.L)
- MOVE.L #$477D1A89,$02(A6,A1.L)
- BRA.S L080D6
- BAS_ABS:
- LEA RI_ABS(PC),A4
- L080C6 JSR GET_REAL(PC) ;*/undomodify BSR GET_REAL
- BNE.S L080DE
- MOVEQ #$30,D1
- JSR BV_CHRIX(PC) ;*/undomodify BSR BV_CHRIX
- MOVEA.L BV_RIP(A6),A1 ;arith stack
- L080D6 JSR (A4)
- L080D8 MOVEQ #$02,D4
- L080DA MOVE.L A1,BV_RIP(A6) ;arith stack
- L080DE RTS
- L080E0:
- MOVEQ #$03,D4
- MOVEQ #0,D0
- BRA.S L080DA
- L080E6:
- ADDQ.W #4,A7 ;*/note never called!!!
- RTS
- BAS_RND:
- MOVEQ #$01,D5
- OR.L BV_RAND(A6),D5 ;Random number
- MOVE.L D5,D6
- MULU #$0163,D5
- SWAP D6
- MULU #$0163,D6
- SWAP D6
- CLR.W D6
- ADD.L D6,D5
- MOVE.L D5,BV_RAND(A6) ;New random number
- JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
- BNE.S L080DE
- SUBQ.W #1,D3
- BEQ.S L0812A
- BGT.S L08124
- BSR.L L08162 ;*/undomodify BSR.S L08162
- ;*/undomodify nop
- MOVE.L D5,D1
- LSR.L #1,D1
- MOVE.W #$0800,D0
- L0811E JSR L04830(PC) ;*/undomodify BSR L04830
- BRA.S L080D8
- L08124 MOVE.W 0(A6,A1.L),D3
- ADDQ.W #2,A1
- L0812A MOVE.W 0(A6,A1.L),D2
- SUB.W D3,D2
- BLT.S L0819E
- ADDQ.W #1,D2
- SWAP D5
- MULU D2,D5
- SWAP D5
- ADD.W D3,D5
- L0813C MOVE.W D5,0(A6,A1.L)
- BRA.S L080E0
- BAS_PI:
- CMPA.L A3,A5
- BNE.S L0819E
- BSR.S L08162
- MOVE.W #$0802,D0
- MOVE.L #$6487ED51,D1
- BRA.S L0811E
- BAS_INT:
- JSR GET_INT4(PC) ;*/undomodify BSR GET_INT4
- BNE.S L080DE
- MOVE.L 0(A6,A1.L),D1
- ADDQ.W #4,A1
- BRA.S L08186
- L08162 JSR L04E4C(PC) ;*/undomodify BSR L04E4C
- MOVEA.L BV_RIP(A6),A1 ;arith stack
- RTS
- BAS_PEEK:
- BSR.S L0818C
- MOVEQ #0,D5
- MOVE.B (A4),D5
- BRA.S L0817A
- PEEK_W:
- BSR.S L0818C
- BCS.S L0819E
- MOVE.W (A4),D5
- L0817A ADDQ.W #2,A1
- BRA.S L0813C
- PEEK_L:
- BSR.S L0818C
- BCS.S L0819E
- MOVE.L (A4),D1
- L08184 ADDQ.W #4,A1
- L08186 MOVE.W #$081F,D0
- BRA.S L0811E
- L0818C JSR GET_INT4(PC) ;*/undomodify BSR GET_INT4
- BNE L0821A
- MOVEA.L 0(A6,A1.L),A4
- MOVE.L A4,D1
- ROR.W #1,D1
- RTS
- L0819E MOVEQ #-$0F,D0
- L081A0 RTS
- BAS_RESPr:
- BSR.S L0818C
- MOVEQ #$0E,D0 ;MT.ALRES allocate resident
- ;procedure area
- MOVE.L 0(A6,A1.L),D1
- MOVEA.L A1,A4
- TRAP #1
- MOVE.L A0,D1
- MOVEA.L A4,A1
- TST.L D0
- BEQ.S L08184
- BRA.S L081A0
- L081B8:
- ; --------------------------------------------------------------
- ;*/beginfilling
- ;*/removecode BEEPING:
- ;*/removecode CMPA.L A3,A5
- ;*/removecode BNE.S L0819E
- ;*/removecode BSR.S L08162
- ;*/removecode MOVEQ #1,D1
- ;*/removecode AND.B $28096,D1 ;Sound status
- ;*/removecode BRA.S L08186
-
- NOP081C8:
- DCB.w ($81C8-(NOP081C8-ORGN))/2,$4E71
-
- ;*/endfilling
- ; --------------------------------------------------------------
- L081C8:
- BAS_EOF:
- CMPA.L A3,A5
- BNE.S L081D6
- JSR L066FA(PC) ;*/undomodify BSR L066FA
- SUBQ.B #1,$97(A6) ;next DATA item to read
- BRA.S L081E0
- L081D6 BSR L0825A
- MOVEQ #0,D0 ;IO.PEND check for pending
- ;input
- MOVEQ #0,D3
- TRAP #3
- L081E0:
- MOVEQ #-$0A,D4
- SUB.L D0,D4
- BSR L08162
- MOVEQ #0,D1
- TST.L D4
- BNE.S L08186
- MOVEQ #$01,D1
- BRA.S L08186
- BAS_VER:
- CMPA.L A3,A5
- BNE.S L0819E
- BSR L08162
- SUBQ.W #4,A1 ;*/modify SUBQ.W #6,A1
- MOVE.W #2,0(A6,A1.L) ;*/modify MOVE.L $BFFA,0( )
- nop ;*/modify
- MOVE.W #'JS',2(A6,A1.L) ;*/modify MOVE.W $BFFE,4( )
- nop ;*/modify
- BRA.S L08252
- BAS_INKEy:
- BSR.S L0825A
- MOVE.L A0,-(A7)
- BSR L08162
- JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
- L0821A:
- BNE.S L08262
- MOVEA.L (A7)+,A0
- CMPI.W #$0001,D3
- BGT L0819E
- BLT.S L0822E
- MOVE.W 0(A6,A1.L),D3
- ADDQ.W #2,A1
- L0822E MOVEA.L A1,A4
- MOVEQ #1,D0 ;IO.FBYTE fetch a byte
- TRAP #3
- MOVEA.L A4,A1
- ADDQ.L #1,D0
- BEQ.S L0824C
- SUBQ.L #1,D0
- BNE.S L08264
- SUBQ.W #4,A1
- L08240 MOVE.B D1,2(A6,A1.L)
- MOVE.W #1,0(A6,A1.L)
- BRA.S L08252
- L0824C SUBQ.W #2,A1
- CLR.W 0(A6,A1.L)
- L08252 MOVEQ #$01,D4
- MOVEQ #0,D0
- BRA L080DA
- L0825A MOVEQ #0,D1
- JSR L065E8(PC) ;*/undomodify BSR L065E8
- BEQ.S L08264
- L08262 ADDQ.W #4,A7
- L08264 RTS
- BAS_CHR:
- BSR L08162
- JSR GET_INT2(PC) ;*/undomodify BSR GET_INT2
- BNE.S L08264
- MOVE.W 0(A6,A1.L),D1
- SUBQ.W #2,A1
- BRA.S L08240
- FILLstr:
- SUBQ.W #8,A5
- BSR.S L082CE
- BEQ L0819E
- SUBQ.L #1,D1
- BGT.S L0828A
- MOVE.B $02(A6,A1.L),$03(A6,A1.L)
- L0828A MOVE.W $02(A6,A1.L),D5
- ADDQ.L #4,D1
- BCLR #0,D1
- ADDA.L D1,A1
- MOVE.L A1,BV_RIP(A6) ;arith stack
- MOVEA.L A5,A3
- ADDQ.W #8,A5
- JSR GET_INT2(PC) ;*/undomodify BSR GET_INT2
- BNE.S L08264
- ADDQ.L #2,BV_RIP(A6) ;arith stack
- MOVEQ #0,D4
- MOVE.W 0(A6,A1.L),D4
- BLT L0819E
- BEQ.S L08252
- MOVE.L D4,D1
- BSR.S L082F2
- L082B8 SUBQ.W #2,A1
- MOVE.W D5,0(A6,A1.L)
- SUBQ.L #2,D1
- BGT.S L082B8
- MOVE.W D4,0(A6,A1.L)
- BRA.S L08252
- BAS_LEN:
- BSR.S L082CE
- MOVE.W D1,D5
- BRA.S L082E6
- L082CE JSR GET_STR(PC) ;*/undomodify BSR GET_STR
- BNE.S L08262
- MOVEQ #0,D5
- MOVEQ #0,D1
- MOVE.W 0(A6,A1.L),D1
- RTS
- BAS_CODE:
- BSR.S L082CE
- BEQ.S L082EE
- MOVE.B $02(A6,A1.L),D5
- L082E6 ADDQ.L #1,D1
- BCLR #0,D1
- ADDA.L D1,A1
- L082EE BRA L0813C
- L082F2 ADDQ.L #3,D1
- BCLR #0,D1
- MOVE.L D1,-(A7)
- JSR BV_CHRIX(PC) ;*/undomodify BSR BV_CHRIX
- MOVEA.L BV_RIP(A6),A1 ;arith stack
- MOVE.L (A7)+,D1
- L08304 RTS
- BAS_DIMN:
- MOVE.B 0(A6,A3.L),D1
- SUBQ.B #3,D1
- BNE.S L0834E
- MOVE.L A3,-(A7)
- ADDQ.W #8,A3
- JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
- MOVEA.L (A7)+,A3
- BNE.S L08304
- SUBQ.W #1,D3
- BGT.S L08304
- BEQ.S L08328
- BSR.S L0836A
- SUBQ.W #2,A1
- MOVEQ #$01,D1
- BRA.S L0832E
- L08328 MOVE.W 0(A6,A1.L),D1
- BLE.S L08352
- L0832E MOVEA.L $04(A6,A3.L),A2
- ADDA.L BV_VVBAS(A6),A2 ;variable values
- MOVE.W $04(A6,A2.L),D2
- SUB.W D1,D2
- BLT.S L08352
- ADDQ.W #2,A2
- LSL.W #2,D1
- ADDA.W D1,A2
- MOVE.W 0(A6,A2.L),0(A6,A1.L)
- BRA L080E0
- L0834E BSR.S L0836A
- SUBQ.W #2,A1
- L08352 MOVEQ #0,D5
- BRA.S L082EE
- BAS_IDATe:
- CMPA.L A3,A5
- BNE L0819E
- BSR.S L0836A
- MOVEQ #$13,D0 ;MT.RCLCK reads the clock
- TRAP #1
- BCLR #$1F,D1
- BRA L08186
- L0836A BRA L08162
- L0836E:
- ; --------------------------------------------------------------
- ;*/beginoverlay
- BAS_KEYRow:
- JSR GET_INT2(PC) ;*/undomodify BSR GET_INT2
- SUBQ.W #8,A7
- BNE.S L083B0
- MOVEA.L A7,A3
- MOVE.B #9,(A3) ;IPC read keyboard row
- MOVE.B #1,1(A3) ;one parameter
- clr.l 2(a3) ;*/modify MOVE.L #0,2(A3)
- MOVE.B 1(A6,A1.L),6(A3) ;row number
- MOVE.B #2,7(A3)
- MOVE.L A1,-(A7)
- MOVEQ #$11,D0 ;MT.IPCOM sends a command
- ;(A3) to IPC
- TRAP #1
- MOVEA.L (A7)+,A1
- MOVE.W D1,0(A6,A1.L)
- MOVEQ #$03,D4
- moveq #MT.INF,d0 ;*/modify
- trap #1 ;*/modify
- move.l SV_KEYQ(a0),a2 ;*/modify MOVEA.L $0002804C,A2
- MOVE.L Q_NXTOUT(A2),Q_NEXTIN(A2)
- L083B0 ADDQ.W #8,A7
- RTS
-
- NOP083B4:
- DCB.w ($83B4-(NOP083B4-ORGN))/2,$4E71
-
- ;*/endoverlay
- ; --------------------------------------------------------------
- L083B4:
- BAS_DATE:
- LEA CN_DATE(PC),A4
- BRA.S L083BE
- BAS_DAY:
- LEA CN_DAY(PC),A4
- L083BE JSR L04E4C(PC) ;*/undomodify BSR L04E4C
- CMPA.L A3,A5
- BLE.S L083D4
- JSR GET_INT4(PC) ;*/undomodify BSR GET_INT4
- BNE.S L083E6
- MOVE.L 0(A6,A1.L),D1
- ADDQ.L #4,A1
- BRA.S L083DC
- L083D4 MOVEQ #$13,D0 ;MT.RCLCK reads the clock
- ;-> D1
- TRAP #1
- MOVEA.L BV_RIP(A6),A1 ;arith stack
- L083DC JSR (A4)
- MOVEQ #1,D4
- MOVE.L A1,BV_RIP(A6) ;arith stack
- MOVEQ #0,D0
- L083E6 RTS
- ERR_BL BSR.S L08414
- ERR_RO BSR.S L08414
- ERR_NI BSR.S L08414
- ERR_OV BSR.S L08414
- ERR_XP BSR.S L08414
- ERR_FE BSR.S L08414
- ERR_BP BSR.S L08414
- ERR_FF BSR.S L08414
- ERR_TE BSR.S L08414
- ERR_BN BSR.S L08414
- ERR_DF BSR.S L08414 ;*/mend BRA.S $8414
- ERR_EF BSR.S L08414
- ERR_IU BSR.S L08414
- ERR_EX BSR.S L08414
- ERR_NF BSR.S L08414
- ERR_NO BSR.S L08414
- ERR_BO BSR.S L08414
- ERR_OR BSR.S L08414
- ERR_OM BSR.S L08414
- ERR_NJ BSR.S L08414
- ERR_NC BSR.S L08414
- NOP
- L08414:
- PEA L08414(PC)
- MOVE.L (A7)+,D4
- SUB.L (A7)+,D4
- LSR.L #1,D4
- BSR.S L08446
- SUBQ.W #6,A1
- CLR.W 0(A6,A1.L)
- CLR.L 2(A6,A1.L)
- ADD.L $C2(A6),D4 ;
- BNE.S L0843C
- MOVE.W #$0801,0(A6,A1.L)
- MOVE.B #$40,2(A6,A1.L)
- L0843C MOVEQ #2,D4
- L0843E MOVE.L A1,BV_RIP(A6) ;arith stack
- MOVEQ #0,D0
- RTS
- L08446 CMPA.L A3,A5
- BNE.S L08454
- JSR L04E4C(PC) ;*/undomodify BSR L04E4C
- MOVEA.L BV_RIP(A6),A1 ;arith stack
- RTS
- L08454 ADDQ.W #4,A7
- MOVEQ #-15,D0
- RTS
- BAS_ERNUm:
- BSR.S L08446
- SUBQ.W #2,A1
- MOVE.W $C4(A6),0(A6,A1.L) ;
- L08464 MOVEQ #3,D4
- BRA.S L0843E
- BAS_ERLIn:
- BSR.S L08446
- SUBQ.W #2,A1
- MOVE.W $C6(A6),0(A6,A1.L) ;
- BRA.S L08464
- ; --------------------------------------------------------------
- ;*/endfile
-