; FILE NAME TURTLE.M80 ; CODED BY TOSHIHUMI MURATA ; B U G sapporo japan ; 1ST EDITING Aug. 3, 1983 ; LAST EDITING Aug. 4, 1983 ENTRY DSP_TURTLE ; dsp_turtle (x, y, sec) ; int x [-16384..16383], y [-16384..16383], sec [0..59]; DSEG T0_X: DS 2 T0_Y: DS 2 T1_X: DS 2 T1_Y: DS 2 T2_X: DS 2 T2_Y: DS 2 T3_X: DS 2 T3_Y: DS 2 CSEG DSP_TURTLE: PUSH BC LD HL,4 ADD HL,SP LD E,(HL) INC HL LD D,(HL) INC HL LD (T0_X),DE LD E,(HL) INC HL LD D,(HL) INC HL LD (T0_Y),DE ; set up vertices LD L,(HL) ;HL := SECTION LD H,0 ; ADD HL,HL ;IX := TTL_TBL + SECTION * 6 LD E,L ; LD D,H ; ADD HL,HL ; ADD HL,DE ; LD DE,TTL_TBL ; ADD HL,DE ; PUSH HL ; POP IX ; LD DE,T1_X CALL CALOFS CALL CALOFS CALL CALOFS ; draw turtle ; line t1 - t2 LD HL,(T1_X) LD (X1),HL LD HL,(T1_Y) LD (Y1),HL LD HL,(T2_X) LD DE,(T2_Y) LD BC,4*100H+15 ;COLOR = 15, MODE = XOR CALL LINPLT ; line - t0 LD HL,(T0_X) LD DE,(T0_Y) LD BC,4*100H+15 CALL .LINE ; line - t3 LD HL,(T3_X) LD DE,(T3_Y) LD BC,4*100H+15 CALL LINPLT ; line - t1 LD HL,(T1_X) LD DE,(T1_Y) LD BC,4*100H+15 CALL LINPLT POP BC RET CALOFS: LD BC,(T0_X) CALL CALOF1 LD BC,(T0_Y) CALOF1: LD A,(IX+0) INC IX LD L,A ;HL := SIGN_EXTEND [ A ] ADD A,A ; SBC A,A ; LD H,A ; ADD HL,BC EX DE,HL LD (HL),E INC HL LD (HL),D INC HL EX DE,HL RET LINPLT: PUSH HL PUSH DE PUSH BC CALL .LINE POP BC POP DE POP HL .PLOT: RCALL 0F73H .LINE: RCALL 0E71H TTL_TBL: ; t1_x t1_y t2_x t2_y t3_x t3_y deg. DB 000H, 0F8H, 005H, 003H, 0FBH, 003H ; 0 DB 001H, 0F8H, 005H, 003H, 0FBH, 003H ; 6 DB 002H, 0F8H, 004H, 004H, 0FAH, 002H ; 12 DB 003H, 0F8H, 004H, 004H, 0FAH, 002H ; 18 DB 004H, 0F9H, 003H, 004H, 0FAH, 001H ; 24 DB 005H, 0F9H, 002H, 005H, 0FAH, 001H ; 30 DB 006H, 0FAH, 002H, 005H, 0FAH, 000H ; 36 DB 007H, 0FAH, 001H, 005H, 0FAH, 000H ; 42 DB 008H, 0FBH, 001H, 005H, 0FAH, 0FFH ; 48 DB 008H, 0FBH, 000H, 005H, 0FAH, 0FFH ; 54 DB 009H, 0FCH, 0FFH, 005H, 0FAH, 0FEH ; 60 DB 009H, 0FDH, 0FFH, 005H, 0FAH, 0FEH ; 66 DB 00AH, 0FEH, 0FEH, 005H, 0FBH, 0FDH ; 72 DB 00AH, 0FEH, 0FDH, 005H, 0FBH, 0FDH ; 78 DB 00AH, 0FFH, 0FDH, 004H, 0FCH, 0FCH ; 84 DB 00AH, 000H, 0FCH, 004H, 0FCH, 0FCH ; 90 DB 00AH, 001H, 0FCH, 004H, 0FDH, 0FCH ; 96 DB 00AH, 002H, 0FBH, 003H, 0FDH, 0FBH ; 102 DB 00AH, 002H, 0FBH, 003H, 0FEH, 0FBH ; 108 DB 009H, 003H, 0FAH, 002H, 0FFH, 0FBH ; 114 DB 009H, 004H, 0FAH, 002H, 0FFH, 0FBH ; 120 DB 008H, 005H, 0FAH, 001H, 000H, 0FBH ; 126 DB 008H, 005H, 0FAH, 001H, 001H, 0FBH ; 132 DB 007H, 006H, 0FAH, 000H, 001H, 0FBH ; 138 DB 006H, 006H, 0FAH, 000H, 002H, 0FBH ; 144 DB 005H, 007H, 0FAH, 0FFH, 002H, 0FBH ; 150 DB 004H, 007H, 0FAH, 0FFH, 003H, 0FCH ; 156 DB 003H, 008H, 0FAH, 0FEH, 004H, 0FCH ; 162 DB 002H, 008H, 0FAH, 0FEH, 004H, 0FCH ; 168 DB 001H, 008H, 0FBH, 0FDH, 005H, 0FDH ; 174 DB 000H, 008H, 0FBH, 0FDH, 005H, 0FDH ; 180 DB 0FFH, 008H, 0FBH, 0FDH, 005H, 0FDH ; 186 DB 0FEH, 008H, 0FCH, 0FCH, 006H, 0FEH ; 192 DB 0FDH, 008H, 0FCH, 0FCH, 006H, 0FEH ; 198 DB 0FCH, 007H, 0FDH, 0FCH, 006H, 0FFH ; 204 DB 0FBH, 007H, 0FEH, 0FBH, 006H, 0FFH ; 210 DB 0FAH, 006H, 0FEH, 0FBH, 006H, 000H ; 216 DB 0F9H, 006H, 0FFH, 0FBH, 006H, 000H ; 222 DB 0F8H, 005H, 0FFH, 0FBH, 006H, 001H ; 228 DB 0F8H, 005H, 000H, 0FBH, 006H, 001H ; 234 DB 0F7H, 004H, 001H, 0FBH, 006H, 002H ; 240 DB 0F7H, 003H, 001H, 0FBH, 006H, 002H ; 246 DB 0F6H, 002H, 002H, 0FBH, 005H, 003H ; 252 DB 0F6H, 002H, 003H, 0FBH, 005H, 003H ; 258 DB 0F6H, 001H, 003H, 0FCH, 004H, 004H ; 264 DB 0F6H, 000H, 004H, 0FCH, 004H, 004H ; 270 DB 0F6H, 0FFH, 004H, 0FCH, 003H, 004H ; 276 DB 0F6H, 0FEH, 005H, 0FDH, 003H, 005H ; 282 DB 0F6H, 0FEH, 005H, 0FDH, 002H, 005H ; 288 DB 0F7H, 0FDH, 006H, 0FEH, 001H, 005H ; 294 DB 0F7H, 0FCH, 006H, 0FEH, 001H, 005H ; 300 DB 0F8H, 0FBH, 006H, 0FFH, 000H, 005H ; 306 DB 0F8H, 0FBH, 006H, 0FFH, 0FFH, 005H ; 312 DB 0F9H, 0FAH, 006H, 000H, 0FFH, 005H ; 318 DB 0FAH, 0FAH, 006H, 000H, 0FEH, 005H ; 324 DB 0FBH, 0F9H, 006H, 001H, 0FEH, 005H ; 330 DB 0FCH, 0F9H, 006H, 001H, 0FDH, 004H ; 336 DB 0FDH, 0F8H, 006H, 002H, 0FCH, 004H ; 342 DB 0FEH, 0F8H, 006H, 002H, 0FCH, 004H ; 348 DB 0FFH, 0F8H, 005H, 003H, 0FBH, 003H ; 354