From db568140f48e404231f1b9d5b99680073c94bf49 Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 19 Jul 2010 15:25:20 +0000 Subject: [PATCH] From experimental: Initial implementation of blocking and deblocking algorithms. See CP/M 2.2 ALTERATION GUIDE for reference. * cpm/bios.asm: - New disk I/O interface. - 16 bit wide track numbers - sectran competed. Unused translation table removed. * cpm/ipl.asm: - New disk I/O interface. * cpm/Makefile: - new target "installcpm": Install only system tracks. * avr/z80.asm: - New disk I/O interface. - (de)blocking algorithm. Disk parameters are fixed for now. - 16 bit wide track numbers - register reorganisation - "printstr" saves *all* registers. * cpm/cpmdsk/: - replaced demaged MBASIC.COM - added ELIZA.COM - removd ZORK1.* - added T.COM (Timer control) git-svn-id: svn://cu.loc/avr-cpm/trunk@32 57430480-672e-4586-8877-bcf8adbbf3b7 --- avrcpm/avr/z80.asm | 898 +++++++++++++++++++++++------------- avrcpm/cpm/Makefile | 8 +- avrcpm/cpm/bios.asm | 101 ++-- avrcpm/cpm/cpmdsk/ELIZA.BAS | 220 +++++++++ avrcpm/cpm/cpmdsk/ZORK1.COM | Bin 8704 -> 0 bytes avrcpm/cpm/cpmdsk/ZORK1.DAT | Bin 84992 -> 0 bytes avrcpm/cpm/cpmdsk/t.bin | Bin 0 -> 256 bytes avrcpm/cpm/ipl.asm | 9 +- 8 files changed, 863 insertions(+), 373 deletions(-) create mode 100644 avrcpm/cpm/cpmdsk/ELIZA.BAS delete mode 100644 avrcpm/cpm/cpmdsk/ZORK1.COM delete mode 100644 avrcpm/cpm/cpmdsk/ZORK1.DAT create mode 100644 avrcpm/cpm/cpmdsk/t.bin diff --git a/avrcpm/avr/z80.asm b/avrcpm/avr/z80.asm index 43ad4e0..b7e77ce 100644 --- a/avrcpm/avr/z80.asm +++ b/avrcpm/avr/z80.asm @@ -59,9 +59,9 @@ .equ refr_vect = OC2Aaddr #endif -#define DRAM_WORD_ACCESS 1 /* experimental */ +#define DRAM_WORD_ACCESS 0 /* experimental */ -#define EM_Z80 0 /* we don't have any z80 instructions yet */ +#define EM_Z80 0 /* we don't have any z80 instructions yet */ .equ MMC_DEBUG = 0 .equ INS_DEBUG = 0 @@ -105,8 +105,8 @@ .equ ram_ras = 5 .equ mmc_sck = 5 -.equ P_RAS = PORTB +.equ P_RAS = PORTB .equ P_AL = PORTB ; ram_a[4..0] .equ RAM_AL_MASK = (1< Z80 periph stuff ------------------ .equ memReadByte = dram_read @@ -2036,18 +2304,15 @@ do_fetch_af: ret do_fetch_bc: - mov opl,z_c - mov oph,z_b + movw opl,z_c ret do_fetch_de: - mov opl,z_e - mov oph,z_d + movw opl,z_e ret do_fetch_hl: - mov opl,z_l - mov oph,z_h + movw opl,z_l ret do_fetch_sp: @@ -2055,22 +2320,19 @@ do_fetch_sp: ret do_fetch_mbc: - mov adrh,z_b - mov adrl,z_c + movw adrl,z_c rcall memReadByte mov opl,temp ret do_fetch_mde: - mov adrh,z_d - mov adrl,z_e + movw adrl,z_e rcall memReadByte mov opl,temp ret do_fetch_mhl: - mov adrh,z_h - mov adrl,z_l + movw adrl,z_l rcall memReadByte mov opl,temp ret @@ -2083,7 +2345,6 @@ do_fetch_msp: #else rcall memReadByte mov opl,temp - adiw adrl,1 rcall memReadByte mov oph,temp @@ -2225,22 +2486,19 @@ do_store_hl: ret do_store_mbc: - mov adrh,z_b - mov adrl,z_c + movw adrl,z_c mov temp,opl rcall memWriteByte ret do_store_mde: - mov adrh,z_d - mov adrl,z_e + movw adrl,z_e mov temp,opl rcall memWriteByte ret do_store_mhl: - mov adrh,z_h - mov adrl,z_l + movw adrl,z_l mov temp,opl rcall memWriteByte ret @@ -2589,7 +2847,6 @@ opjumps: mov zl,@2 lpm @0,z .endm - .macro do_z80_flags_HP #if EM_Z80 bmov z_flags, ZFL_P, temp, AVR_V @@ -2692,7 +2949,8 @@ do_op_dec: ; ; do_op_inc16: - adiw opl,1 + subi opl,low(-1) + sbci oph,high(-1) ret ;---------------------------------------------------------------- @@ -2930,8 +3188,7 @@ do_op_addhl: do_op_sthl: ;store hl to mem loc in opl:h movw adrl,opl #if DRAM_WORD_ACCESS - mov temp,z_l - mov temp2,z_h + movw temp,z_l rcall memWriteWord #else mov temp,z_l @@ -3212,6 +3469,7 @@ do_op_pop16: add z_spl,temp adc z_sph,_0 + .if STACK_DBG rcall printstr .db "Stack pop: val ",0 @@ -3273,8 +3531,8 @@ do_op_ei: do_op_ifnz: sbrs z_flags, ZFL_Z ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3288,8 +3546,8 @@ do_op_ifnz: do_op_ifz: sbrc z_flags, ZFL_Z ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3303,8 +3561,8 @@ do_op_ifz: do_op_ifnc: sbrs z_flags, ZFL_C ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3318,8 +3576,8 @@ do_op_ifnc: do_op_ifc: sbrc z_flags, ZFL_C ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3333,8 +3591,8 @@ do_op_ifc: do_op_ifpo: sbrs z_flags, ZFL_P ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3348,8 +3606,8 @@ do_op_ifpo: do_op_ifpe: sbrc z_flags, ZFL_P ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3363,8 +3621,8 @@ do_op_ifpe: do_op_ifp: ;sign positive, aka s=0 sbrs z_flags, ZFL_S ret - ldi insdech,0 - ldi insdecl,0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3378,8 +3636,8 @@ do_op_ifp: ;sign positive, aka s=0 do_op_ifm: ;sign negative, aka s=1 sbrc z_flags, ZFL_S ret - ldi insdech, 0 - ldi insdecl, 0 + clr insdech + clr insdecl ret ;---------------------------------------------------------------- @@ -3496,7 +3754,6 @@ sz53p_tab: ; The table is made of 256 words. These 16-bit words consist of ; the fetch operation (bit 0-4), the processing operation (bit 10-16) and the store ; operation (bit 5-9). - .org (PC+255) & 0xff00 inst_table: .dw (FETCH_NOP | OP_NOP | STORE_NOP) ; 00 NOP @@ -3757,4 +4014,3 @@ inst_table: .dw (FETCH_RST | OP_NOP | STORE_CALL) ; FF RST 38H ; vim:set ts=8 noet nowrap - diff --git a/avrcpm/cpm/Makefile b/avrcpm/cpm/Makefile index 840121f..7de02d2 100644 --- a/avrcpm/cpm/Makefile +++ b/avrcpm/cpm/Makefile @@ -1,6 +1,6 @@ #WARNING! Do not run a 'make install' unless you know what you're doing. -INSTALLDISK=/dev/sdx +INSTALLDISK=/dev/sdb diskimage: cpm.bin cpmdsk/* mkfs.cpm -f avrcpm -b cpm.bin -L test diskimage @@ -22,6 +22,12 @@ clean: rm -f ipl.lst ipl.bin rm -f cpm.bin diskimage +installcpm: cpm.bin dummy + sudo dd if=cpm.bin of=${INSTALLDISK} bs=128 conv=sync oflag=direct,sync + sync + sleep 1 + sync + install: diskimage dummy sudo dd if=diskimage of=${INSTALLDISK} conv=sync oflag=direct,sync sync diff --git a/avrcpm/cpm/bios.asm b/avrcpm/cpm/bios.asm index 6321916..a242c55 100644 --- a/avrcpm/cpm/bios.asm +++ b/avrcpm/cpm/bios.asm @@ -28,6 +28,11 @@ retry: equ 3 ;max retries on disk i/o before error cr: equ 13 lf: equ 10 +READ_FUNC: equ 7 +WRITE_FUNC: equ 6 +BOOT_FUNC: equ 5 +HOME_FUNC: equ 4 + org bios nsects: equ ($-ccp)/128 ;warm start sector count @@ -68,6 +73,8 @@ boot: wboot: ;re-load CP/M ld sp,buff + ld a,1<LEN(I$) THEN 250 +241 IF MID$(I$,L,4) <> "SHUT" THEN 250 +242 PRINT "O.K. IF YOU FEEL THAT WAY I'LL SHUT UP...." +243 END +250 NEXT L +255 IF I$=P$ THEN PRINT "PLEASE DON'T REPEAT YOURSELF!":GOTO 170 +260 REM *********************************** +270 REM ********FIND KEYWORD IN I$********* +280 REM *********************************** +300 FOR K=1 TO N1 +320 FOR L=1 TO LEN(I$)-LEN(KEYWORD$(K))+1 +340 IF MID$(I$,L,LEN(KEYWORD$(K)))<>KEYWORD$(K) THEN 350 +341 IF K <> 13 THEN 349 +342 IF MID$(I$,L,LEN(KEYWORD$(29)))=KEYWORD$(29) THEN K = 29 +349 F$ = KEYWORD$(K): GOTO 390 +350 NEXT L +360 NEXT K +370 K=36: GOTO 570:REM WE DIDN'T FIND ANY KEYWORDS +380 REM ****************************************** +390 REM **TAKE PART OF STRING AND CONJUGATE IT**** +400 REM **USING THE LIST OF STRINGS TO BE SWAPPED* +410 REM ****************************************** +430 C$=" "+RIGHT$(I$,LEN(I$)-LEN(F$)-L+1)+" " +440 FOR X=1 TO N2/2 +460 FOR L=1 TO LEN(C$) +470 IF L+LEN(WORDIN$(X))>LEN(C$) THEN 510 +480 IF MID$(C$,L,LEN(WORDIN$(X)))<>WORDIN$(X) THEN 510 +490 C$=LEFT$(C$,L-1)+WORDOUT$(X)+RIGHT$(C$,LEN(C$)-L-LEN(WORDIN$(X))+1) +495 L = L+LEN(WORDOUT$(X)) +500 GOTO 540 +510 IF L+LEN(WORDOUT$(X))>LEN(C$)THEN 540 +520 IF MID$(C$,L,LEN(WORDOUT$(X)))<>WORDOUT$(X) THEN 540 +530 C$=LEFT$(C$,L-1)+WORDIN$(X)+RIGHT$(C$,LEN(C$)-L-LEN(WORDOUT$(X))+1) +535 L=L+LEN(WORDIN$(X)) +540 NEXT L +550 NEXT X +555 IF MID$(C$,2,1)=" "THEN C$=RIGHT$(C$,LEN(C$)-1):REM ONLY 1 SPACE +556 FOR L=1 TO LEN(C$) +557 IF MID$(C$,L,1)="!" THEN C$=LEFT$(C$,L-1)+RIGHT$(C$,LEN(C$)-L):GOTO 557 +558 NEXT L +560 REM ********************************************** +570 REM **NOW USING THE KEYWORD NUMBER (K) GET REPLY** +580 REM ********************************************** +600 F$ = REPLIES$(R(K)) +610 R(K)=R(K)+1:IF R(K)>N(K) THEN R(K)=S(K) +620 IF RIGHT$(F$,1)<>"*" THEN PRINT F$:P$=I$:GOTO 170 +625 IF C$<>" " THEN 630 +626 PRINT "YOU WILL HAVE TO ELABORATE MORE FOR ME TO HELP YOU" +627 GOTO 170 +630 PRINT LEFT$(F$,LEN(F$)-1);C$ +640 P$=I$:GOTO 170 +1000 REM ******************************* +1010 REM *****PROGRAM DATA FOLLOWS****** +1020 REM ******************************* +1030 REM *********KEYWORDS************** +1049 REM ******************************* +1050 DATA "CAN YOU ","CAN I ","YOU ARE ","YOU'RE ","I DON'T ","I FEEL " +1060 DATA "WHY DON'T YOU ","WHY CAN'T I ","ARE YOU ","I CAN'T ","I AM ","I'M " +1070 DATA "YOU ","I WANT ","WHAT ","HOW ","WHO ","WHERE ","WHEN ","WHY " +1080 DATA "NAME ","CAUSE ","SORRY ","DREAM ","HELLO ","HI ","MAYBE " +1090 DATA "NO","YOUR ","ALWAYS ","THINK ","ALIKE ","YES ","FRIEND " +1100 DATA "COMPUTER", "NOKEYFOUND" +1200 REM ********************************* +1210 REM ***STRING DATA FOR CONJUGATIONS** +1220 REM ********************************* +1230 DATA " ARE "," AM "," WERE "," WAS "," YOU "," I "," YOUR"," MY " +1235 DATA " I'VE "," YOU'VE "," I'M "," YOU'RE " +1240 DATA " ME "," YOU " +1300 REM ****************************** +1310 REM *********REPLIES************** +1320 REM ****************************** +1330 DATA "DON'T YOU BELIEVE THAT I CAN*" +1340 DATA "PERHAPS YOU WOULD LIKE TO BE LIKE ME*" +1350 DATA "YOU WANT ME TO BE ABLE TO*" +1360 DATA "PERHAPS YOU DON'T WANT TO*" +1365 DATA "DO YOU WANT TO BE ABLE TO*" +1370 DATA "WHAT MAKES YOU THINK I AM*" +1380 DATA "DOES IT PLEASE YOU TO BELIEVE I AM*" +1390 DATA "PERHAPS YOU WOULD LIKE TO BE*" +1400 DATA "DO YOU SOMETIMES WISH YOU WERE*" +1410 DATA "DON'T YOU REALLY*" +1420 DATA "WHY DON'T YOU*" +1430 DATA "DO YOU WISH TO BE ABLE TO*" +1440 DATA "DOES THAT TROUBLE YOU*" +1450 DATA "DO YOU OFTEN FEEL*" +1460 DATA "DO YOU OFTEN FEEL*" +1470 DATA "DO YOU ENJOY FEELING*" +1480 DATA "DO YOU REALLY BELIEVE I DON'T*" +1490 DATA "PERHAPS IN GOOD TIME I WILL*" +1500 DATA "DO YOU WANT ME TO*" +1510 DATA "DO YOU THINK YOU SHOULD BE ABLE TO*" +1520 DATA "WHY CAN'T YOU*" +1530 DATA "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM*" +1540 DATA "WOULD YOU PREFER IF I WERE NOT*" +1550 DATA "PERHAPS IN YOUR FANTASIES I AM*" +1560 DATA "HOW DO YOU KNOW YOU CAN'T*" +1570 DATA "HAVE YOU TRIED?" +1580 DATA "PERHAPS YOU CAN NOW*" +1590 DATA "DID YOU COME TO ME BECAUSE YOU ARE*" +1600 DATA "HOW LONG HAVE YOU BEEN*" +1610 DATA "DO YOU BELIEVE IT IS NORMAL TO BE*" +1620 DATA "DO YOU ENJOY BEING*" +1630 DATA "WE WERE DISCUSSING YOU--NOT ME." +1640 DATA "OH, I*" +1650 DATA "YOU'RE NOT REALLY TALKING ABOUT ME, ARE YOU?" +1660 DATA "WHAT WOULD IT MEAN TO YOU IF YOU GOT*" +1670 DATA "WHY DO YOU WANT*" +1680 DATA "SUPPOSE YOU SOON GOT*" +1690 DATA "WHAT IF YOU NEVER GOT*" +1700 DATA "I SOMETIMES ALSO WANT*" +1710 DATA "WHY DO YOU ASK?" +1720 DATA "DOES THAT QUESTION INTEREST YOU?" +1730 DATA "WHAT ANSWER WOULD PLEASE YOU THE MOST?" +1740 DATA "WHAT DO YOU THINK?" +1750 DATA "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?" +1760 DATA "WHAT IS IT THAT YOU REALLY WANT TO KNOW?" +1770 DATA "HAVE YOU ASKED ANYONE ELSE?" +1780 DATA "HAVE YOU ASKED SUCH QUESTIONS BEFORE?" +1790 DATA "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?" +1800 DATA "NAMES DON'T INTEREST ME." +1810 DATA "I DON'T CARE ABOUT NAMES --PLEASE GO ON." +1820 DATA "IS THAT THE REAL REASON?" +1830 DATA "DON'T ANY OTHER REASONS COME TO MIND?" +1840 DATA "DOES THAT REASON EXPLAIN ANYTHING ELSE?" +1850 DATA "WHAT OTHER REASONS MIGHT THERE BE?" +1860 DATA "PLEASE DON'T APOLOGIZE!" +1870 DATA "APOLOGIES ARE NOT NECESSARY." +1880 DATA "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGIZE?" +1890 DATA "DON'T BE SO DEFENSIVE!" +1900 DATA "WHAT DOES THAT DREAM SUGGEST TO YOU?" +1910 DATA "DO YOU DREAM OFTEN?" +1920 DATA "WHAT PERSONS APPEAR IN YOUR DREAMS?" +1930 DATA "ARE YOU DISTURBED BY YOUR DREAMS?" +1940 DATA "HOW DO YOU DO ...PLEASE STATE YOUR PROBLEM." +1950 DATA "YOU DON'T SEEM QUITE CERTAIN." +1960 DATA "WHY THE UNCERTAIN TONE?" +1970 DATA "CAN'T YOU BE MORE POSITIVE?" +1980 DATA "YOU AREN'T SURE?" +1990 DATA "DON'T YOU KNOW?" +2000 DATA "ARE YOU SAYING NO JUST TO BE NEGATIVE?" +2010 DATA "YOU ARE BEING A BIT NEGATIVE." +2020 DATA "WHY NOT?" +2030 DATA "ARE YOU SURE?" +2040 DATA "WHY NO?" +2050 DATA "WHY ARE YOU CONCERNED ABOUT MY*" +2060 DATA "WHAT ABOUT YOUR OWN*" +2070 DATA "CAN YOU THINK OF A SPECIFIC EXAMPLE?" +2080 DATA "WHEN?" +2090 DATA "WHAT ARE YOU THINKING OF?" +2100 DATA "REALLY, ALWAYS?" +2110 DATA "DO YOU REALLY THINK SO?" +2120 DATA "BUT YOU ARE NOT SURE YOU*" +2130 DATA "DO YOU DOUBT YOU*" +2140 DATA "IN WHAT WAY?" +2150 DATA "WHAT RESEMBLANCE DO YOU SEE?" +2160 DATA "WHAT DOES THE SIMILARITY SUGGEST TO YOU?" +2170 DATA "WHAT OTHER CONNECTIONS DO YOU SEE?" +2180 DATA "COULD THERE REALLY BE SOME CONNECTION?" +2190 DATA "HOW?" +2200 DATA "YOU SEEM QUITE POSITIVE." +2210 DATA "ARE YOU SURE?" +2220 DATA "I SEE." +2230 DATA "I UNDERSTAND." +2240 DATA "WHY DO YOU BRING UP THE TOPIC OF FRIENDS?" +2250 DATA "DO YOUR FRIENDS WORRY YOU?" +2260 DATA "DO YOUR FRIENDS PICK ON YOU?" +2270 DATA "ARE YOU SURE YOU HAVE ANY FRIENDS?" +2280 DATA "DO YOU IMPOSE ON YOUR FRIENDS?" +2290 DATA "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU." +2300 DATA "DO COMPUTERS WORRY YOU?" +2310 DATA "ARE YOU TALKING ABOUT ME IN PARTICULAR?" +2320 DATA "ARE YOU FRIGHTENED BY MACHINES?" +2330 DATA "WHY DO YOU MENTION COMPUTERS?" +2340 DATA "WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEM?" +2350 DATA "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?" +2360 DATA "WHAT IS IT ABOUT MACHINES THAT WORRIES YOU?" +2370 DATA "SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?" +2380 DATA "WHAT DOES THAT SUGGEST TO YOU?" +2390 DATA "I SEE." +2400 DATA "I'M NOT SURE I UNDERSTAND YOU FULLY." +2410 DATA "COME COME ELUCIDATE YOUR THOUGHTS." +2420 DATA "CAN YOU ELABORATE ON THAT?" +2430 DATA "THAT IS QUITE INTERESTING." +2500 REM ************************* +2510 REM *****DATA FOR FINDING RIGHT REPLIES +2520 REM ************************* +2530 DATA 1,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3 +2540 DATA 28,4,28,4,32,3,35,5,40,9,40,9,40,9,40,9,40,9,40,9 +2550 DATA 49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4 +2560 DATA 80,3,83,7,90,3,93,6,99,7,106,6 + \ No newline at end of file diff --git a/avrcpm/cpm/cpmdsk/ZORK1.COM b/avrcpm/cpm/cpmdsk/ZORK1.COM deleted file mode 100644 index 8a7bec1cc6002e4fa5ec55ac633be1ff25324249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8704 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 O6`a-o!We(@(EkJ+CiOf3 diff --git a/avrcpm/cpm/cpmdsk/ZORK1.DAT b/avrcpm/cpm/cpmdsk/ZORK1.DAT deleted file mode 100644 index b2eb461fb7112e03f8673c1443ad902ea020c955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84992 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 LrmXA#>;L|L*_f`( diff --git a/avrcpm/cpm/cpmdsk/t.bin b/avrcpm/cpm/cpmdsk/t.bin new file mode 100644 index 0000000000000000000000000000000000000000..6c02459a178c15f6abd165b2ead27e9f31c1570e GIT binary patch literal 256 zcmX@Sj4`x0F+J5vA;izdHRl&81S%xw=jJBnrGWGV!u7z7 z(gB&8r%;qy47MV(1f(t$uCBBIWFaq?ij-9Y!}e4A8LgTa6i+jb(bAZ1~Ufm2Qq~UFpvTO7Y9L! literal 0 HcmV?d00001 diff --git a/avrcpm/cpm/ipl.asm b/avrcpm/cpm/ipl.asm index 4d229f2..359569d 100644 --- a/avrcpm/cpm/ipl.asm +++ b/avrcpm/cpm/ipl.asm @@ -18,6 +18,11 @@ org $2000 ; IPL for the CP/M-emu in an AVR. Loads CPM from the 'disk' from ; track 0 sector 2 to track 1 sector 26. +READ_FUNC: equ 7 +WRITE_FUNC: equ 6 +BOOT_FUNC: equ 5 +HOME_FUNC: equ 4 + ld sp,$1000 call printipl @@ -35,7 +40,7 @@ loadloop: out (20),a ld a,h ;dma H out (21),a - ld a,1 + ld a,1<