home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / BEEHIVE / UTILITYS / DEXIGN.ARC / DEXIGN.Z80 < prev    next >
Text File  |  1991-07-10  |  25KB  |  1,681 lines

  1.     .Z80
  2.     ASEG
  3.     .RADIX    10D
  4.     ORG    100H
  5.  
  6. CLS    MACRO    AMOUNT
  7.     LD    HL,61440
  8.     LD    DE,61441
  9.     LD    BC,AMOUNT
  10.     LD    (HL),32
  11.     LDIR
  12.     ENDM
  13.  
  14. PUSHALL    MACRO
  15.     PUSH    AF
  16.     PUSH    BC
  17.     PUSH    DE
  18.     PUSH    HL
  19.     PUSH    IX
  20.     PUSH    IY
  21.     ENDM
  22.  
  23. POPALL    MACRO
  24.     POP    IY
  25.     POP    IX
  26.     POP    HL
  27.     POP    DE
  28.     POP    BC
  29.     POP    AF
  30.     ENDM
  31.  
  32. BIOS    MACRO    NUMBER
  33.     LD    HL,(1)
  34.     PUSH    DE
  35.     LD    DE,3*NUMBER
  36.     ADD    HL,DE
  37.     POP    DE
  38.     LD    IX,$+7
  39.     PUSH    IX
  40.     JP    (HL)
  41.     ENDM
  42.  
  43. PRINT2    MACRO    STR,DST,COL
  44.     PUSH    HL
  45.     PUSH    DE
  46.     PUSH    AF
  47.     LD    A,COL
  48.     LD    (COLOUR),A
  49.     PUSH    DST
  50.     POP    DE
  51.     LD    HL,STR
  52.     CALL    PRINT
  53.     POP    AF
  54.     POP    DE
  55.     POP    HL
  56.     ENDM
  57.  
  58. PRINT3    MACRO    STR,DST,COL
  59.     LD    A,COL
  60.     LD    (COLOUR),A
  61.     LD    DE,DST
  62.     LD    HL,STR
  63.     CALL    PRINT
  64.     ENDM
  65.  
  66. DELAY    MACRO    LENGTH
  67.     PUSH    BC
  68.     PUSH    AF
  69.     LD    BC,LENGTH
  70.     DEC    BC
  71.     LD    A,B
  72.     OR    C
  73.     JR    NZ,$-3
  74.     POP    AF
  75.     POP    BC
  76.     ENDM
  77.  
  78. NO    MACRO    BUN
  79.     LD    BC,BUN
  80.     CALL    MUSIC
  81.     ENDM
  82.  
  83. NOISE    MACRO    FRE,DUR
  84.     LD    B,DUR
  85.     LD    C,FRE
  86.     CALL    MUSIC
  87.     ENDM
  88.  
  89. PRINT2    MACRO    STR,DST,COL
  90.     PUSH    HL
  91.     PUSH    DE
  92.     PUSH    AF
  93.     LD    A,COL
  94.     LD    (COLOUR),A
  95.     PUSH    DST
  96.     POP    DE
  97.     LD    HL,STR
  98.     CALL    PRINT
  99.     POP    AF
  100.     POP    DE
  101.     POP    HL
  102.     ENDM
  103.  
  104. PRINT3    MACRO    STR,DST,COL
  105.     LD    A,COL
  106.     LD    (COLOUR),A
  107.     LD    DE,DST
  108.     LD    HL,STR
  109.     CALL    PRINT
  110.     ENDM
  111.  
  112. LDPR    MACRO    STR,DST,LEN
  113.     LD    DE,DST
  114.     LD    HL,STR
  115.     LD    BC,LEN
  116.     LDIR
  117.     ENDM
  118.  
  119. PRI    MACRO    STR,DST
  120.      LD    DE,DST
  121.      LD    HL,STR
  122.     CALL    PRINT
  123.     ENDM
  124.  
  125.  
  126.  
  127.     JP    OMESS
  128.  
  129.     DB    0DH,0AH,'DEXIGN.COM - Super screen Editor by S.C.S! V2.2 10/7/91.'
  130.     DB    0DH,0AH,'Shareware - send a donation!',0DH,0AH,1AH
  131. COLOUR:    DB    0
  132. COLSET    EQU    25000
  133. COLBIT:    DB    0
  134.     DS    60
  135. STACK:    DS    10
  136. COLON:    DB    0
  137. MODE:    DB    0
  138. PCGSPC:    DS    49
  139. SPACE:    DS    17
  140. PCGDAT:    DB    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  141.     DB    255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255
  142.     DB    255,1,1,1,1,1,1,1,1,1,1,1,1,1,1,255
  143. BLKBEG:    DB    0
  144. BLKEND:    DB    0
  145. COPTYP:    DB    'A'    ;S-SINGLE,M-MULTIPLE,A-ALL
  146. STR1:    DB    15,'1. Create or Edit a Font   - PCG EDITOR',4
  147. STR2:    DB    14,'2. Save a Screen to Disk   - GRSAVE',4
  148. STR3:    DB    13,'3. Load a Screen from Disk - GRLOAD',4
  149. STR4:    DB    11,'4. Special Functions       - MODE, ETC',4
  150. STR5:    DB    10,'5. Edit a Screen           - SCREEN EDITOR',4
  151. STR6:    DB    9,'6. Exit to System          - QUIT - CP/M',4
  152. STR7:    DB    15,'7. Disk Functions          - DIR ETC...',4
  153. STR8:    DB    14,'8. Edit Colour             - COLOUR EDITOR',4
  154. STR03:    DB    13,'9. Hires II Functions      - PREMIUMS ONLY',4
  155.     DB    10,'A. Bit-Draw Functions      - 64 BY 16 ONLY',4
  156.     DB    7,'B. Colour Sector Editor    - BY M.A.S / M.L.C',4
  157. STR9:    DB    11,'Saving Mode (PRESS ESC - TO ABORT)',4
  158. STR10:    DB    11,'Loading Mode (PRESS ESC - TO ABORT)',4
  159.  
  160. STR9E:    DB    11,'Hires II Saving Mode (PRESS ESC - TO ABORT)',4
  161. STR10E:    DB    11,'Hires II Loading Mode (PRESS ESC - TO ABORT)',4
  162.  
  163. STR11:    DB    15,'1) Define movement keys',4
  164. STR12:    DB    11,'SPECIAL FUNCTIONS:-       (ESC-ABORT)',4
  165. STR14:    DB    14,'2) Impose a screen (on top of current pcg & colour)',4
  166. STR15:    DB    13,'3) Impose a font (on top of current screen & colour)',4
  167. STR16:    DB    9,'4) Activate buffer sector',4
  168. STR16O:    DB    10,'4) De-activate buffer sector',4
  169. STR1O8:    DB    9,'5) Activate colour',4
  170. STR18O:    DB    10,'5) De-activate colour',4
  171. SSTR1:    DB    9,'6) Activate attribute',4
  172. SSTR2:    DB    10,'6) De-activate attribute',4
  173. SSTR3:    DB    9,'7) Activate screen',4
  174. SSTR4:    DB    10,'7) De-activate screen',4
  175. SSTR5:    DB    9,'8) Activate pcg',4
  176. SSTR6:    DB    10,'8) De-activate pcg',4
  177.  
  178. STRXX:    DB    5,'----------------------------------------------------------------',4
  179. STR59:    DB    15,'9) Change screen mode. Current mode:-',4
  180. STR61:    DB    14,'64 By 16',4
  181. STR62:    DB    14,'64 By 32',4
  182. STR192:    DB    14,'80 By 24',4
  183. STR18:    DB    10,'What character would you like?'
  184. STR19:    DB    9,'Try again...',4
  185. STR20:    DB    15,'Enter File Name',4
  186.  
  187. STR21:    DB    15,'Log on to/Reset which drive (A,B,C,D,L,M)',4
  188. STR1A:    DB    13,'Select one of the following:-  (Esc-Exit)',4
  189. STR2A:    DB    11,'A) Change drive',4
  190. STR3A:    DB    13,'B) Dir + Disk room',4
  191. STR4A:    DB    14,'C) Diskreset drive',4
  192.  
  193. STR22:    DB    9,'File Already Exists. Overwrite? (Y/N)',4
  194. STR23:    DB    15,'Command Keys:',4
  195. STR24:    DB    14,'Movement:    Special:',4
  196. STR25:    DB    3,'   A        "R" - UNDO',4
  197. STR261:    DB    3,' < + >      "M" - FINISH',4
  198. STR27:    DB    3,'   Z        "O" - FORWARD ONE CHAR',4
  199. STR28:    DB    3,'            "P" - BACK ONE CHAR',4
  200. STRZZ:    DB    9,'||-----------------------------------------',4
  201. STR281:    DB    5,'Pixel:  "SPACE" - SET, "G" - RESET',4
  202. STR282:    DB    5,'Row:    I - INVERT, S - SET, D - DELETE',4
  203. STR283:    DB    5,'Column: J - INVERT, F - SET, H - DELETE',4
  204. STR29:    DB    10,'Your Character:',4
  205. STR30:    DB    3,'Here are the current Characters: ',4
  206. STRYY:    DB    9,'||',4
  207. STR32:    DB    11,'You may (E)dit a character, e(X)it or access (F)unctions.',4
  208. STR33:    DB    13,'Which Character? ',4
  209. STR34:    DB    14,'[]',4
  210. STR86:    DB    7,129,130,4
  211. STR85:    DB    7,128,128,4
  212. STR36:    DB    7,128+30,128+30,4
  213. STR35:    DB    7,128+31,128+32,4
  214. STR38:    DB    15,'0. Change Parameters for Block Functions',4
  215. STR39:    DB    14,'1. Copy Character',4
  216. STR40:    DB    13,'2. Erase',4
  217. STR41:    DB    11,'3. Fill',4
  218. STR42:    DB    10,'4. Invert',4
  219. STR43:    DB    9,'5. Swap up-down',4
  220. STR44:    DB    15,'6. Swap left-right',4
  221. STR26:    DB    14,'7. Impose a Char. on another Char. ("R" to undo)',4
  222. STR45:    DB    15,'1. Single Character',4
  223. STR46:    DB    14,'2. Group of Characters (i.e. ->  R-Z )',4
  224. STR47:    DB    13,'3. Entire font',4
  225. STR48:    DB    15,'Currently set at ',4
  226. STR55:    DB    10,'Single Character.   ',4
  227. STR54:    DB    10,'Multiple Characters.',4
  228. STR08:    DB    10,'Entire Font.        ',4
  229. STR49:    DB    14,'Source Character',4
  230. STR50:    DB    11,'Destination Character',4
  231. STR51:    DB    14,'Block Start',4
  232. STR52:    DB    11,'Block End',4
  233. STR53:    DB    15,'Enter as Character, or ^X to enter as number',4
  234. STR57:     DB    11,'File Not Found',4
  235. STR58:    DB    9,'Aborted',4
  236. STR72:    DB    15,'Enter number (0-127):',4
  237. STR90:    DB    13,'Current moving keys:',4
  238. STR91:    DB    10,'Left    ',4
  239. STR92:    DB    10,'Right:  ',4
  240. STR93:    DB    10,'Up:     ',4
  241. STR94:    DB    10,'Down:   ',4
  242. STR95:    DB    15,'Enter new keys (^A,^C,^F,^G,^K,^L,^P,^Q,^Z unavailable)',4
  243. STR100:    DB    15,'Hires II Functions',4
  244. STR102:    DB    9,'1) Edit Attribute Ram',4
  245. STR103:    DB    10,'2) Activate Hires II',4
  246. STR104:    DB    11,'2) De-Activate Hires II',4
  247. STR105:    DB    13,'3) Create Blank Hires II Screen',4
  248. STR101:    DB    14,'4) View Electric Paintbrush File (Capture)',4
  249. STR107:    DB    15,'5) Convert 64*16 to Hires II',4
  250.     DB    9,'6) Convert 64*32 to Hires II',4
  251. STR108:    DB    10,'7) Copy Current Bank to all Banks',4
  252.  
  253. STR106:    DB    11,'   (Esc - return to Main Menu)',4
  254.  
  255. HEAD1:    DB    15,'Attribute Editor',4
  256.     DB    9,'1) Left-Right strip fill',4
  257.     DB    10,'2) Top-Bottom strip fill',4
  258.     DB    14,'3) Bank 1 Attrbute fill',4
  259.     DB    11,'   (ESC - RETURN)',4
  260. IMPOSS:    DB    1,2,3,4,4,11,12,16,17,26
  261. DEXIGN:    DB    0,'DEXIGN  COM',0,0,0,0
  262. GRSNUM:    DB    0
  263. PART99:    DB    0
  264. OPCGON:    DB    0
  265. BACKST:    DB    0
  266. XYPOS:    DW    0
  267. PROVED:    DB    0
  268. WHAPCG:    DB    0
  269. WHEPCG:    DW    0
  270. OTHERB:    DB    0
  271. YPOS:    DB    0
  272. XPOS:    DB    0
  273. TOGG1:    DB    0
  274. SET:    DB    0
  275. LASCOL:    DW    0
  276. DEF1:    DB    4
  277. DEF2:    DB    19
  278. DEF3:    DB    5
  279. DEF4:    DB    24
  280.     DB    107
  281.     DB    64
  282.     DB    81
  283.     DB    55
  284.     DB    18
  285.     DB    9
  286.     DB    18
  287.     DB    18
  288.     DB    72
  289.     DB    15
  290.     DB    20
  291.     DB    15
  292.     DB    0
  293.     DB    0
  294.     DB    0
  295. ZB3:    DB    0
  296.     DB    6BH
  297.     DB    40H
  298.     DB    51H
  299.     DB    37H
  300.     DB    25H
  301.     DB    9H
  302.     DB    20H
  303.     DB    23H
  304.     DB    48H
  305.     DB    07H
  306.     DB    20H
  307.     DB    0FH
  308.     DB    20H
  309.     DB    0
  310.     DB    0
  311. CTREND:    DB    0
  312. SAVEEM:    DW    0
  313.     DB    6BH
  314.     DB    50H
  315.     DB    58H
  316.     DB    37H
  317.     DB    1BH
  318.     DB    05H
  319.     DB    18H
  320.     DB    1AH
  321.     DB    48H
  322.     DB    0AH
  323.     DB    2AH
  324.     DB    0AH
  325.     DB    20H
  326.     DB    0,0
  327. BY8024:    DB    0
  328. XYTOS:    DS    2
  329. XBPOS:    DS    1
  330. YBPOS:    DS    1
  331. CHER17:    DB    0
  332. CHER20:    DW    0
  333. CHER15:    DW    0
  334. CHER16:    DS    1
  335. LSTR1:    DB    3,'1) Colour screen according to colour table.',4
  336.     DB    6,'2) Display screen.',4
  337.     DB    5,'3) Enter entire colour table A LA superzap.',4
  338.     DB    7,'4) Set background colour.',4
  339.     DB    2,'5) Clear colour table.',4
  340.     DB    1,'6) Undo and try again.',4
  341.     DB    15,'   (Esc - Return to Main menu)',4
  342. CSTR0:    DB    7,'0) Black ',4
  343.     DB    1,'1) Red ',4
  344.     DB    2,'2) Green',4
  345.     DB    3,'3) Brown',4
  346.     DB    4,'4) Blue',4
  347.     DB    5,'5) Purple',4
  348.     DB    6,'6) Cyan',4
  349.     DB    7,'7) Light Grey',4
  350.     DB    8,'A) Dark Grey',4
  351.     DB    9,'B) Red II',4
  352.     DB    10,'C) Green II',4
  353.     DB    11,'D) Yellow',4
  354.     DB    12,'E) Blue II',4
  355.     DB    13,'F) Purple II',4
  356.     DB    14,'G) Cyan II',4
  357.     DB    15,'H) White',4
  358. CURFOR:    DB    14,'Colour of highlighted character:',4
  359. CURBAK:    DB    14,'Current background colour:',4
  360. FORE_COL:    DB    7
  361. IFQUIT:    DB    2,'Exit to CPM (Y/N)',4
  362. GRAFIXPTR:
  363.     DS    2        ;pointEr to grApHiCs AddrEss 
  364. OPTBYTE:
  365.     DS    1        ;BIT 0 in tHis BytE Controls printing.
  366. FILE_FCB:
  367.     DS    36
  368. PRBIT:    DS    1        ;CurrEnt BIT to sEt/rEsEt
  369. PCNt:    DS    2        ;position in print BUFFEr
  370.     DB    255        ;so print wORks propErly
  371. PRINT_BUFR    EQU 17000    ;A wHolE linE. PiCturE is AssEmBlEd linE
  372. FBUF_PTR:DS    2
  373. BUF_END:DS    2
  374. FIL_END:DS    1    
  375. FBUFFER    EQU    15000
  376. FBUFFEREND    EQU    15000+1024
  377. PROMPT:    DB    15,'Viewing EP File - ENTER NAME',4
  378. OPT0:    DB    11,'        Options: "I"-Inverted, "S"-shift',4
  379. OPT1:    DB    13,'       (Press space at any time to pause)',4
  380. OPT2:    DB    14,'(and "C" to capture picture/"Esc" to abort view)',4
  381. NOT_FOUND:
  382.     DB    9,'File not found!',4
  383. DIRSTR:    DB    11,'     K Used ',4
  384. ALLS:    DB    0,'???????????'
  385.     DB    0,0,0,0
  386. WARN:    DB    9,'Not the right Graphics Mode (64*16)',4
  387. WARN1:    DB    9,'Not the right Graphics Mode (64*32)',4
  388. PESH1:    DB    14,'Current Load/Save Format:',4
  389. PESH2:    DB    7,'128 Byte Buffer (Colour Table)',4
  390. PESH3:    DB    7,'Colour Ram',4
  391. PESH4:    DB    7,'Pcg Ram',4
  392. PESH5:    DB    7,'Screen Ram',4
  393. PESH6:    DB    7,'Attribute Ram',4 
  394. PESH7:    DB    7,'In Mode... ',4
  395. DRIVE:    DB    0
  396. PREMIUM:
  397.     DB    0
  398. COLOUR_SECTOR:    DS    130
  399. STRLL:    DB    11,'...or press "C" to change PCG Banks.',4
  400. CMON:    DB    0
  401. ATTRON:    DB    0
  402. SCRON:    DB    1
  403. PCGON:    DB    1
  404. SRC1:    DB    11,'Imposing Screen.',4
  405. SRC2:    DB    11,'Imposing PCG Font.',4
  406. COLSECT: DB    1    ; DEFAULTS TO COLOUR SECTOR PRESENT
  407. COLSCREEN: DB    1    ; DEFAULTS TO COLOUR SCREEN FORMAT
  408. BANK_NO: DB    1
  409. HIRESII:DB    0
  410. BITL8:    DB    0
  411. BITU8:    DB    0
  412. LAST:    DW    RIGHGO
  413. STATS:    DS    2
  414.  
  415.  
  416.  
  417.  
  418. OMESS:    LD    HL,(1)
  419.     LD    DE,30H
  420.     ADD    HL,DE
  421.     LD    A,(HL)
  422.     LD    D,0
  423.     CP    2
  424.     JP    C,TEST2
  425.     CP    6
  426.     JP    NC,TEST2
  427.     JP    KXBIOS
  428. TEST2:    CP    7
  429.     JP    C,TEST3
  430.     CP    17H
  431.     JP    NC,TEST3
  432.     JP    KXBIOS
  433. TEST3:    CP    1EH
  434.     JP    C,TEST4
  435.     CP    2FH
  436.     JP    NC,TEST4
  437.     JP    KXBIOS
  438. TEST4:    CP    44H
  439.     JP    C,K6545
  440.     CP    0BFH
  441.     JP    NC,K6545
  442. KXBIOS:    LD    D,0FFH
  443. K6545:    LD    A,D
  444.     CP    255
  445.     JP    Z,TCC
  446.     JP    DONE
  447. INKEY1:    PUSH    BC
  448.     LD    C,A
  449.     LD    B,A
  450.     LD    A,12H
  451.     OUT    (0CH),A
  452.     LD    A,B
  453.     RRCA
  454.     RRCA
  455.     RRCA
  456.     RRCA
  457.     AND    3
  458.     OUT    (0DH),A
  459.     LD    A,13H
  460.     OUT    (0CH),A
  461.     LD    A,B
  462.     RLCA
  463.     RLCA
  464.     RLCA
  465.     RLCA
  466.     OUT    (0DH),A
  467.     LD    A,1
  468.     OUT    (0BH),A
  469.     LD    A,10H
  470.     OUT    (0CH),A
  471.     IN    A,(0DH)
  472.     LD    A,1FH
  473.     OUT    (0CH),A
  474.     OUT    (0DH),A
  475. FA:    IN    A,(0CH)
  476.     BIT    7,A
  477.     JR    Z,FA
  478.     IN    A,(0CH)
  479.     CPL
  480.     BIT    6,A
  481.     LD    A,0
  482.     OUT    (0BH),A
  483.     LD    A,C
  484.     POP    BC
  485.     RET
  486. TCC:    LD    DE,INKEY1
  487.     LD    HL,COMM
  488.     LD    BC,3
  489.     LDIR
  490.     JP    DONE
  491. COMM:    JP    XBIOS
  492. XBIOS:    LD    C,A
  493.     LD    A,15
  494.     RST    28H
  495.     RET
  496. PRINUM:    LD    A,0
  497.     LD    BC,10000
  498.     CALL    PRICHR
  499.     LD    BC,1000
  500.     CALL    PRICHR
  501.     LD    BC,100
  502.     CALL    PRICHR
  503.     LD    BC,10
  504.     CALL    PRICHR
  505.     LD    BC,1
  506.     CALL    PRICHR
  507.     RET
  508. PRINU3:    LD    L,A
  509.     LD    H,0
  510.     XOR    A
  511.     LD    BC,100
  512.     CALL    PRICHR
  513.     LD    BC,10
  514.     CALL    PRICHR
  515.     LD    BC,1
  516.     CALL    PRICHR
  517.     RET
  518. PRICHR:    SBC    HL,BC
  519.     JP    C,PRINCH
  520.     INC    A
  521.     JP    PRICHR
  522. PRINCH:    ADD    HL,BC
  523.     ADD    A,30H
  524.     LD    (DE),A
  525.     INC    DE
  526.     XOR    A
  527.     RET
  528. DONE:    LD    C,25
  529.     CALL    5
  530.     LD    (DRIVE),A
  531.     LD    A,0
  532.     LD    (MODE),A
  533.     LD    SP,STACK
  534.     LD    A,(63488)
  535.     PUSH    AF
  536.     LD    A,64
  537.     OUT    (8),A
  538.     LD    (63488),A
  539.     LD    A,0
  540.     OUT    (8),A
  541.     LD    A,(63488)
  542.     CP    64
  543.     JR    NZ,COLLON
  544.     LD    A,0
  545.     LD    (COLON),A
  546.     JR    SART
  547. COLLON:    LD    A,255
  548.     LD    (COLON),A
  549. SART:    POP    AF
  550.     LD    (63488),A
  551.     LD    A,(61440)
  552.     PUSH    AF
  553.     LD    A,144
  554.     OUT    (28),A
  555.     LD    (61440),A
  556.     LD    A,128
  557.     OUT    (28),A
  558.     LD    A,(61440)
  559.     LD    B,A
  560.     POP    AF
  561.     CP    B
  562.     JR    Z,YESPM
  563.     XOR    A
  564.     LD    (PREMIUM),A
  565.     JR    STAT
  566. YESPM:    LD    A,255
  567.     LD    (PREMIUM),A
  568. STAT:    CALL    CLS
  569. START:    CALL    ZB1
  570. START1:    CALL    CLS
  571.     LD    DE,61440
  572.     LD    HL,STR1
  573.     CALL    PRINT
  574.     LD    DE,61440+64
  575.     CALL    PRINT
  576.     LD    DE,61440+128
  577.     CALL    PRINT
  578.     LD    DE,61440+128+64
  579.     CALL    PRINT
  580.     LD    DE,61440+256
  581.     CALL    PRINT
  582.     LD    DE,61440+256+64
  583.     CALL    PRINT
  584.     LD    DE,61440+256+128
  585.     CALL    PRINT
  586.     LD    DE,61440+256+128+64
  587.     CALL    PRINT
  588.     LD    DE,61440+512        ; THIS FUNCTION HAS A NEW PURPOSE!
  589.     CALL    PRINT
  590.     LD    DE,61440+512+64
  591.     CALL    PRINT
  592.     LD    DE,61440+512+128
  593.     CALL    PRINT
  594. STAR1:    CALL    INCHRU
  595.     CP    '1'
  596.     JP    Z,PART1
  597.     CP    '2'
  598.     JP    Z,PART2
  599.     CP    '3'
  600.     JP    Z,PART3
  601.     CP    '4'
  602.     JP    Z,PART4
  603.     CP    '5'
  604.     JP    Z,PART5
  605.     CP    '6'
  606.     JP    Z,PART6
  607.     CP    '7'
  608.     JP    Z,PART7
  609.     CP    '8'
  610.     JP    Z,PART8
  611.     CP    '9'
  612.     JP    Z,PART9
  613.     CP    'A'
  614.     JP    Z,DRAW
  615.     CP    'B'
  616.     JP    Z,COLTABX    
  617.     JR    STAR1
  618. PART6:    CALL    CLS
  619.     LD    DE,61440+10
  620.     LD    HL,IFQUIT
  621.     CALL    PRINT
  622.     CALL    INCHRU
  623.     CP    'N'
  624.     JP    Z,STAT
  625.     JP    0
  626.  
  627. PART9:    LD    A,(PREMIUM)
  628.     CP    0
  629.     JP    Z,START
  630.     CALL    CLS
  631. PART9F:    CALL    ZB1
  632.     LD    HL,STR100
  633.     LD    DE,61440+15
  634.     CALL    PRINT
  635.     LD    DE,61440+64
  636.     CALL    PRINT
  637.     LD    A,(HIRESII)
  638.     CP    0
  639.     JR    Z,OKPRTY
  640.     LD    HL,STR104
  641. OKPRTY:    LD    DE,61440+128
  642.     CALL    PRINT
  643.     LD    HL,STR105
  644.     LD    DE,61440+128+64
  645.     CALL    PRINT
  646.     LD    DE,61440+256
  647.     CALL    PRINT
  648.     LD    DE,61440+256+64
  649.     CALL    PRINT
  650.     LD    DE,61440+256+128
  651.     CALL    PRINT
  652.     LD    DE,61440+256+192
  653.     CALL    PRINT
  654.     LD    DE,61440+256+192+64
  655.     CALL    PRINT
  656.  
  657. PART9Q:    CALL    INCHR
  658.     CP    '1'
  659.     JP    Z,PART1E
  660.     CP    '2'
  661.     JP    Z,PART2E
  662.     CP    '3'
  663.     JP    Z,BLANK_SCREEN
  664.     CP    '4'
  665.     JP    Z,PART9E
  666.     CP    '5'
  667.     JP    Z,CONVERT1
  668.     CP    '6'
  669.     JP    Z,CONVERT2
  670.     CP    '7'
  671.     JP    Z,MEGAMIX
  672.     CP    27
  673.     JP    Z,START
  674.     JR    PART9Q
  675.  
  676. PART2E:    LD    A,(HIRESII)
  677.     CP    0
  678.     JR    Z,LOPOG1
  679.     XOR    A
  680.     LD    (HIRESII),A
  681.     LD    (ATTRON),A
  682.     LD    A,1
  683.     LD    (BANK_NO),A
  684.     JP    PART9
  685. LOPOG1:    LD    A,255
  686.     LD    (HIRESII),A
  687.     LD    (ATTRON),A
  688.     JP    PART9
  689.  
  690.  
  691. OPTIONS:
  692.     CALL    CLS
  693.     LD    DE,61440+14
  694.     LD    HL,OPT0
  695.     CALL    PRINT
  696.     LD    DE,61440+13+64
  697.     CALL    PRINT
  698.     LD    DE,61440+13+128
  699.     CALL    PRINT
  700.     CALL    INCHRU
  701.     CP    'I'
  702.     JR    Z,INVR
  703.     CP    'S'
  704.     JR    Z,SHFTI
  705.     RET
  706.  
  707.  
  708. INVR:    LD    A,1
  709.     LD    (STATS),A
  710.     JP    OPTIONS
  711.  
  712. SHFTI:    LD    A,1
  713.     LD    (STATS+1),A
  714.     JP    OPTIONS
  715.  
  716.  
  717.  
  718.  
  719. PART9E:    CALL    CLSPRINT
  720.     LD    DE,61440+20
  721.     LD    HL,PROMPT
  722.     CALL    PRINT
  723.     LD    HL,61440+64+20
  724.     CALL    INPUT
  725.     CALL    FILEXI
  726.     LD    HL,0
  727.     LD    (STATS),HL
  728.     CALL    OPTIONS    
  729.  
  730.     CALL    VIEW_PIC
  731.     CALL    INCHR
  732.     CALL    FIX_ATTR
  733.     JP    PART9
  734.  
  735.  
  736. VIEW_PIC:
  737.     LD    DE,5CH
  738.     LD    C,15
  739.     CALL    5
  740.     CP    255
  741.     JP    NZ,FILE_OK
  742.     CALL    CLS
  743.     LD    HL,NOT_FOUND
  744.     LD    DE,61440+24
  745.     CALL    PRINT
  746.     RET
  747.  
  748.  
  749. FILE_OK:
  750.     LD    HL,FBUFFEREND
  751.     LD    (FBUF_PTR),HL
  752.     LD    (BUF_END),HL
  753.     XOR    A
  754.     LD    (FIL_END),A
  755.  
  756.     CALL    GNC
  757.     CALL    GNC
  758.     OR    A
  759.  
  760.     LD    BC,538    ;+126
  761.     JR    NZ,SK512P
  762.     LD    BC,510    ;-2
  763. SK512P:    PUSH    AF
  764.     LD    A,(STATS+1)
  765.     CP    0
  766.     JR    Z,ENDSHT
  767.     PUSH    BC
  768.     POP    HL
  769.     LD    DE,-32
  770.     ADD    HL,DE
  771.     PUSH    HL
  772.     POP    BC
  773. ENDSHT:    POP    AF    
  774.  
  775. SK512:    CALL    GNC
  776.     DEC    BC
  777.     LD    A,B
  778.     OR    C
  779.     JP    NZ,SK512
  780.     CALL    SETPRINT 
  781.  
  782.     CALL    INIT_SCR
  783.  
  784. PROCESS:
  785.     PUSH    HL
  786.     PUSH    DE
  787.     PUSH    BC
  788.     CALL    IF_PAUSE
  789.     POP    BC
  790.     POP    DE
  791.     POP    HL
  792.  
  793.     CALL    GNC
  794.     RET    NZ
  795.  
  796.     BIT    7,A
  797.     JP    Z,MIXDATA
  798.  
  799. REPEATING:
  800.     LD    B,A
  801.     LD    A,1
  802.     SUB    B        ; STRANGE 'CRUNCHING' PROCESS
  803.     LD    B,A
  804.     CALL    GNC        ; 1-X BYTES x NEXT CHAR
  805.     RET    NZ
  806.  
  807. RPT1:    CALL    PUTBYTE
  808.     DJNZ    RPT1
  809.     JP    PROCESS
  810.  
  811. MIXDATA:
  812.     LD    B,A
  813.     INC    B
  814. MDLOOP:    CALL    GNC        ; X x X DIFFERENT CHARS.
  815.     RET    NZ
  816.     CALL    PUTBYTE
  817.     DJNZ    MDLOOP
  818.     JP    PROCESS
  819. GNC:    PUSH    HL
  820.     PUSH    DE
  821.     PUSH    BC
  822. GNC2:    LD    DE,(BUF_END)
  823.     LD    HL,(FBUF_PTR)    ;Equal? i.E. End oF FILE?
  824.  
  825.     CALL    CR        ; TWO BYTE COMPARE
  826.     JP    NZ,RETCHAR
  827.  
  828.     LD    A,(Fil_End)
  829.     OR    A
  830.     JP    NZ,TOTALRET
  831.  
  832.     LD    B,8        ;REAd 1024 BytEs
  833.     LD    DE,FBUFFER
  834. READ_LOOP:
  835.     PUSH    BC
  836.     PUSH    DE
  837.     PUSH    DE
  838.     LD    C,26
  839.     CALL    5
  840.     POP    DE
  841.     LD    DE,5CH
  842.     LD    C,20
  843.     CALL    5
  844.     POP    DE
  845.     POP    BC
  846.     OR    A
  847.     JP    NZ,FILE_ENDED
  848.  
  849.     LD    HL,128
  850.     ADD    HL,DE
  851.     EX    DE,HL
  852.     DJNZ    READ_LOOP
  853.     JP    RETCH2
  854.  
  855. FILE_ENDED:
  856.     LD    A,255
  857.     LD    (FIL_END),A
  858.     PUSH    DE
  859.     LD    DE,5CH
  860.     LD    C,16
  861.     CALL    5
  862.     POP    DE
  863.  
  864. RETCH2:    LD    (BUF_END),DE
  865.     LD    HL,FBUFFER
  866.     LD    (FBUF_PTR),HL
  867.     JP    GNC2
  868.  
  869. RETCHAR:
  870.     LD    A,(HL)
  871.     INC    HL
  872.     LD    (FBUF_PTR),HL
  873.     CP    A
  874. TOTALRET:
  875.     POP    BC
  876.     POP    DE
  877.     POP    HL
  878.     RET
  879.  
  880. PUTBYTE:
  881.     PUSH    BC
  882.     PUSH    AF
  883.     LD    C,A
  884.     LD    B,8
  885. BLOOP:    RLC    C
  886.     CALL    PUT_BIT
  887.     DJNZ    BLOOP
  888.     POP    AF
  889.     POP    BC
  890.     RET
  891.  
  892. PUT_BIT:
  893.     PUSH    HL
  894.     PUSH    DE
  895.     PUSH    BC
  896.     PUSH    AF        ;sAvE BIT stAtus
  897.     LD    HL,(PCNT)    ;pointing pAst End oF linE?
  898.     LD    A,H
  899.     CP    2
  900.     JP    NZ,OKTOPUT
  901.     LD    A,l
  902.     CP    40H
  903.     JP    NZ,OKTOPUT
  904.     LD    HL,0
  905.     LD    (PCNT),HL
  906.     LD    A,(PRBIT)
  907.     RRA            ;do nEXt linE
  908.     LD    (PRBIT),A
  909.     JP    NC,OKTOPUT
  910.     CALL    printlinE
  911.     CALL    SETPRINT
  912. OKTOPUT:
  913.     POP    AF
  914.     LD    HL,(PCNT)
  915.     JP    NC,BITPUT
  916.     PUSH    HL
  917.     LD    DE,PRINT_BUFR        
  918.     ADD    HL,DE
  919.     LD    B,(HL)
  920.     LD    A,(PRBIT)
  921.     OR    B
  922.     LD    (HL),A
  923.     POP    HL
  924. BITPUT:    INC    HL
  925.     LD    (PCNT),HL
  926.     POP    BC
  927.     POP    DE
  928.     POP    HL
  929.     RET
  930.  
  931. PRINTLINE:
  932.     CALL    SCROLL_SCRN
  933.  
  934.     LD    A,(STATS)
  935.     CP    0
  936.     JR    Z,PRINTLIN
  937.     LD    IY,PRINT_BUFR+32
  938.     LD    BC,64*8
  939.  
  940. PRINTLN:
  941.     LD    D,(IY)
  942.     LD    A,255
  943.     SUB    D
  944.     LD    (IY),A
  945.     INC    IY
  946.     DEC    BC
  947.     LD    A,B
  948.     OR    C
  949.     JR    NZ,PRINTLN
  950.  
  951.  
  952.  
  953. PRINTLIN:
  954.     LD    DE,PRINT_BUFR+32
  955.     LD    B,64            ;tHis mAny CHArACtEr positions
  956.     LD    HL,0F800H+400H+8    ;tArgEt AddrEss
  957.     
  958.  
  959.  
  960. PRSCNA:    PUSH    BC
  961.     LD    B,8
  962. PRSCNB:    LD    A,(DE)
  963.     CPl                ;gEt BytE From BUFFEr AND mAkE
  964.                     ;rEAdy to displAy
  965.     PUSH    HL            ;sAvE tArgEt AddrEss
  966.     LD    C,8
  967. PRSCNC:    RL    A
  968.     RL    (HL)
  969.     INC    HL
  970.     DEC    C
  971.     JP    NZ,PRSCNC
  972.     POP    HL            ;gEt BACk tArgEt AddrEss
  973.     INC    DE
  974.     DJNZ    PRSCNB
  975.     LD    BC,16
  976.     ADD    HL,BC
  977.     POP    BC
  978.     DJNZ    prsCnA            ;AND do tHE rEst oF tHE linE 
  979.     RET
  980.  
  981. INIT_SCR:
  982.     LD    HL,0F800H
  983.     LD    DE,0F801H
  984.     LD    B,8        ;BAnk Count
  985. CLR_BANK:
  986.     PUSH    BC
  987.     PUSH    DE
  988.     PUSH    HL
  989.     LD    A,B
  990.     DEC    A
  991.     SET     7,A        ; SELECT BIT 7 FOR BANK SELECT
  992.     OUT    (28),A
  993.     LD    BC,2047
  994.     LD    (HL),0
  995.     LDIR
  996.     POP    HL
  997.     POP    DE
  998.     POP    BC
  999.     DJNZ    CLR_BANK
  1000.  
  1001.     LD    HL,0F000H
  1002.     LD    DE,0F800H
  1003.     LD    A,64
  1004.     OUT    (8),A        ; CLEAR COLOUR
  1005. HGH_DENSITY:
  1006.     LD    A,l
  1007.     OR    80H        ; COOL WAY ON SETTING UP HIRES II
  1008.     LD    (HL),A
  1009.     LD    A,0FH        ;BrigHt wHitE on BlACk
  1010.     LD    (DE),A
  1011.     INC    DE
  1012.     INC    HL
  1013.     LD    A,H
  1014.     CP    0F4H
  1015.     JP    NZ,HGH_DENSITY
  1016.  
  1017.     XOR    A
  1018.     OUT    (8),A
  1019.  
  1020.     LD    HL,61440
  1021.     LD    A,144
  1022.     OUT    (28),A        ; OUT 28,144
  1023.  
  1024. SET_ATTR:
  1025.     PUSH    HL
  1026.     POP    DE
  1027.     RL    E
  1028.     RL    D
  1029.     LD    A,D
  1030.     AND    7
  1031.     LD    (HL),A
  1032.     INC    HL
  1033.  
  1034.     LD    A,H
  1035.     CP    0F4H        ; SCR RAM FINISHED....
  1036.     JP    NZ,SET_ATTR
  1037.  
  1038.     LD    A,128
  1039.     OUT    (28),A        ;LATCH BACK SCREEN
  1040.     RET
  1041.  
  1042. SCROLL_SCRN:
  1043.     LD    B,7
  1044.  
  1045. SCRLLSCA:
  1046.     LD    A,7
  1047.     SUB    B
  1048.     OR    80H        ;SELECT PCG BANK
  1049.     OUT    (1CH),A        
  1050.     PUSH    BC
  1051.     CALL    SCROLL_1    
  1052.     POP    BC
  1053.     LD    A,8
  1054.     SUB    B
  1055.     OR    80H
  1056.     PUSH    BC
  1057.     CALL    SCROLL_2
  1058.     POP    BC
  1059.     DJNZ    SCRLLSCA
  1060.  
  1061.     LD    A,87H
  1062.     OUT    (1CH),A
  1063.     CALL    SCROLL_1    ;LEAvE PCG BANK 7 SELECTED
  1064.  
  1065.     RET
  1066.  
  1067.  
  1068. SCROLL_1:
  1069.  
  1070.     LD    HL,0F808H    ;SOURCE
  1071.     LD    DE,0F800H    ;DESTINATION    
  1072.     LD    C,64        ;FOR 64 CHARACTERS!
  1073.  
  1074.     CALL    SPART1
  1075.  
  1076.     LD    HL,0F800H+400H    
  1077.     LD    DE,0F808H
  1078.     LD    C,64
  1079.  
  1080.     CALL    SPART1
  1081.  
  1082.     LD    HL,0F800H+400H+8
  1083.     LD    DE,0F800H+400H
  1084.     LD    C,64
  1085.  
  1086.     CALL    SPART1
  1087.  
  1088.     RET
  1089.  
  1090. SCROLL_2:
  1091.     LD    HL,0F800H
  1092.     LD    DE,0F800H+400H+8
  1093.     LD    C,64
  1094. SCROLL2A:
  1095.     LD    B,8
  1096. SCROLL2B:
  1097.     OUT    (1CH),A        ;SELECT PCG BANK    
  1098.     EX    AF,AF'
  1099.     LD    A,(HL)        ;GET SOURCE BYTE
  1100.     EX    AF,AF'
  1101.     DEC    A
  1102.     OUT    (1CH),A
  1103.     INC    A
  1104.     EX    AF,AF'
  1105.     LD    (DE),A        ;AND PUT TARGET BYTE
  1106.     EX    AF,AF'
  1107.     INC    HL
  1108.     INC    DE
  1109.     DJNZ    SCROLL2B
  1110.     LD    B,8
  1111. SCROLL2C:
  1112.     INC    HL
  1113.     INC    DE
  1114.     DJNZ    SCROLL2C
  1115.     DEC    C
  1116.     JP    NZ,SCROLL2A
  1117.     RET
  1118.  
  1119. SPART1:    LD    B,8
  1120. SPART1A:
  1121.     LD    A,(HL)
  1122.     LD    (DE),A
  1123.     INC    HL
  1124.     INC    DE
  1125.     DJNZ    SPART1A
  1126.     LD    B,8
  1127. SPART1B:
  1128.     INC    HL
  1129.     INC    DE
  1130.     DJNZ    SPART1B
  1131.     DEC    C
  1132.     JP    NZ,SPART1
  1133.     RET
  1134.     
  1135. IF_PAUSE:
  1136.     LD    A,55
  1137.     CALL    INKEY1
  1138.     RET    NZ
  1139.     LD    BC,20000
  1140. IFP:    DEC    BC
  1141.     LD    A,B
  1142.     OR    C
  1143.     JR    NZ,IFP
  1144.     CALL    INCHRU
  1145.     CP    'C'
  1146.     JR    Z,CAPTUR
  1147.     CP    27
  1148.     RET    NZ
  1149. CONTP:    POP    HL
  1150.     POP    HL
  1151.     POP    HL
  1152.     POP    HL
  1153.     RET
  1154.  
  1155. CAPTUR:    LD    A,1
  1156.     LD    (HIRESII),A
  1157.     CALL    CAPTURE
  1158.     JR    CONTP
  1159.  
  1160.  
  1161. SETPRINT:
  1162.     ld    a,128
  1163.     ld    (prbit),a
  1164.     ld    hl,0
  1165.     ld    (pcnt),hl
  1166.     ld    hl,print_bufr
  1167.     ld    de,print_bufr+1
  1168.     ld    bc,575
  1169.     ld    (hl),0
  1170.     ldir
  1171.     RET
  1172.  
  1173. FIX_ATTR:
  1174.     LD    A,144
  1175.     OUT    (28),A
  1176.     LD    DE,61441
  1177.     LD    HL,61440
  1178.     LD    BC,2047
  1179.     LD    (HL),0
  1180.     LDIR
  1181.     LD    A,128
  1182.     OUT    (28),A
  1183.     RET
  1184.  
  1185. DIR:    CALL    CLS
  1186.     CALL    SCAN
  1187.     PUSH    IY
  1188.     LD    DE,61440+1010
  1189.     LD    HL,DIRSTR
  1190.     CALL    PRINT
  1191.     POP    HL
  1192.     LD    DE,61440+1010
  1193.     CALL    PRINUM
  1194.     CALL    INCHR
  1195.     JP    START1
  1196.  
  1197. ISK_RESET:
  1198.     LD    A,(DRIVE)
  1199.     LD    E,A
  1200.     PUSH    DE
  1201.     LD    C,13
  1202.     CALL    5
  1203.     POP    DE
  1204.     LD    C,14
  1205.     CALL    5
  1206.     JP    START1
  1207.  
  1208.  
  1209. SCAN:    LD    A,(DRIVE)
  1210.     LD    E,A
  1211.     PUSH    DE
  1212.     LD    C,14
  1213.     CALL    5
  1214.     POP    DE
  1215.     LD    C,13
  1216.     CALL    5
  1217.     LD    HL,ALLS
  1218.     CALL    ENTER
  1219.     LD    DE,5CH
  1220.     LD    C,17
  1221.     CALL    5
  1222.     LD    IX,61440
  1223.     LD    IY,0
  1224.  
  1225.     LD    B,64
  1226. MORE:    OR    A
  1227.     RET    M
  1228.     PUSH    BC
  1229.     CALL    PRINT_NAME
  1230.     LD    DE,5CH
  1231.     LD    C,18
  1232.     CALL    5
  1233.     POP    BC
  1234.     DJNZ    MORE
  1235.     CALL    INCHR
  1236.     CALL    CLS
  1237.     LD    B,64
  1238.     LD    IX,61440
  1239.     JR    MORE
  1240.  
  1241. PRINT_NAME:
  1242.     LD    (IX),'|'
  1243.     LD    (IX+15),'|'
  1244.     PUSH    IX
  1245.     POP    DE
  1246.     INC    DE
  1247.     INC    DE
  1248.     INC    A
  1249.     LD    BC,32
  1250.     LD    HL,128-32
  1251. PRINTJ:    ADD    HL,BC
  1252.     DEC    A
  1253.     CP    0
  1254.     JR    NZ,PRINTJ
  1255.     LD    A,(HL)
  1256.     CP    0E5H
  1257.     RET    Z
  1258.     PUSH    HL
  1259.     PUSH    DE
  1260.     CALL    SIZE
  1261.     POP    DE
  1262.     POP    HL
  1263.     INC    HL
  1264.     LD    BC,8
  1265.     LDIR
  1266.     EX    DE,HL
  1267.     LD    (HL),'.'
  1268.     INC    HL
  1269.     EX    DE,HL
  1270.     LD    BC,3
  1271.     LDIR
  1272.     LD    DE,16
  1273.     ADD    IX,DE
  1274.     RET
  1275.  
  1276. SIZE:    LD    DE,16
  1277.     ADD    HL,DE
  1278.     LD    B,16
  1279. SIZE1:    LD    A,(HL)
  1280.     CP    0
  1281.     RET    Z
  1282.     INC    IY
  1283.     INC    IY
  1284.     INC    HL
  1285.     DJNZ    SIZE1
  1286.     RET
  1287.  
  1288.  
  1289.  
  1290. PART7:    CALL    CLS
  1291.     LD    DE,61440+20
  1292.     LD    HL,STR1A
  1293.     CALL    PRINT
  1294.     LD    DE,61440+64
  1295.     CALL    PRINT
  1296.     LD    DE,61440+128
  1297.     CALL    PRINT
  1298.     LD    DE,61440+192
  1299.     CALL    PRINT
  1300. CONT_7:    CALL    INCHRU
  1301.     CP    27
  1302.     JP    Z,START1
  1303.     CP    'A'
  1304.     JP    Z,DISKRESET
  1305.     CP    'B'
  1306.     JP    Z,DIR
  1307.     CP    'C'
  1308.     JP    Z,ISK_RESET
  1309.     JR    CONT_7
  1310.  
  1311. PART1E:    CALL    CLS
  1312.     LD    DE,61440+10
  1313.     LD    HL,HEAD1
  1314.     CALL    PRINT
  1315.     LD    DE,61440+64
  1316.     CALL    PRINT
  1317.     LD    DE,61440+128
  1318.     CALL    PRINT
  1319.     LD    DE,61440+192
  1320.     CALL    PRINT
  1321.     LD    DE,61440+256
  1322.     CALL    PRINT
  1323. PART1ER:
  1324.     CALL    INCHR
  1325.     CP    27
  1326.     JP    Z,PART9
  1327.     CP    '2'
  1328.     JR    Z,TP2BT
  1329.     CP    '3'
  1330.     JR    Z,FILL_ATTR1
  1331.     CP    '1'
  1332.     JR    Z,L2R
  1333.     JR    PART1ER
  1334.  
  1335. TP2BT:    CALL    TOP2BOT
  1336.     JP    PART9
  1337.  
  1338. FILL_ATTR1:    
  1339.     LD    HL,24000+2048
  1340.     LD    DE,24001+2048
  1341.     LD    BC,2047
  1342.     LD    (HL),0
  1343.     LDIR
  1344.     JP    PART9
  1345.  
  1346. TOP2BOT:
  1347.     LD    B,8
  1348.     XOR    A
  1349.     LD    HL,24000+2048
  1350.     LD    DE,24001+2048
  1351. TOP2B:    PUSH    BC
  1352.     LD    (HL),A
  1353.     LD    BC,127
  1354.     LDIR
  1355.     POP    BC
  1356.     INC    HL
  1357.     INC    DE
  1358.     INC    A
  1359.     DJNZ    TOP2B
  1360.     RET
  1361.  
  1362. L2R:    CALL    LEF2RIG
  1363.     JP    PART9
  1364.     
  1365. LEF2RIG:
  1366.     LD    HL,24000+2048
  1367.     LD    DE,24001+2048
  1368.     LD    B,16
  1369. LEF2Y:    PUSH    BC
  1370.     LD    B,8
  1371.     XOR    A
  1372. LEF2T:    PUSH    BC
  1373.     LD    (HL),A
  1374.     LD    BC,7
  1375.     LDIR
  1376.     POP    BC
  1377.     INC    DE
  1378.     INC    HL
  1379.     INC    A
  1380.     DJNZ    LEF2T
  1381.     POP    BC
  1382.     DJNZ    LEF2Y
  1383.     RET
  1384.  
  1385. BLANK_SCREEN:
  1386.     CALL    LANK_SCREEN
  1387.     LD    A,255
  1388.     LD    (HIRESII),A
  1389.     JP    PART9
  1390.  
  1391.  
  1392. LANK_SCREEN:
  1393.     LD    A,255
  1394.     LD    (COLSECT),A
  1395.     LD    (COLSCREEN),A
  1396.     LD    (ATTRON),A
  1397.     LD    (SCRON),A
  1398.     LD    (PCGON),A
  1399.     
  1400.  
  1401.     XOR    A
  1402.     LD    (MODE),A
  1403.     LD    HL,24000
  1404.     LD    DE,24001
  1405.     LD    BC,2047
  1406.     LD    (HL),7
  1407.     LDIR
  1408.     CALL    TOP2BOT
  1409.     LD    HL,COLOUR_SECTOR
  1410.     LD    DE,COLOUR_SECTOR+1
  1411.     LD    BC,127
  1412.     LD    (HL),7
  1413.     LDIR
  1414.     LD    HL,24000+2048*2
  1415.     LD    DE,24001+2048*2
  1416.     LD    BC,2048*7+2047
  1417.     LD    (HL),0                
  1418.     LDIR
  1419.     LD    HL,44480
  1420.     LD    BC,2048
  1421.     XOR    A
  1422.     EX    AF,AF'
  1423. MORTG:    EX    AF,AF'
  1424.     SET    7,A
  1425.     LD    (HL),A
  1426.     INC    HL
  1427.     INC    A
  1428.     DEC    BC
  1429.     EX    AF,AF'
  1430.     LD    A,B
  1431.     OR    C
  1432.     JR    NZ,MORTG
  1433.     RET
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439. CONVERT1:
  1440.     LD    A,(MODE)
  1441.     CP    0
  1442.     JR    Z,OK_CONV
  1443.     LD    HL,WARN
  1444. ALKO:    CALL    CLS
  1445.     LD    DE,61440+10
  1446.     CALL    PRINT
  1447.     CALL    INCHR
  1448.     JP    PART9
  1449.  
  1450. OK_CONV:
  1451.     CALL    INIT1
  1452.     LD    B,8
  1453. AGAIN_2:
  1454.     PUSH    BC
  1455.     PUSH    DE
  1456.     LD    B,128
  1457. AGAIN_1:
  1458.     PUSH    BC
  1459.     PUSH    DE
  1460.     CALL    LATCH_BANK
  1461.     LD    A,(IY)
  1462.     CALL    AREA
  1463.     POP    DE
  1464.     PUSH    DE
  1465.     LD    BC,16
  1466.     LDIR
  1467.     POP    DE
  1468.     POP    BC
  1469.  
  1470.     CALL    NEXTBIT
  1471.     DJNZ    AGAIN_1
  1472.     POP    DE
  1473.     POP    BC
  1474.     CALL    NEXTBIT1
  1475.     
  1476.  
  1477.     DJNZ    AGAIN_2
  1478.  
  1479.     XOR    A
  1480.     OUT    (11),A
  1481.     LD    DE,24000
  1482.     LD    HL,17048
  1483.     LD    BC,2048
  1484.     LDIR
  1485.     LD    A,255
  1486.     LD    (HIRESII),A
  1487.     JP    PART9
  1488.  
  1489. NEXTBIT:
  1490.     EX    DE,HL
  1491.     LD    DE,16
  1492.     ADD    HL,DE
  1493.     EX    DE,HL
  1494.     INC    IY
  1495.     INC    IX
  1496.     RET
  1497.  
  1498. NEXTBIT1:
  1499.     EX    DE,HL
  1500.     LD    DE,-2048
  1501.     ADD    HL,DE
  1502.     EX    DE,HL
  1503.     RET
  1504.  
  1505.  
  1506. CONVERT2:
  1507.     LD    A,(MODE)
  1508.     CP    1
  1509.     JR    Z,LOK_CONV
  1510.     LD    HL,WARN1
  1511.     JP    ALKO
  1512.  
  1513. LOK_CONV:
  1514.     CALL    INIT1
  1515.  
  1516.     LD    B,8
  1517. LAGAIN_2:
  1518.     PUSH    BC
  1519.     PUSH    DE
  1520.     LD    B,128    ;128*2
  1521. LAGAIN_1:
  1522.     PUSH    BC
  1523.     PUSH    DE
  1524.     LD    A,(IY)
  1525.  
  1526.     CALL    AREA
  1527.     POP    DE
  1528.     PUSH    DE        ;} - FIRST SET OF 8 BYTES
  1529.     LD    BC,8
  1530.     LDIR
  1531.     POP    DE
  1532.     POP    BC
  1533.  
  1534.     PUSH    BC
  1535.     PUSH    DE
  1536.     LD    A,(IY+64)
  1537.     CALL    AREA
  1538.     POP    DE
  1539.     PUSH    DE        ;} - FIRST SET OF 8 BYTES
  1540.     LD    B,8
  1541. DESTRO:    INC    DE
  1542.     DJNZ    DESTRO
  1543.  
  1544.     LD    BC,8
  1545.     LDIR
  1546.     POP    DE
  1547.     POP    BC
  1548.  
  1549.     CALL    NEXTBIT
  1550.     LD    A,B
  1551.     CP    64
  1552.     CALL    Z,ADD64
  1553.     DJNZ    LAGAIN_1
  1554.     CALL    ADD64
  1555.     POP    DE
  1556.     POP    BC
  1557.     CALL    NEXTBIT1
  1558.     DJNZ    LAGAIN_2
  1559.  
  1560.     XOR    A
  1561.     OUT    (11),A
  1562.     LD    DE,24001
  1563.     LD    HL,24000
  1564.     LD    (HL),7
  1565.     LD    BC,2047
  1566.     LDIR
  1567.     LD    A,255
  1568.     LD    (HIRESII),A
  1569.     JP    PART9
  1570.  
  1571.  
  1572. ADD64:    PUSH    DE
  1573.     LD    DE,64
  1574.     ADD    IY,DE
  1575.     POP    DE
  1576.     RET
  1577.  
  1578.  
  1579. AREA:    CP    128
  1580.     JR    NC,PCG_AREA
  1581.     PUSH    AF
  1582.     LD    A,1
  1583.     OUT    (11),A
  1584.     POP    AF
  1585.     LD    HL,61440
  1586.     JR    FIND_AR
  1587. PCG_AREA:
  1588.     LD    HL,63488
  1589. FIND_AR:
  1590.     RES    7,A
  1591.     CP    0
  1592.     RET    Z
  1593.     LD    DE,16
  1594. FIND_R:    ADD    HL,DE
  1595.     DEC    A
  1596.     JR    NZ,FIND_R
  1597.     RET
  1598.  
  1599.  
  1600. MEGAMIX:
  1601.     CALL    GETNUM
  1602.     LD    DE,20000
  1603.     LD    BC,2048
  1604.     LDIR
  1605.     LD    B,8
  1606.     LD    DE,24000+2048*2
  1607. MEGAM:    PUSH    BC    
  1608.     LD    HL,20000
  1609.     LD    BC,2048
  1610.     LDIR
  1611.     POP    BC
  1612.     DJNZ    MEGAM
  1613.     JP    PART9 
  1614.  
  1615. INIT1:    LD    HL,44480
  1616.     LD    DE,15000
  1617.     LD    BC,2048
  1618.     LDIR
  1619.     LD    HL,24000
  1620.     LD    DE,17048
  1621.     LD    BC,2048*2
  1622.     LDIR
  1623.     LD    A,135
  1624.     OUT    (28),A
  1625.     LD    B,8
  1626.     LD    HL,24000+2048*2+2048*7
  1627. MOROR:    PUSH    BC
  1628.     PUSH    HL
  1629.     LD    DE,63488
  1630.     LD    BC,2048
  1631.     LDIR
  1632.     POP    HL
  1633.     LD    BC,-2048
  1634.     ADD    HL,BC
  1635.     POP    BC
  1636.     DEC    A
  1637.     OUT    (28),A
  1638.     DJNZ    MOROR
  1639.  
  1640.     CALL    LANK_SCREEN
  1641.  
  1642.     LD    IY,15000
  1643.     LD    DE,24000+2048*2+2048*7
  1644.  
  1645.  
  1646.     RET
  1647.  
  1648. LATCH_BANK:
  1649.     LD    A,(HIRESII)
  1650.     CP    0
  1651.     RET    Z
  1652.     PUSH    DE
  1653.     PUSH    IY
  1654.     LD    DE,2048*2
  1655.     ADD    IY,DE
  1656.     LD    A,(IY)
  1657.     LD    E,A
  1658.     LD    A,7+128
  1659.     SUB    E
  1660.     OUT    (28),A
  1661.     POP    IY
  1662.     POP    DE
  1663.     RET
  1664.  
  1665. SELECT_MODE:
  1666.     LD    HL,STR61
  1667.     CP    0
  1668.     RET    Z
  1669.     LD    HL,STR62
  1670.     CP    1
  1671.     RET    Z
  1672.     LD    HL,STR192
  1673.     RET
  1674.  
  1675.  
  1676.     INCLUDE    COLTABX.Z80
  1677.     INCLUDE    DEXIGN1.Z80
  1678.  
  1679.     END
  1680.  
  1681.