home *** CD-ROM | disk | FTP | other *** search
- */beginfile PROCS9_asm
- ; --------------------------------------------------------------
- ; PROCS9_asm - BASIC bits
- ; - last modified 27/08/95
- ; QDOS-Amiga sources by Rainer Kowallik
- ; ...some changes by Mark J Swift
- ; --------------------------------------------------------------
- ; get parameter
- ; entry of variables name
- L069AE:
- CMPA.L A5,A3
- BGE.S L06994
- MOVE.L A5,-(A7)
- ADDQ.W #8,A3
- MOVEA.L A3,A5
- JSR L064A2(PC) ;*/undomodify BSR L064A2
- MOVEA.L (A7)+,A5
- BEQ.S L0698E
- ADDQ.W #4,A7
- RTS
- L069C4 ; open channel for BASIC
- BSR.S L069AE
- MOVEQ #IO.OPEN,D0
- MOVEQ #-1,D1 ; Job ID
- MOVE.L D4,D3
- L069CC MOVEA.L A1,A0
- MOVE.W 0(A6,A1.L),-(A7)
- TRAP #4
- TRAP #2
- MOVEQ #3,D3
- ADD.W (A7)+,D3
- BCLR #0,D3
- ADD.L D3,BV_RIP(A6) ;arithmetic stack
- TST.L D0
- RTS
- BAS_DELEte:
- BSR.S L069AE
- MOVEQ #$04,D0
- BRA.S L069CC
- BAS_DIR:
- JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
- BNE.S L0698E
- MOVEA.L A0,A4
- MOVEQ #$04,D4
- BSR.S L069C4
- BNE.S L0698E
- MOVEA.L A0,A5
- MOVEQ #$45,D0
- MOVEA.L (A6),A1
- MOVEA.L A5,A0
- BSR.S TRAP_4_3
- BNE.S L06986
- MOVE.L D1,-(A7)
- MOVEA.L (A6),A1
- MOVEQ #$0A,D2
- BSR.S L06A6A
- MOVEQ #IO.SBYTE,D0 ;send a byte
- MOVEQ #$0A,D1 ; Send <LF>
- TRAP #3
- MOVEM.W (A7)+,D1-D2
- BSR.S L06A40
- L06A1A MOVEQ #$03,D0
- MOVEQ #$40,D2
- MOVEA.L (A6),A1
- MOVEA.L A5,A0
- MOVEQ #0,D4
- BSR TRAP_4_3
- BNE L06988
- SUBA.W #$0030,A1
- MOVE.W -$02(A6,A1.L),D2
- BEQ.S L06A1A
- BSR.S L06A6A
- MOVEQ #IO.SBYTE,D0 ;send a byte
- MOVEQ #$A,D1 ; send <LF>
- TRAP #3
- BRA.S L06A1A
- L06A40 ; add number of sectors
- MOVE.W D2,D4
- BSR.S L06A5A
- MOVEQ #IO.SBYTE,D0 ;send a byte
- MOVE.B #$2F,D1 ; send '/'
- TRAP #3
- MOVE.W D4,D1
- BSR.S L06A5A
- MOVEQ #-$17,D0
- JSR UT_ERR(PC) ;*/undomodify BSR UT_ERR
- MOVEQ #0,D0
- RTS
- L06A5A ; add entire number
- MOVEA.L (A6),A1
- LEA 2(A1),A0
- MOVE.W D1,0(A6,A1.L)
- JSR CN_ITOD(PC) ;*/undomodify BSR CN_ITOD
- MOVE.W D1,D2
- L06A6A MOVEQ #7,D0
- MOVEA.L A4,A0
- MOVEQ #-1,D3
- BRA TRAP_4_3
- BAS_FORMat:
- JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
- BNE L0698E
- MOVEA.L A0,A4
- BSR L069AE
- MOVEQ #$03,D0
- BSR L069CC
- BNE L0698E
- BRA.S L06A40
- COPY:
- MOVEQ #0,D5
- BRA.S L06A94
- COPY_N:
- MOVEQ #-$01,D5
- L06A94 MOVEQ #$01,D4
- BSR L069C4
- BNE L0698E
- MOVEA.L A0,A4
- MOVEQ #2,D4
- BSR L069C4
- BNE.S L06B20
- TST.B D5
- BNE.S L06ACA
- MOVEQ #-1,D5
- MOVEA.L (A6),A1
- MOVEQ #$47,D0
- MOVEQ #$0E,D2
- EXG A0,A4
- BSR TRAP_4_3
- EXG A0,A4
- BNE.S L06ACA
- MOVEA.L (A6),A1
- MOVE.L 0(A6,A1.L),D5
- MOVEQ #$46,D0
- BSR TRAP_4_3
- L06ACA MOVEA.L (A6),A1
- MOVE.L BV_TKBAS(A6),D2 ;token list
- SUB.L A1,D2
- MOVEQ #0,D3
- EXG A0,A4
- TST.L D5
- BLE.S L06AE0
- CMP.L D5,D2
- BLE.S L06AE0
- MOVE.L D5,D2
- ; --------------------------------------------------------------
- */beginoverlay
- ifd NoTas
- L06AE0:
- BSET #7,BV_BRK(A6) ;*/mend TAS $8F(A6)
- ; There has been a
- ; break (0) or not ($80)
- BEQ.S L06B1E
- MOVEQ #IO.FSTRG,D0 ;Fetch string of bytes
- TRAP #4
- TRAP #3
- ADDQ.L #1,D0 ;*/insert
- SUBQ.L #1,D0 ;*/modify CMPI.L #-1,D0
- BCC.S L06AFA ;*/modify BNE.S L06AFA
- ; not complete error?
- TST.W D1
- BEQ.S L06AE0
- BRA.S L06B0C
- endc
- ifnd NoTas
- L06AE0:
- TAS $8F(A6)
- BEQ.S L06B1E
- MOVEQ #IO.FSTRG,D0
- TRAP #4
- TRAP #3
- CMPI.L #-1,D0
- BNE.S L06AFA
- TST.W D1
- BEQ.S L06AE0
- BRA.S L06B0C
- endc
- */endoverlay
- ; --------------------------------------------------------------
- L06AFA:
- CMPI.L #-10,D0 ; end of file error
- BNE.S L06B08
- MOVEQ #0,D0
- TST.W D1
- BEQ.S L06B1E
- L06B08 TST.L D0
- BNE.S L06B1E
- L06B0C MOVEQ #7,D0
- MOVE.W D1,D2
- EXG A0,A4
- SUBA.W D1,A1
- BSR TRAP_4_3
- BNE.S L06B1E
- SUB.L D2,D5
- BNE.S L06ACA
- L06B1E BSR.S L06B22
- L06B20 EXG A0,A4
- L06B22 BRA L06986
- BAS_CLOSe:
- CMPA.L A3,A5
- BLE.S L06B44
- TST.B $01(A6,A3.L)
- BPL.S L06B44
- JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
- BNE.S L06B42
- MOVE.L #$FFFFFFFF,0(A6,A2.L)
- MOVEQ #IO.CLOSE,D0
- TRAP #2
- L06B42 RTS
- L06B44 MOVEQ #-15,D0 ; signal bad parameter error
- BRA.S L06B42
- BAS_OPEN:
- MOVEQ #0,D4
- BRA.S L06B52
- OPEN_IN:
- MOVEQ #1,D4
- BRA.S L06B52
- OPEN_NEW:
- MOVEQ #2,D4
- L06B52 BSR.S BAS_CLOSe
- TST.L D0
- BEQ.S L06B5E
- MOVEQ #-6,D2
- CMP.L D0,D2
- BNE.S L06B42
- L06B5E EXG D1,D6
- BSR L069C4
- EXG D6,D1
- BNE.S L06B42
- JMP STO_CHID(PC) ;*/undomodify BRA STO_CHID
- ; store channel ID
- BAS_SAVE:
- MOVE.L A3,$00B4(A6) ; Temporary pointer for
- ; GO_PROC
- MOVEQ #$02,D4
- BSR L069C4
- BNE.S L06B42
- JSR L07484(PC) ;*/undomodify BSR L07484
- BEQ.S L06B22
- MOVE.L D0,D4
- BSR L0699A
- BRA L0698C
- BAS_FILL:
- JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
- BNE.S L06BA4
- JSR GET_INT4(PC) ;*/undomodify BSR GET_INT4
- BNE.S L06BA4
- MOVE.L 0(A6,A1.L),D1
- ADDQ.L #4,A1
- MOVE.L A1,BV_RIP(A6) ;arithmetic stack
- MOVEQ #SD.FLOOD,D0 ;turns area flood on & off
- MOVEQ #-1,D3 ; timeout
- TRAP #3
- L06BA4 RTS
- BAS_UNDEr:
- MOVE.B #$2B,D4
- BRA.S L06BB0
- BAS_FLASh:
- MOVE.B #$2A,D4
- L06BB0 JSR L08038(PC) ;*/undomodify BSR L08038
- BNE.S L06BC0
- JSR L08028(PC) ;*/undomodify BSR L08028
- BNE.S L06BC0
- L06BBC JMP L07FC4(PC) ;*/undomodify BRA L07FC4
- L06BC0 RTS
- BAS_OVER:
- JSR L08038(PC) ;*/undomodify BSR L08038
- BNE.S L06BC0
- MOVE.B #$2C,D4
- MOVE.W 0(A6,A1.L),D1
- CMPI.W #$0001,D1
- BGT.S L06BDC
- CMPI.W #$FFFF,D1
- BGE.S L06BBC
- L06BDC MOVEQ #-15,D0 ; bad parameter
- RTS
- L06BE0 BSR L06CB6
- JSR CA_GTFP(PC) ;*/undomodify BSR CA_GTFP
- BNE.S L06BF2
- MOVEQ #$36,D0 ; SD.GCUR sets the graphics
- ; cursor position
- MOVEQ #-1,D3
- TRAP #4
- TRAP #3
- L06BF2 BRA L06CAE
- BAS_SCALe:
- MOVEQ #$34,D4
- BSR L06CB6
- BSR L06D42
- BSR L06D46
- BRA L06C96
- POINT:
- MOVEQ #$30,D4
- BRA.S L06C10
- POINT_R:
- MOVE.W #$00B0,D4
- L06C10 BSR L06CB6
- BSR L06D1C
- BRA.S L06C96
- BAS_LINE:
- MOVEQ #$31,D4
- BRA.S L06C22
- LINE_R:
- MOVE.W #$00B1,D4
- L06C22 BSR L06CB6
- BSR L06D0A
- BNE.S L06CA4
- BSR L06D1C
- BRA.S L06C96
- CIRCLE:
- ELLIPSE:
- MOVEQ #$33,D4
- BRA.S L06C3A
- CIRCLE_R:
- ELLIPSE_R:
- MOVE.W #$00B3,D4
- L06C3A BSR.S L06CB6
- BSR L06D1C
- BSR L06D46
- CMPI.B #$01,D5
- BNE.S L06C50
- BSR L06D42
- BRA.S L06C68
- L06C50 SUBQ.L #8,A1
- SUBQ.L #4,A1
- CLR.L 0(A6,A1.L)
- MOVE.L #$00000801,$04(A6,A1.L) ; floating point 0.5
- MOVE.L #$40000000,$08(A6,A1.L)
- L06C68 MOVEM.W $06(A6,A1.L),D0-D2
- MOVE.W $0C(A6,A1.L),$06(A6,A1.L)
- MOVE.L $0E(A6,A1.L),$08(A6,A1.L)
- MOVEM.W D0-D2,$0C(A6,A1.L)
- BRA.S L06C96
- BAS_ARC:
- MOVEQ #$32,D4 ; SD.ARC plots an arc
- BRA.S L06C8A
- BAS_ARC_r:
- MOVE.W #$B2,D4 ; SD.ARC || 128
- L06C8A BSR.S L06CB6
- BSR.S L06D0A
- BSR L06D1C
- BSR L06D46
- L06C96 MOVE.L D4,D0
- SWAP D0
- BCLR #7,D0
- MOVEQ #-1,D3
- TRAP #4
- TRAP #3
- L06CA4 CMPA.L D6,A3
- BGE.S L06CAC
- MOVE.L A4,-(A7)
- MOVE.W D5,D4
- L06CAC MOVEQ #0,D0
- L06CAE MOVE.L D7,BV_RIP(A6) ;arith stack
- MOVEA.L D7,A1
- RTS
- L06CB6 ; execution of graphic commands
- SWAP D4
- CLR.W D4
- CLR.W D5
- MOVE.L BV_RIP(A6),D7 ;arith stack
- MOVE.L A5,D6
- CMPA.L D6,A3
- BLT.S L06CCA
- MOVEQ #-$0F,D0
- BRA.S L06D06
- L06CCA MOVE.B 1(A6,A3.L),D0
- ANDI.B #$0F,D0
- BNE.S L06CDC
- JSR L07452(PC) ;*/undomodify BSR L07452
- MOVE.W D5,D4
- BRA.S L06CEE
- L06CDC BTST #$07,$01(A6,A3.L)
- BEQ.S L06CEE
- MOVE.B $01(A6,A3.L),D4
- BCLR #$07,D4
- LSR.B #4,D4
- L06CEE JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
- BNE.S L06D06
- MOVE.W #$0100,D1
- JSR BV_CHRIX(PC) ;*/undomodify BSR BV_CHRIX
- MOVE.L BV_RIP(A6),D7 ;arith stack
- MOVEA.L D7,A1
- MOVEA.L (A7),A4
- RTS
- L06D06 ADDQ.L #4,A7
- BRA.S L06CAE
- L06D0A CMPI.B #$05,D4
- BNE.S L06D1C
- BSR.S L06D6E
- BSR.S L06D7E
- MOVE.L A1,BV_RIP(A6) ;arith stack
- MOVEQ #0,D0
- RTS
- L06D1C BSR.S L06D4C
- BNE.S L06D06
- BTST #$17,D4
- BEQ.S L06D2C
- BSR.S L06D6E
- JSR RI_ADD(PC) ;*/undomodify BSR RI_ADD
- L06D2C BSR.S L06D4C
- BNE.S L06D06
- BTST #$17,D4
- BEQ.S L06D3C
- BSR.S L06D7E
- JSR RI_ADD(PC) ;*/undomodify BSR RI_ADD
- L06D3C BSR.S L06D8E
- MOVEQ #1,D0
- RTS
- L06D42 BSR.S L06D4C
- BNE.S L06D06
- L06D46 BSR.S L06D4C
- BNE.S L06D06
- RTS
- L06D4C MOVE.L A4,-(A7)
- CMPA.L D6,A3
- BLT.S L06D56
- MOVEQ #-15,D0 ; Bad parameter
- BRA.S L06D6A
- L06D56 MOVE.W D5,D4
- JSR L07452(PC) ;*/undomodify BSR L07452
- MOVEA.L A3,A5
- JSR L05EC8(PC) ;*/undomodify BSR L05EC8
- BNE.S L06D6A
- MOVEQ #$02,D0
- JSR L05996(PC) ;*/undomodify BSR L05996
- L06D6A MOVEA.L (A7)+,A4
- RTS
- L06D6E SUBQ.W #6,A1
- MOVE.L $0A(A6,A2.L),0(A6,A1.L)
- MOVE.W $0E(A6,A2.L),$04(A6,A1.L)
- RTS
- L06D7E SUBQ.W #6,A1
- MOVE.L $04(A6,A2.L),0(A6,A1.L)
- MOVE.W $08(A6,A2.L),$04(A6,A1.L)
- RTS
- L06D8E MOVE.L 0(A6,A1.L),$04(A6,A2.L)
- MOVE.L $04(A6,A1.L),$08(A6,A2.L)
- MOVE.L $08(A6,A1.L),$0C(A6,A2.L)
- RTS
- ; --------------------------------------------------------------
- ;*/endfile
-