Advertisement
RobusAsmCoder

Tack FIX

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