Advertisement
RobusAsmCoder

Tack FIX

Aug 13th, 2021
1,252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3.         EQU $ASAM.PASS.ERROR=2
  4.  
  5.  
  6.         ORG 25000
  7.  
  8.  
  9.          CreateImage "%$ASAM.Compile.FileName%.TRD"
  10.  
  11. COLA    EQU 2
  12. COLB    EQU 7
  13. COPA    EQU COLA
  14. COPB    EQU COLB
  15.  
  16. POSX    EQU 23296
  17.  
  18.  
  19. START   EQU $
  20.  
  21.         DI
  22.         LD A,INT.VEC
  23.         LD I,A
  24.         IM 2
  25.         LD SP,$
  26.  
  27. ;        CALL MakeScreenVerB
  28.  
  29.         CALL EFGENERATOR
  30.  
  31.         XOR A
  32.         LD (POSX),A
  33.  
  34.  
  35.         EI
  36.  
  37.  
  38.         CALL TackFourFix
  39.  
  40.         LD HL,EFFECT
  41.         LD (IORQ.EFFECT),HL
  42.         CALL IORQ.FIXLOOP
  43.  
  44. MLOOP   DS 120;HALT
  45.         JR MLOOP
  46.  
  47. MakeScreenVerB:
  48.         LD HL,22528
  49.         LD DE,22529
  50.         LD BC,767
  51.         LD (HL),COPA*8+COPB
  52.         LDIR
  53.  
  54.  
  55.  
  56.  
  57.         RET
  58.  
  59. MakeScreenVerA:
  60.  
  61.         LD HL,22528
  62.         LD DE,22529
  63.         PUSH HL
  64.         PUSH HL
  65.         LD (HL),COPA*8+COPA
  66.         LDI
  67.         LDI
  68.         LDI
  69.         LDI
  70.         PUSH HL
  71.         LD (HL),COPB*8+COPB
  72.         LDI
  73.         LDI
  74.         LDI
  75.         POP BC
  76.         POP HL
  77.         PUSH BC
  78.         LD BC,32-8+32*3
  79.         LDIR
  80.         POP HL
  81.         PUSH DE
  82.         LD BC,32
  83.         LDIR
  84.         POP HL
  85.         LD BC,32*3
  86.         LDIR
  87.         POP HL
  88.         LD BC,32*4*4
  89.         LDIR
  90.  
  91.  
  92.         RET
  93.  
  94.  
  95.  
  96. ;INT.VECADDR     EQU 0
  97. ;IORQ.EFFECT     EQU 0
  98. ;IORQ.STOPEFFECT EQU 0
  99.         .MAC_POS_COL ,,,,,,,
  100.          DB COP@.0+COP@.1*8
  101.          DB COP@.2+COP@.3*8
  102.          DB COP@.4+COP@.5*8
  103.          DB COP@.6+COP@.7*8
  104.         ..
  105.  
  106.         .MAC_POSTB ,(),(),,
  107.          DB @.0                      ;BYTE FILL
  108.          DB @.3*2                    ;OFFSET EFSPLIST
  109.          .%@.4==2%
  110.           MAC_POS_COL @.1
  111.           MAC_POS_COL @.2
  112.          ..
  113.          .%@.4==1%
  114.           MAC_POS_COL @.2
  115.           MAC_POS_COL @.1
  116.          ..
  117.         ..
  118.  
  119. EFPOSTBL .2
  120.           MAC_POSTB 00000000B, (B,A,A,A,A,A,A,A), (A,B,B,B,B,B,B,B), 0, @.C
  121.           MAC_POSTB 11000000B, (B,A,A,A,A,A,A,A), (A,B,B,B,B,B,B,B), 0, @.C
  122.           MAC_POSTB 11110000B, (B,A,A,A,A,A,A,A), (A,B,B,B,B,B,B,B), 0, @.C
  123.           MAC_POSTB 11111100B, (B,A,A,A,A,A,A,A), (A,B,B,B,B,B,B,B), 0, @.C
  124.           MAC_POSTB 00000000B, (B,B,B,A,A,A,A,A), (A,A,A,B,B,B,B,B), 1, @.C
  125.           MAC_POSTB 11000000B, (B,B,B,A,A,A,A,A), (A,A,A,B,B,B,B,B), 1, @.C
  126.           MAC_POSTB 11110000B, (B,B,B,A,A,A,A,A), (A,A,A,B,B,B,B,B), 1, @.C
  127.           MAC_POSTB 11111100B, (B,B,B,A,A,A,A,A), (A,A,A,B,B,B,B,B), 1, @.C
  128.           MAC_POSTB 00000000B, (B,B,B,B,B,A,A,A), (A,A,A,A,A,B,B,B), 2, @.C
  129.           MAC_POSTB 11000000B, (B,B,B,B,B,A,A,A), (A,A,A,A,A,B,B,B), 2, @.C
  130.           MAC_POSTB 11110000B, (B,B,B,B,B,A,A,A), (A,A,A,A,A,B,B,B), 2, @.C
  131.           MAC_POSTB 11111100B, (B,B,B,B,B,A,A,A), (A,A,A,A,A,B,B,B), 2, @.C
  132.           MAC_POSTB 00000000B, (B,B,B,B,B,B,B,A), (A,A,A,A,A,A,A,B), 3, @.C
  133.           MAC_POSTB 11000000B, (B,B,B,B,B,B,B,A), (A,A,A,A,A,A,A,B), 3, @.C
  134.           MAC_POSTB 11110000B, (B,B,B,B,B,B,B,A), (A,A,A,A,A,A,A,B), 3, @.C
  135.           MAC_POSTB 11111100B, (B,B,B,B,B,B,B,A), (A,A,A,A,A,A,A,B), 3, @.C
  136.          ..
  137.  
  138.  
  139.  
  140. ;-----------------------------------------------------------------------------
  141. EFFECT:
  142.         LD A,1
  143.         OUT (254),A
  144.  
  145.  
  146.  
  147. ;        LD HL,224*(78-32)+2+16+16
  148. ;        CALL DelayTik
  149.  
  150. ;        CALL EFCLS
  151.  
  152.  
  153.         LD HL,224*25+4*30+16*3  + 4-2+2  +1-10-10-9
  154.         LD A,(POSX)
  155.         AND 15
  156.         LD E,A
  157.         LD D,0
  158.         ADD HL,DE
  159.         CALL DelayTik
  160.  
  161.  
  162.  
  163.  
  164.         LD (EFSP+1),SP
  165.  
  166. ;---
  167.         LD A,(POSX)
  168.         AND 31
  169.         RLCA
  170.         LD L,A
  171.         RLCA
  172.         RLCA
  173.         ADD A,L
  174.         LD L,A
  175.         LD A,0
  176.         ADC A,0
  177.         LD H,A
  178.  
  179.         LD SP,EFPOSTBL
  180.         ADD HL,SP
  181.         LD SP,HL
  182.         POP BC
  183.         LD A,C
  184.         LD (EF2+1),A
  185.         LD L,B
  186.         LD H,0
  187.         LD DE,EFSPLIST
  188.         ADD HL,DE
  189.         LD (EF1+2),HL
  190.         POP HL DE BC AF
  191.  
  192. ;LHEDCBFA
  193.         LD SP,22528+768
  194.         .3
  195.          .4
  196.           PUSH AF BC DE HL AF BC DE HL AF BC DE HL AF BC DE HL
  197.          ..
  198.          .4
  199.           PUSH DE HL AF BC DE HL AF BC DE HL AF BC DE HL AF BC
  200.          ..
  201.         ..
  202.  
  203. ;---
  204.  
  205.         LD HL,EFSPCOLT
  206.         LD A,(POSX)
  207.         AND 31
  208.         LD E,A
  209.         LD D,0
  210.         ADD HL,DE
  211.         LD A,(HL)
  212.         AND 7
  213.         LD E,A
  214.         LD A,(HL)
  215.         RRCA
  216.         RRCA
  217.         RRCA
  218.         AND 7
  219.         LD D,A
  220.         LD BC,254
  221.         ;LD DE,COLB*256+COLA
  222.         LD HL,16384
  223. EF2     LD A,0
  224.  
  225. EF1     LD SP,(EFSPLIST+2*0)
  226.         RET
  227.  
  228. EFSP    LD SP,0
  229.         LD A,6
  230.         OUT (254),A
  231.         .10
  232.          EX (SP),HL      ;19
  233.         ..
  234.         NOP
  235.         OUT (C),B
  236.  
  237.         LD HL,224+10+7-1-2-2+2-2
  238.         LD A,(POSX)
  239.         AND 3
  240.         LD E,A
  241.         LD D,0
  242.         SBC HL,DE
  243.         CALL DelayTik
  244.  
  245.  
  246.         XOR A
  247.         OUT (254),A
  248.  
  249.         RET
  250. EFSPCOLT .16
  251.           DB COLB*8+COLA
  252.          ..
  253.          .16
  254.           DB COLA*8+COLB
  255.          ..
  256.  
  257. EFSPLIST DW 0,0,0,0
  258.  
  259. ;---
  260.  
  261. EFLA    JP $+3
  262.         .7
  263.          OUT (C),E
  264.          NOP
  265.          OUT (C),D
  266.          NOP
  267.         ..
  268.         ORG $-3-1
  269.         RET             ;10
  270.  
  271. EFLB    JP $+3
  272.         .7
  273.          OUT (C),D
  274.          NOP
  275.          OUT (C),E
  276.          NOP
  277.         ..
  278.         ORG $-3-1
  279.         RET             ;10
  280.  
  281.  
  282. ;-----------------------------------------------------------------------------
  283. INT.CYCLES EQU 6122
  284.  
  285. ;-----------------------------------------------------------------------------
  286.         ORG $/256
  287. INT.Vec EQU $
  288.         ORG $*256+255
  289. INT.VecAddr EQU $
  290.         DW INT
  291. INT:    PUSHA
  292.  
  293. IORQ.EFFECT EQU $+1
  294.         CALL INT.RET
  295.  
  296.         POPA
  297.         EI
  298. INT.ISP RET;INC SP
  299.         INC SP
  300.         JP MLOOP
  301. INT.RET EQU $
  302.         RET
  303.  
  304. IORQ.FIXLOOP:
  305.         LD A,(INT.ISP+1)
  306.         LD (INT.ISP+0),A
  307.         RET
  308.  
  309. IORQ.STOPEFFECT:
  310.         PUSH HL
  311.         LD HL,INT.RET
  312.         LD (IORQ.EFFECT),HL
  313.         POP HL
  314.         RET
  315.  
  316.  
  317. ;-----------------------------------------------------------------------------
  318.  
  319.  
  320. TackFourFix:
  321.         LD HL,(INT.VECADDR)
  322.         PUSH HL
  323.         LD HL,(IORQ.EFFECT)
  324.         PUSH HL
  325.         CALL IORQ.STOPEFFECT
  326.         HALT
  327.  
  328.  
  329.         LD (TFF6+1),SP
  330.         LD HL,TackFFINT
  331.         LD (INT.VECADDR),HL
  332.  
  333.         LD B,0;YL,0
  334.         LD C,00001111B
  335.         LD D,C
  336.         LD E,C
  337.         HALT
  338.         DI
  339.         HALT
  340.  
  341.  
  342. TackFFINT:
  343.         CALL INT
  344.         LD A,LOW(INT.CYCLES)
  345.         CPL
  346.         LD H,1
  347.         ADD A,B
  348.         AND 7
  349.         LD L,A
  350.         CALL DelayTik
  351.  
  352.         LD A,D        ;8
  353.         CP E          ;4
  354.         LD E,A        ;4
  355.         PUSH AF
  356.         POP HL
  357.         LD A,L
  358.         RLCA
  359.         RLCA
  360.         RL C
  361.         LD A,C
  362.         AND 00000111B
  363.         RLCA
  364.         OR LOW(TFFPRTB)
  365.         LD L,A
  366.         LD H,HIGH(TFFPRTB)
  367.         LD SP,HL
  368.         POP HL
  369. TFF6    LD SP,0       ;10
  370.         JP (HL)
  371. TFFPR0: POP HL
  372.         LD (IORQ.EFFECT),HL
  373.         POP HL
  374.         LD (INT.VECADDR),HL
  375.         RET
  376. TFFPR1: DEC B         ;4
  377.         JP TFF0       ;10
  378. TFFPR2: DS 1          ;4
  379.         JP TFF0       ;10
  380. TFFPR3: INC B         ;4
  381.         JP TFF0       ;10
  382.  
  383. TFF0    LD A,R        ;9
  384.         LD HL,TFF1-1  ;10
  385.         INC HL        ;6
  386.         LD D,L        ;4
  387. TFF1    .3
  388.          INC D        ;4
  389.         ..
  390.         JP (HL)       ;4
  391.  
  392.         ALIGN 16
  393. TFFPRTB DW TFFPR0;TFFPR0
  394.         DW TFFPR1;TFFPR1
  395.         DW TFFPR2;TFFPR2
  396.         DW TFFPR3;TFFPR3
  397.         DW TFFPR2;TFFPR2
  398.         DW TFFPR1;TFFPR1
  399.         DW TFFPR2;TFFPR2
  400.         DW TFFPR3;TFFPR3
  401.  
  402.  
  403. ;-----------------------------------------------------------------------------
  404.  
  405.  
  406. ;HL=TIKS-((11+10+15+10+11+11+10+7+6+7+4+4+10)=116)
  407. DelayTik:
  408.         PUSH BC         ;11
  409.         LD BC,0-21      ;10
  410. DETIx1  ADD HL,BC       ;11
  411.         JP C,DETIx1     ;10
  412.         SBC HL,BC       ;15
  413.         LD BC,DETIxTB   ;10
  414.         ADD HL,HL       ;11
  415.         ADD HL,BC       ;11
  416.         POP BC          ;10
  417.         LD A,(HL)       ;7
  418.         INC HL          ;6
  419.         LD H,(HL)       ;7
  420.         LD L,A          ;4
  421.         JP (HL)         ;4 + 10(RET)
  422. DETIx00:INC HL          ;6
  423.         RET
  424. DETIx01:LD A,(HL)       ;7
  425.         RET
  426. DETIx02:DS 2            ;8
  427.         RET
  428. DETIx03:LD A,R          ;9
  429.         RET
  430. DETIx04:LD HL,0         ;10
  431.         RET
  432. DETIx05:ADD HL,HL       ;11
  433.         RET
  434. DETIx06:DS 3            ;12
  435.         RET
  436. DETIx07:LD (0),A        ;13
  437.         RET
  438. DETIx08:INC HL:DS 2     ;14
  439.         RET
  440. DETIx09:ADC HL,HL       ;15
  441.         RET
  442. DETIx10:JP DETIx00      ;16
  443. DETIx11:JP DETIx01      ;17
  444. DETIx12:JR DETIx00      ;18
  445. DETIx13:JR DETIx01      ;19
  446. DETIx14:JR DETIx02      ;20
  447. DETIx15:JR DETIx03      ;21
  448. DETIx16:JR DETIx04      ;22
  449. DETIx17:JR DETIx05      ;23
  450. DETIx18:JR DETIx06      ;24
  451. DETIx19:JR DETIx07      ;25
  452. DETIx20:JR DETIx08      ;26
  453. DETIxTB DW DETIx00,DETIx01,DETIx02,DETIx03,DETIx04
  454.         DW DETIx05,DETIx06,DETIx07,DETIx08,DETIx09
  455.         DW DETIx10,DETIx11,DETIx12,DETIx13,DETIx14
  456.         DW DETIx15,DETIx16,DETIx17,DETIx18,DETIx19
  457.         DW DETIx20
  458.  
  459.  
  460.  
  461.  
  462. ;-----------------------------------------------------------------------------
  463. ;
  464. ;   +   +   +   +
  465. ;   0000111100001111  x
  466. ;   0001111000011110  0
  467. ;   0011110000111100  1
  468. ;   0111100001111000  ?
  469. ;
  470. ;   +       +
  471. ;   00000000 x
  472. ;   00000011 0
  473. ;   00001111 1
  474. ;   00111111 ?
  475. ;
  476. ;
  477. ;
  478. ;
  479. ;
  480.  
  481. ;EFCLS:  LD (ECLxSP+1),SP
  482. ;
  483. ;
  484. ;        LD SP,22528+768
  485. ;        LD C,COPA*8+COPB
  486. ;        LD B,C
  487. ;        LD E,COPB*8+COPA
  488. ;        LD D,E
  489. ;
  490. ;
  491. ;        LD A,24
  492. ;ECLx2
  493. ;        .4
  494. ;         PUSH BC
  495. ;         PUSH BC
  496. ;         PUSH DE
  497. ;         PUSH DE
  498. ;        ..
  499. ;        DEC A
  500. ;        JP NZ,ECLx2
  501. ;ECLxSP  LD SP,0
  502. ;        RET
  503. ;
  504.  
  505. ;
  506. ;ECLx0:  PUSH HL
  507. ;        .8
  508. ;         .24
  509. ;          LD (HL),A      ;7 .. 11
  510. ;          INC H          ;4
  511. ;         ..
  512. ;         ORG $-1
  513. ;         ADD HL,DE
  514. ;        ..
  515. ;        ORG $-1
  516. ;        POP HL
  517. ;        ADD HL,BC
  518. ;        RET
  519.  
  520.  
  521. ;        PUSH DE         ;11 .. 22
  522. ;        PUSH DE         ;11
  523. ;
  524. ;
  525. ;        LD (0),A        ;13 !!!!!!!!!
  526. ;
  527. ;        ADD HL,BC       ;11
  528. ;
  529. ;        CALL 0          ;17
  530. ;
  531. ;
  532. ;        POP HL          ;10 .. 17
  533. ;        LD (HL),A       ;7
  534. ;
  535. ;
  536. ;        LD (HL),A
  537. ;        LD (DE),A
  538. ;        LD (BC),A
  539. ;
  540. ;        LD (IX+0),A     ;19
  541. ;
  542. ;        SET 7,(HL)      ;15
  543.  
  544. ;-----------------------------------------------------------------------------
  545.  
  546. EFGENERATOR:
  547.  
  548.  
  549.  
  550.         LD HL,FREE
  551.         CALL EFGEy00    ;GENERATE FUTURE CODE
  552.         CALL EFGEy01    ;GENERATE FUTURE CODE
  553.  
  554.         LD IY,EFSPLIST
  555.         LD IX,EFSPTBL
  556.         LD DE,16384
  557.         CALL EFGEx0
  558.         CALL EFGEx0
  559.         CALL EFGEx0
  560.         CALL EFGEx0
  561.         RET
  562.  
  563. EFGEx0: PUSH IX
  564.         POP BC
  565.         LD (IY),C
  566.         INC IY
  567.         LD (IY),B
  568.         INC IY
  569.         PUSH DE
  570.         CALL EFGEz00
  571.         LD BC,EFLA
  572.         LD A,31
  573.         CALL EFGExSAVEBCA
  574. ;        LD B,3
  575. ;EFGEx1  PUSH BC
  576.         CALL EFGEz00_32
  577.         CALL EFGEz01_32
  578.         CALL EFGEz00_32
  579.         CALL EFGEz01_32
  580.         CALL EFGEz00_32
  581.         CALL EFGEz01_31
  582. ;        POP BC
  583. ;        DJNZ EFGEx1
  584.         LD BC,EFLA
  585.         CALL EFGExSAVEBC
  586.         LD BC,EFLB
  587.         LD A,32
  588.         CALL EFGExSAVEBCA
  589.         LD BC,EFSP
  590.         CALL EFGExSAVEBC
  591.         POP DE
  592.         INC E
  593.         RET
  594. ;IX=POS TABLE
  595. ;BC=PROC EXECUTE IN TABLE
  596. EFGExSAVEBC:
  597.         LD (IX),C
  598.         INC IX
  599.         LD (IX),B
  600.         INC IX
  601.         RET
  602. EFGExSAVEBCA:
  603.         CALL EFGExSAVEBC
  604.         DEC A
  605.         JR NZ,EFGExSAVEBCA
  606.         RET
  607.  
  608. ;IX=POS TABLE
  609. ;DE=PROC EXECUTE IN TABLE
  610. EFGExSAVEDE:
  611.         LD (IX),E
  612.         INC IX
  613.         LD (IX),D
  614.         INC IX
  615.         RET
  616. ;IX=POS TABLE
  617. ;HL=PROC EXECUTE IN TABLE
  618. EFGExSAVEHL:
  619.         LD (IX),L
  620.         INC IX
  621.         LD (IX),H
  622.         INC IX
  623.         RET
  624.  
  625. EFGExSAVEPOS:
  626.         LD (IX),L
  627.         INC IX
  628.         LD (IX),H
  629.         INC IX
  630.         RET
  631.  
  632. EFGEy00PTR DW 0
  633. ;HL=SAVE DATA
  634. EFGEy00:LD (EFGEy00PTR),HL
  635.         CALL EFGExBLxPOPHL   ;10
  636.         LD BC,EBLK_OD0       ;16
  637.         CALL EFGExBL
  638.         LD BC,EBLK_OE0       ;16
  639.         CALL EFGExBL
  640.         LD BC,EBLK_OD0       ;16
  641.         CALL EFGExBL
  642.         ;CALL EFGExHO0_DE     ;112
  643.         CALL EFGExHP0_DE     ;112
  644.         LD BC,EBLK_OD0       ;16
  645.         CALL EFGExBL
  646.         LD BC,EBLK_OE0       ;16
  647.         CALL EFGExBL
  648.         LD BC,EBLK_OD1       ;12
  649.         CALL EFGExBL
  650.         CALL EFGExBLxRET     ;10
  651.         RET
  652.  
  653. EFGEx00_32: CALL EFGEx00_16
  654. EFGEx00_16: CALL EFGEx00_8
  655. EFGEx00_8:  CALL EFGEx00_4
  656. EFGEx00_4:  CALL EFGEx00_2
  657. EFGEx00_2:  CALL EFGEx00
  658. ;IX=POS TABLE
  659. ;HL=SAVE DATA
  660. ;DE=SCR POS
  661. EFGEx00:CALL EFGExSAVEHL
  662.         CALL EFGExSAVEDE
  663.         CALL EFGEy00
  664.         CALL INCD
  665.         RET
  666.  
  667. EFGEz00_31: CALL EFGEz00_16
  668.             CALL EFGEz00_8
  669.             CALL EFGEz00_4
  670.             CALL EFGEz00_2
  671.             JR   EFGEz00
  672. EFGEz00_32: CALL EFGEz00_16
  673. EFGEz00_16: CALL EFGEz00_8
  674. EFGEz00_8:  CALL EFGEz00_4
  675. EFGEz00_4:  CALL EFGEz00_2
  676. EFGEz00_2:  CALL EFGEz00
  677. ;IX=POS TABLE
  678. ;DE=SCR POS
  679. EFGEz00:LD BC,(EFGEy00PTR)
  680.         CALL EFGExSAVEBC
  681.         CALL EFGExSAVEDE
  682.         CALL INCD
  683.         RET
  684.  
  685. EFGEy01PTR DW 0
  686. ;HL=SAVE DATA
  687. EFGEy01:LD (EFGEy01PTR),HL
  688.         CALL EFGExBLxPOPHL   ;10
  689.         LD BC,EBLK_OE0       ;16
  690.         CALL EFGExBL
  691.         LD BC,EBLK_OD0       ;16
  692.         CALL EFGExBL
  693.         LD BC,EBLK_OE0       ;16
  694.         CALL EFGExBL
  695.         ;CALL EFGExHO0_DE     ;112
  696.         CALL EFGExHP0_DE     ;112
  697.         LD BC,EBLK_OE0       ;16
  698.         CALL EFGExBL
  699.         LD BC,EBLK_OD0       ;16
  700.         CALL EFGExBL
  701.         LD BC,EBLK_OE1       ;12
  702.         CALL EFGExBL
  703.         CALL EFGExBLxRET     ;10
  704.         RET
  705.  
  706. EFGEx01_32: CALL EFGEx01_16
  707. EFGEx01_16: CALL EFGEx01_8
  708. EFGEx01_8:  CALL EFGEx01_4
  709. EFGEx01_4:  CALL EFGEx01_2
  710. EFGEx01_2:  CALL EFGEx01
  711. ;IX=POS TABLE
  712. ;HL=SAVE DATA
  713. ;DE=SCR POS
  714. EFGEx01:CALL EFGExSAVEHL
  715.         CALL EFGExSAVEDE
  716.         CALL EFGEy01
  717.         CALL INCD
  718.         RET
  719.  
  720. EFGEz01_31: CALL EFGEz01_16
  721.             CALL EFGEz01_8
  722.             CALL EFGEz01_4
  723.             CALL EFGEz01_2
  724.             JR   EFGEz01
  725. EFGEz01_32: CALL EFGEz01_16
  726. EFGEz01_16: CALL EFGEz01_8
  727. EFGEz01_8:  CALL EFGEz01_4
  728. EFGEz01_4:  CALL EFGEz01_2
  729. EFGEz01_2:  CALL EFGEz01
  730. ;IX=POS TABLE
  731. ;DE=SCR POS
  732. EFGEz01:LD BC,(EFGEy01PTR)
  733.         CALL EFGExSAVEBC
  734.         CALL EFGExSAVEDE
  735.  
  736.         CALL INCD
  737.  
  738.         RET
  739.  
  740.  
  741.  
  742. ;HL=SAVE DATA
  743. EFGExBLxJPCUR:
  744.         PUSH BC
  745.         LD (HL),195
  746.         INC HL
  747.         LD C,L
  748.         LD B,H
  749.         INC BC
  750.         INC BC
  751.         LD (HL),C
  752.         INC HL
  753.         LD (HL),B
  754.         INC HL
  755.         POP BC
  756.         RET
  757.  
  758. ;HL=SAVE DATA
  759. EFGExBLxPOPHL:
  760.         LD (HL),0E1H
  761.         INC HL
  762.         RET
  763.  
  764. ;HL=SAVE DATA
  765. EFGExBLxRET:
  766.         LD (HL),201
  767.         INC HL
  768.         RET
  769.  
  770. ;HL=SAVE DATA
  771. ;BC=BLOCK ADDR
  772. EFGExBL:LD A,(BC)
  773.         INC BC
  774. EFGEx2  PUSH AF
  775.         LD A,(BC)
  776.         INC BC
  777.         LD (HL),A
  778.         INC HL
  779.         POP AF
  780.         DEC A
  781.         JR NZ,EFGEx2
  782.         RET
  783.  
  784.         .MAC_EBLK_START
  785.          EQU EBLK_ADDR=$
  786.          DB 0
  787.         ..
  788.  
  789.         .MAC_EBLK_END
  790.          EQU EBLK_SIZE=$-EBLK_ADDR-1
  791.          ORG EBLK_ADDR
  792.          DB EBLK_SIZE
  793.          ORG @.
  794.         ..
  795.  
  796.  
  797. ;---16
  798. EBLK_OE0 MAC_EBLK_START
  799.          OUT (C),E
  800.          NOP
  801.          MAC_EBLK_END
  802. ;---16
  803. EBLK_OD0 MAC_EBLK_START
  804.          OUT (C),D
  805.          NOP
  806.          MAC_EBLK_END
  807. ;---16
  808. EBLK_OB0 MAC_EBLK_START
  809.          OUT (C),B
  810.          NOP
  811.          MAC_EBLK_END
  812. ;---12
  813. EBLK_OE1 MAC_EBLK_START
  814.          OUT (C),E
  815.          MAC_EBLK_END
  816. ;---12
  817. EBLK_OD1 MAC_EBLK_START
  818.          OUT (C),D
  819.          MAC_EBLK_END
  820. ;---112
  821. EBLK_HO0 MAC_EBLK_START
  822. EBLK_HOP LD (0),A       ;13
  823.          LD (0),A       ;13
  824.          LD (0),A       ;13
  825.          LD (0),A       ;13
  826.          LD (0),A       ;13
  827.          LD (0),A       ;13
  828.          LD (0),A       ;13
  829.          LD (0),A       ;13
  830.          NOP            ;4
  831.          NOP            ;4
  832.          MAC_EBLK_END
  833. ;---
  834. EFGExHO0_DE:
  835.         PUSH HL DE
  836.         LD HL,EBLK_HOP+1
  837.         LD B,8
  838. EFGEHx1 LD (HL),E
  839.         INC HL
  840.         LD (HL),D
  841.         INC HL
  842.         INC HL
  843.         INC DE
  844.         INC DE
  845.         INC DE
  846.         INC DE
  847.         DJNZ EFGEHx1
  848.         POP DE HL
  849.         LD BC,EBLK_HO0       ;112
  850.         CALL EFGExBL
  851.  
  852.         RET
  853.  
  854.  
  855.  
  856. ;    432
  857. ; 000XXX00B
  858. ;    000
  859. ;    001  S2
  860. ;    011  S3
  861. ;    111  S4
  862. ;    101  R3
  863. ;    100  R2
  864. ;    110  S3
  865. ;    010  R4
  866. ;    000  R3
  867. ;---112
  868. EBLK_HP0 MAC_EBLK_START
  869.          LD (HL),A      ;7
  870.          SET 2,L        ;8
  871.          LD (HL),A      ;7
  872.          SET 3,L        ;8
  873.          LD (HL),A      ;7
  874.          SET 4,L        ;8
  875.          LD (HL),A      ;7
  876.          RES 3,L        ;8
  877.          LD (HL),A      ;7
  878.          RES 2,L        ;8
  879.          LD (HL),A      ;7
  880.          SET 3,L        ;8
  881.          LD (HL),A      ;7
  882.          RES 4,L        ;8
  883.          LD (HL),A      ;7 .. 112 less 16
  884.          MAC_EBLK_END
  885. ;---
  886.  
  887. EFGExHP0_DE:
  888. ;        LD (EBLK_HPP+1),DE
  889. ;        CALL EFGExSAVEDE
  890.         LD BC,EBLK_HP0       ;128
  891.         CALL EFGExBL
  892.         RET
  893. ;---
  894.  
  895. INCD:   INC D
  896.         LD A,D
  897.         AND 7
  898.         RET NZ
  899.         LD A,E
  900.         ADD A,32
  901.         LD E,A
  902.         RET C
  903.         LD A,D
  904.         SUB 8
  905.         LD D,A
  906.         RET
  907.  
  908.  
  909. ;-----------------------------------------------------------------------------
  910.  
  911. SIZE    EQU $-START
  912.  
  913. EFSPTBL_SIZE EQU 2+(32+192*2+32+16)*2
  914.  
  915. EFSPTBL EQU $
  916.         ORG $+EFSPTBL_SIZE*4
  917. FREE    EQU $
  918.  
  919.  
  920.  
  921.  
  922.  
  923.         SaveTRD "%$ASAM.Compile.FileName%.TRD","1.C",START,SIZE
  924.         SaveBIN "%$ASAM.Compile.FileName%.BIN",START,SIZE
  925.         SaveLabels "%$ASAM.Compile.FileName%.txt"
  926.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement