XWIDTH EQU 436 YDEPTH EQU 332 YDEPN EQU YDEPTH-1 XPOS EQU 50 YPOS EQU -92 MASK EQU 31 GRPH_LP BSR CORD_DE LEA GCUR1,A0 MOVEM.L D0-D6,-(A7) MOVE.W (A0)+,D2 MOVE.W (A0)+,D3 MOVE.W (A0)+,D0 MOVE.W (A0),D1 LEA WKSPAC+60,A1 CMP.W #1,(A1) BEQ SK_LINE BSR DOLINE SK_LINE MOVEM.L (A7)+,D0-D6 LEA GCUR1,A0 LEA GCUR2,A1 MOVE.L (A1),(A0) RETURN2 BRA GRPH_LP CORD_DE LEA STAT_BY,A0 MOVE.B #0,(A0) GR_LOOP BSR RD_SER BSR GET_BYT MOVE.B D6,D1 MOVEQ #0,D6 MOVE.B D1,D6 CMP.B #32,D6 BLT CTR_DEC BTST #6,D6 ; Is it a LOW byte? BEQ HI_DEC ; if yes then decode it BTST #5,D6 BNE LY_DEC LOW_X AND.B #MASK,D6 LEA LOWX,A0 MOVE.B D6,(A0) BSR INTEGRA RTS HI_DEC AND.B #MASK,D6 LEA STAT_BY,A0 BTST #2,STAT_BY BNE HX BSET #3,(A0) LEA HIGHY,A1 MOVE.B D6,(A1) BRA GR_LOOP HX BSET #1,(A0) LEA HIGHX,A1 MOVE.B D6,(A1) BRA GR_LOOP LY_DEC AND.B #MASK,D6 LEA LOWY,A0 MOVE.B D6,(A0) LEA STAT_BY,A0 BSET #2,(A0) BRA GR_LOOP INTEGRA MOVEM.L D0-D4/A0-A2,-(A7) LEA GCUR2,A0 MOVE.L (A0),D1 MOVEQ #0,D0 MOVE.B STAT_BY,D0 TST.B D0 BEQ LOX CMP.B #6,D0 BEQ HIX CMP.B #4,D0 BEQ LOY CMP.B #8,D0 BEQ HIY MOVEQ #0,D1 MOVE.B HIGHX,D1 LSL.L #5,D1 MOVEQ #0,D2 MOVE.B LOWX,D2 ADD.L D2,D1 SWAP D1 MOVE.B HIGHY,D2 ADD.L D2,D1 LSL.W #5,D1 MOVE.B LOWY,D2 ADD.L D2,D1 END_INT MOVE.L D1,(A0) MOVEM.L (A7)+,D0-D4/A0-A2 RTS LOY MOVEQ #0,D2 MOVE.B LOWY,D2 AND.L #$FFFFFFE0,D1 ADD.L D2,D1 BRA LOX LOX MOVEQ #0,D2 MOVE.B LOWX,D2 SWAP D2 AND.L #$FFE0FFFF,D1 ADD.L D2,D1 BRA END_INT HIY MOVEQ #0,D2 MOVE.B HIGHY,D2 LSL.L #5,D2 AND.L #$FFFFFC1F,D1 ADD.L D2,D1 BRA LOX HIX MOVEQ #0,D2 MOVE.B HIGHX,D2 SWAP D2 LSL.L #5,D2 AND.L #$FC1FFFFF,D1 ADD.L D2,D1 BRA LOY DOLINE BSR DOSCALE EXG D0,D2 EXG D1,D3 DOLIN2 BSR DOSCALE MOVE.L #$20000+[YPOS*$80]+[XPOS/8*2],A0 MOVEQ #1,D4 MOVE.L #$10000,D5 SUB.W D0,D2 BPL.S X2GEX1 MOVE.L #$0FFF0000,D5 NEG.W D2 X2GEX1 SUB.W D1,D3 BPL.S Y2GEY1 MOVE.W #$0FFF,D4 NEG.W D3 Y2GEY1 CMP.W D2,D3 BLE.S NOSWAP EXG D2,D3 EXG D4,D5 NOSWAP SWAP D0 MOVE.W D1,D0 MOVE.W D2,D7 MOVE.W D2,D6 LSR.W #1,D6 NXTPT AND.L #$0FFF0FFF,D0 MOVEM.L D0/D4,-(A7) MOVEQ #0,D1 MOVE.W D0,D1 CLR.W D0 SWAP D0 BSR.S DOPT2 MOVEM.L (A7)+,D0/D4 ADD.L D5,D0 ADD.L D3,D6 CMP.W D6,D2 BGE.S NORED SUB.W D2,D6 ADD.L D4,D0 NORED DBRA D7,NXTPT RTS DOPT2 MOVEQ #7,D4 LSL.L D4,D1 SUB.B D0,D4 LSR.W #3,D0 LSL.W #1,D0 ADD.L D0,D1 MOVE.L D7,-(A7) MOVE.L D1,D7 ADD.L A0,D7 CMP.L #$20180,D7 BLT.S NO_PLOT BSET D4,1(A0,D1.L) BSET D4,0(A0,D1.L) NO_PLOT MOVE.L (A7)+,D7 RTS DOSCALE MOVEQ #10,D4 MULU #XWIDTH,D2 LSR.L D4,D2 MULU #YDEPTH,D3 LSR.L D4,D3 SUB.W #YDEPN,D3 NEG.W D3 RTS HIGHY DCB.W 1,0 LOWY DCB.W 1,0 HIGHX DCB.W 1,0 LOWX DCB.W 1,0 STAT_BY DCB.B 1,0 ALIGN