;Universal Memory Tester ;(C) BUDDER/MGN 2015 ;V2.3X ;--------------------------------------- ORG #6000 ;------- CSVECT EQU #5000 BUFER EQU #5B00 ATTRIB EQU #5F00 ERBUF EQU #5D00 VECTOR EQU #5C00 PRT_RND EQU #8000-#0900;! FONT EQU #8000-#0800 OUTZ EQU #8000 ;------- STRI EQU 16 CLNST EQU 1+10+STRI GENC EQU 64+1 SKIPC EQU 64+6 RFLDC EQU 64+5 RCHKC EQU 64+4 ERRC EQU 64+2 IBC EQU 4 ;------- DI LD A,63,I,A:IM 1 XOR A:OUT (254),A LD (SPRE),SP LD SP,#6000 CALL DECRUN CALL INI_RND,CLS ;------- CALL LANGS MAIN CALL INITZ CALL CLS,CONFIG:JR NZ,MAIN CALL HELP:JR NZ,MAIN LD BC,#7FFD,A,16:OUT A JP 0 ;------- INITZ XOR A:OUT (254),A LD (ERROR),A,(NEKO),A,(CSER),A RET ;--------------------------------------- SPRINT LD A,(PAGE) CP #40:RET Z CP #50:RET C CP #5F:RET NC XOR A RET ;--------------------------------------- PSTEP LD A,(Mmod):CP SRN CALL Z,SPRINT:JR Z,FOB LD A,(PAGE):CP 5:JR Z,FOB LD HL,(VAL1):CALL FILL LD A,(VAL1) CALL CHEK:LD A,2+64:JR NZ,BDE LD HL,(VAL2):CALL FILL LD A,(VAL2) CALL CHEK:LD A,3+64:JR NZ,BDE LD A,RCHKC BD LD HL,PAGE:INC (HL) LD HL,(ADRE) LD (HL),A:INC HL LD A,L LD DE,32-8 AND 7:JR NZ,$+3:ADD HL,DE LD (ADRE),HL RET FOB LD A,SKIPC:JR BD BDE LD HL,ERROR,(HL),1:JR BD PAGE NOP ADRE DS 2 VAL1 DW #0000 VAL2 DW #0000 ;--------------------------------------- MMDZ LD A,(Mmod):OR A:JR Z,MMDz LD B,A LD DE,CLNST ADD HL,DE:DJNZ $-1 MMDz LD E,(HL):INC HL LD D,(HL) EX DE,HL RET ;--------------------------------------- MANNA LD HL,MMD+1+0:CALL MMDZ:JP (HL) ;------- MANAG4M LD A,(PAGE),BC,#13AF:OUT A:RET MSPRINT LD A,(PAGE),BC,#00E2:OUT A:RET ;------- ;ATM7.1 MANAGAT CALL SYSON LD A,(PAGE) CPL CABOOM AND %00111111 OR %01000000 LD BC,#FFF7:OUT A JR SYSOFF SYSON LD BC,#FD77,A,%10101011 LD HL,#2A53 PUSH HL JP #3D2F SYSOFF LD BC,#FF77,A,%10101011 OUT A RET ;------- ;KAY1024/2048 MANAG LD A,(PAGE) LD D,A:AND 7:LD E,A LD A,D .3 SRL A LD BC,0 SRL A:JR NC,$+4:LD B,16 SRL A:JR NC,$+4:LD C,128 SRL A:LD D,A LD A,16 JR NC,$+4:LD A,16+128 LD (BANK+1),A ;------- LD A,D:SRL A LD A,0:JR NC,$+4:LD A,64 LD (B2048+1),A ;------- LD A,B:OR C B2048 OR 0 LD BC,#1FFD:OUT A LD BC,#7FFD LD A,E BANK OR 16 OUT A RET ;------- ;SCORP1024 MANAGZS ;i:(PAGE),page NUMBER LD A,(PAGE) LD D,A:AND 7:LD E,A LD A,D AND %00111000 SLA A LD D,A AND %01100000 SLA A LD B,A LD A,D AND %00010000 OR B CLASZS LD BC,#1FFD OUT A LD BC,#7FFD LD A,E OR 16 OUT A RET ;------- ;PENT1024 MANAGT LD A,(PAGE) LD D,A:AND 7:LD E,A LD A,D AND %00111000 .3 SLA A JR NC,$+4:SET 5,A LD BC,#7FFD OR E OR 16 OUT A RET ;------- ;Profi MANAGP LD A,(PAGE) LD D,A:AND 7:LD E,A LD A,D .3 SRL A LD BC,#DFFD OUT A CLAS LD BC,#7FFD LD A,E OR 16 OUT A RET ;------- ;GMX2048 MANAGX LD A,(PAGE) LD D,A:AND 7:LD E,A LD A,D .4 SRL A LD BC,#DFFD OUT A LD A,D RLCA AND 16 JR CLASZS ;------- ;ATM4.5 MANAGA LD A,(PAGE) LD D,A:AND 7:LD E,A LD A,D .3 SRL A LD BC,#FDFD OUT A JR CLAS ;--------------------------------------- CHEK ;i:A,value DI LD HL,#C000 LD B,0 GRA .64 CP (HL):RET NZ:INC HL DEC B:JP NZ,GRA XOR A RET FILL ;i:HL,value DI LD (SPTEMP),SP LD SP,#0000 LD B,128 GAA .64 PUSH HL DJNZ GAA LD SP,(SPTEMP) RET SPTEMP DS 2 ;--------------------------------------- TEZT LD HL,MMD+1+4:CALL MMDZ:JP (HL) TSPE128 LD B,8:JR NW TKAY256 LD B,16:JR NW ;------- TPNT512 TPRO512 TATM512 LD B,32:JR NW ;------- ATM2PM ATM1PM PROF1M TPEN1M TZS1M TKAY1M LD B,64 NW LD HL,#5800+IBC*32 NWZ LD (ADRE),HL DI WAH3 PUSH BC CALL MANNA CALL PSTEP POP BC:DJNZ WAH3 RET ;------- TKAY2M LD HL,#5800+IBC*32,B,64 CALL NWZ LD HL,#5808+IBC*32,B,64 JR NWZ ;------- ATM4M LD HL,#5800+IBC*32,B,64 CALL NWZ LD HL,#5808+IBC*32,B,64 CALL NWZ LD HL,#5810+IBC*32,B,64 CALL NWZ LD HL,#5818+IBC*32,B,64 JP NWZ ;--------------------------------------- NUMT LD HL,ERBUF,(WRNUM),HL LD HL,MMD+1+2:CALL MMDZ:JP (HL) NATM3 LD B,0 NW2 XOR A:LD (PAGE),A LD C,B NO1A PUSH BC CALL MANNA,PAGNU POP BC:DJNZ NO1A XOR A:LD (PAGE),A,(WRO),A LD B,C NO2A PUSH BC CALL MANNA,NAGNU POP BC:DJNZ NO2A RET N1024 LD B,64:JR NW2 ;------- NTKAY2 LD B,128:JR NW2 ;------- N256 LD B,16:JR NW2 ;------- N512 LD B,32:JR NW2 ;------- N128 LD B,8:JR NW2 ;------- NSPRI LD B,0 XOR A:LD (PAGE),A LD C,B SP1 PUSH BC CALL MANNA,PAGNUR POP BC:DJNZ SP1 XOR A:LD (PAGE),A,(WRO),A LD B,C SP2 PUSH BC CALL MANNA,NAGNUR POP BC:DJNZ SP2 RET ;--------------------------------------- PAGNUR LD HL,PAGE LD A,(HL):INC (HL) CP #40:RET Z CP #50:JR C,A1 CP #60:RET C A1 LD (#C000),A RET NAGNUR LD HL,PAGE LD A,(HL) CP #40:JR Z,NAK CP #50:JR C,NAG CP #60:JR C,NAK,NAG ;------- PAGNU LD HL,PAGE LD A,(HL):INC (HL) LD (#C000),A RET NAGNU LD HL,PAGE NAG LD A,(#C000) CP (HL):JR NZ,EPT NAK INC (HL) XOR A RET EPT LD A,(HL):INC (HL) LD HL,(WRNUM),(HL),A:INC HL LD (WRNUM),HL LD A,1,(WRO),A OR A RET WRNUM DW ERBUF WRO NOP ;--------------------------------------- RTEZT LD HL,MMD+1+6:CALL MMDZ:JP (HL) ;------- ANDER LD HL,#5810+IBC*32 ANDE LD (ADRE),HL:RET S1NNER LD HL,#5808+IBC*32:JR ANDE WHO LD HL,#5818+IBC*32:JR ANDE KPAH LD A,(Mmod) CP PNX:JR Z,KPH CP 9:JR Z,KPH; GMX MODE CP PET:JR Z,KAH CP SRN:RET NZ KAH LD A,B CP 0-64:JR Z,S1NNER CP 0-128:JR Z,ANDER CP 0-192:JR Z,WHO RET KPH LD A,B CP 64:JR Z,S1NNER; EX ANDER RET ;------- R2048 LD B,128:JR NW3 RATM4M LD B,0:JR NW3 ;------- R256 LD B,16 NW3 PUSH BC:CALL VIIR POP BC LD C,B SMB PUSH BC CALL KPAH CALL MANNA CALL RSTEP POP BC:DJNZ SMB PUSH BC:CALL VIIC POP BC LD B,C SMB2 PUSH BC CALL KPAH CALL MANNA CALL RCTEP POP BC:DJNZ SMB2 RET ;------- R1024 LD B,64:JR NW3 ;------- R512 LD B,32:JR NW3 ;------- R128 LD B,8:JR NW3 ;--------------------------------------- VIIC XOR A:LD (PAGE),A LD HL,VECTOR,DE,PRT_RND,BC,256 LDIR LD HL,#5800+IBC*32,(ADRE),HL DI RET VIIR LD HL,PRT_RND,DE,VECTOR,BC,256 LDIR LD HL,#5800+IBC*32,(ADRE),HL DI RET ;------- RSTEP LD A,(Mmod):CP SRN CALL Z,SPRINT:JR Z,RFOB LD A,(PAGE):CP 5:JR Z,RFOB LD DE,#C000 PAFL LD H,PRT_RND[ CURND LD A,0 INC A LD (CURND+1),A LD L,A LD B,(HL) ADD A,55-24 LD L,A LD C,(HL) ADD A,24 LD L,A LD A,B ADD A,C LD (HL),A LD (DE),A:INC DE LD A,D:OR A:JP NZ,PAFL LD A,RFLDC:JP BD RFOB LD A,SKIPC:JP BD ;------- RCTEP LD A,(Mmod):CP SRN CALL Z,SPRINT:JR Z,RCFOB LD A,(PAGE):CP 5:JR Z,RCFOB XOR A:LD (NEKO),A LD DE,#C000 PAFL2 LD H,PRT_RND[ CURD LD A,0 INC A LD (CURD+1),A LD L,A LD B,(HL) ADD A,55-24 LD L,A LD C,(HL) ADD A,24 LD L,A LD A,B ADD A,C LD (HL),A LD C,A LD A,(DE):INC DE CP C:JR NZ,ERK NUK LD A,D:OR A:JP NZ,PAFL2 LD A,(NEKO):OR A:JP NZ,BD LD A,RCHKC:JP BD RCFOB LD A,SKIPC:JP BD ERK LD A,ERRC LD (NEKO),A,(ERROR),A JP NUK NEKO NOP ERROR NOP SPRE DS 2 ;--------------------------------------- STEZT LD HL,MMD+1+8:CALL MMDZ:JP (HL) S128 LD B,8 KW LD HL,#5800+IBC*32 LD (CSAD),HL PUSH BC:CALL CSGEN POP BC LD C,B:JR NZ,NOTFT CALL SSINI ZZ0 PUSH BC CALL KPAH CALL MANNA CALL CLONER POP BC:DJNZ ZZ0 NOTFT LD B,C CALL SSINI ZZ1 PUSH BC CALL KPAH CALL MANNA CALL SCHEK POP BC:DJNZ ZZ1 LD B,C CALL SSINI CALL RRVECT ZZ PUSH BC PUSH AF CALL KPAH CALL MANNA POP AF CALL SSTEP:EXA POP BC:DJNZ ZZ RET S256 LD B,16:JR KW S512 LD B,32:JR KW S1024 LD B,64:JR KW S2048 LD B,128:JR KW S4096 LD B,0:JR KW ;------- SSINI LD HL,(CSAD),(ADRE),HL XOR A:LD (PAGE),A RET SSTEP EXA LD A,(Mmod):CP SRN CALL Z,SPRINT:JP Z,FOB LD A,(PAGE):CP 5:JP Z,FOB EXA LD HL,#C000 SStt .31 RR (HL):INC L RR (HL):INC HL INC H:DEC H:JP NZ,SStt EXA:LD A,RFLDC:JP BD RRVECT PUSH HL,BC LD HL,CSVECT LD A,(CSVECT+#07FF):RRA LD B,0 SSt .8 RR (HL):INC HL DJNZ SSt POP BC,HL RET ;------- SCHEK LD A,(Mmod):CP SRN CALL Z,SPRINT:JP Z,FOB LD A,(PAGE):CP 5:JP Z,FOB LD HL,#C000 Sch LD DE,CSVECT,B,0 SchK _LD A,(DE):CP (HL):JR NZ,ERHZ:INC DE,HL _LD A,(DE):CP (HL):JR NZ,ERHZ:INC DE,HL _LD A,(DE):CP (HL):JR NZ,ERHZ:INC DE,HL _LD A,(DE):CP (HL):JR NZ,ERHZ:INC DE,HL _LD A,(DE):CP (HL):JR NZ,ERHZ:INC DE,HL _LD A,(DE):CP (HL):JR NZ,ERHZ:INC DE,HL _LD A,(DE):CP (HL):JR NZ,ERHZ:INC DE,HL _LD A,(DE):CP (HL):JR NZ,ERHZ:INC DE,HL DJNZ SchK LD A,H:OR A:JR NZ,Sch LD A,RCHKC:JP BD ERHZ LD A,ERRC,(CSER),A:JP BD ;------- CLONER LD A,(Mmod):CP SRN CALL Z,SPRINT:JP Z,FOB LD A,(PAGE):CP 5:JP Z,FOB LD DE,#C000 LD A,8 CLNR LD HL,CSVECT,BC,#0800 LDIR:DEC A:JR NZ,CLNR LD A,GENC:JP BD CSGEN LD A,(CSST):OR A:RET NZ INC A:LD (CSST),A LD DE,CSVECT,BC,#0800 CSgen EXX:CALL DO_RND EXX:LD (DE),A:INC DE DEC BC:LD A,B:OR C:JR NZ,CSgen XOR A RET CSST NOP CSER NOP CSAD DS 2 ;--------------------------------------- HELP CP "E":RET Z CALL CLS LD DE,#0000,A,0:CALL MESS ANYE CALL USPO LD HL,#5800+32*23 CALL FLAX LD A,1:OR A RET ;--------------------------------------- ;RND GENERATOR BASED ON ;MITCHELL-MOORE [1958] ALGORITHM ; ;X[n]=(X[n-24]+X[n-55]) mod 256 ; ;PERIOD IS 128*(2^55-1) INI_RND LD DE,PRT_RND XOR A LD H,A LD L,A LD BC,255 LDIR EX DE,HL LD (HL),L;L,#FF LD (CURND+1),A RET ;------- DO_RND ;FILLS A,B,C WITH RND NUMBERS LD H,PRT_RND[ CURN LD A,0 INC A LD (CURN+1),A LD L,A LD B,(HL) ADD A,55-24 LD L,A LD C,(HL) ADD A,24 LD L,A LD A,B ADD A,C LD (HL),A RET ;--------------------------------------- ;--------------------------------------- NORK ;i:HL,addr A,val INC L LD C,A AND %00001111 CP 10:JR C,$+4:ADD A,7 ADD A,#30 LD (HL),A:DEC L LD A,C LD (HL),A XOR A RLD CP 10:JR C,$+4:ADD A,7 ADD A,#30 LD (HL),A INC L,L RET ;--------------------------------------- FLAX ;i:HL,addr PUSH HL LD A,R AND 7 OR 64 LD B,32,(HL),A:INC L:DJNZ $-2 POP HL CALL F7F:JR Z,FLAX RET ;--------------------------------------- CLAVA LD BC,#F7FE:IN A SRL A:JR NC,KE1 SRL A:JR NC,KE2 SRL A:JR NC,KE3 SRL A:JR NC,KE4 SRL A:JR NC,KE5 LD BC,#EFFE:IN A SRL A:JR NC,KE0 SRL A:JR NC,KE9 SRL A:JR NC,KE8 SRL A:JR NC,KE7 SRL A:JR NC,KE6 LD BC,#BFFE:IN A BIT 4,A:JR Z,KEH LD BC,#7FFE:IN A BIT 2,A:JR Z,KEM LD BC,#FBFE:IN A BIT 2,A:JR Z,KEE LD BC,#FDFE:IN A BIT 1,A:JR Z,KES LD BC,#FEFE:IN A BIT 2,A:JR Z,KEX XOR A RET KE0 LD A,#30:OR A:RET KE1 LD A,#31:OR A:RET KE2 LD A,#32:OR A:RET KE3 LD A,#33:OR A:RET KE4 LD A,#34:OR A:RET KE5 LD A,#35:OR A:RET KE6 LD A,#36:OR A:RET KE7 LD A,#37:OR A:RET KE8 LD A,#38:OR A:RET KE9 LD A,#39:OR A:RET KEH LD A,"H":OR A:RET KEM LD A,"M":OR A:RET KEE LD A,"E":OR A:RET KES LD A,"S":OR A:RET KEX LD A,#3A:OR A:RET ;------- F7F XOR A IN A,(254) AND %00011111 CP %00011111 RET USPO CALL F7F:JR NZ,USPO RET UNSP CALL F7F:JR Z,UNSP RET ;--------------------------------------- CLS LD HL,#5800,DE,HL:INC DE LD (HL),L,BC,#0300-1:LDIR RET PBCLS LD B,A,A,(Tt):CP 3:RET Z LD A,B LD HL,#5800+IBC*32 ZIRCON LD (HL),0 LD DE,HL:INC DE LD BC,32-1:LDIR:EX DE,HL DEC A:JR NZ,ZIRCON RET ERCLS LD A,2 ERcls LD HL,#5800+16*32 LD (HL),A LD DE,HL:INC DE LD BC,32*8-1:LDIR RET CSCLS LD A,1:JR ERcls ;--------------------------------------- LANGS LD HL,ALLTXT,(LNGN),HL LD HL,COMTXT,(COMN),HL LD DE,#0A0A,A,0:CALL MESS LD DE,#0C0A,A,1:CALL MESS LD DE,#1706,A,2:CALL MESS LD DE,#0004,A,4:CALL MESS LMAIN CALL CLAVA:JR Z,$-3 CP "1":JR Z,SELEN CP "2":JR Z,SELRU JR LMAIN SELRU LD HL,TXTRU LD DE,TXTEN LD BC,PRT_RND-TXTEN LDIR SELEN LD HL,TXTEN,(LNGN),HL:RET ;------- CONFIG CALL VINIT LD DE,#0008,A,0:CALL MES2 LD DE,#010A,A,1:CALL MES2 LD DE,#1700,A,1:CALL MESS LD DE,#1300,A,2:CALL MESS CALL SETUP CP "H":RET Z CP "E":RET Z CALL TEST LD A,1:OR A RET ;------- HLP XOR A:RET TEST PUSH AF:CALL CLS POP AF SUB #31:JR C,HLP CP 10:JR NC,HLP LD C,A LD A,(Mt) AND 1:LD A,10:JR NZ,$+3:XOR A ADD A,C:LD (Mmod),A CP 15:JR NC,HLP LD B,A,DE,CLNST:INC B LD HL,MMD-STRI ADD HL,DE:DJNZ $-1 LD DE,MMOD+2,BC,STRI:LDIR ;------- CALL PAGING:JR NZ,MMNU ;------- CALL CLS,ALG MMNU LD A,1 RET ;------- ALG CALL VALZ LD DE,#0004,A,9:CALL MESS CALL MEM CALL LT LD B,8,DE,IBC*256 AlG PUSH BC:LD A,9:CALL MES2 POP BC:DJNZ AlG CALL IMM:LD A,B,(BASS+1),A XOR A:LD (CSST),A BASS LD A,1:CALL PBCLS XOR A:LD (PAGE),A TSTT CALL 0 LD A,(ERROR):OR A LD DE,#1700,A,14:CALL NZ,MESS LD A,(CSER):OR A:CALL NZ,ERCLS CALL F7F:JR Z,BASS CALL USPO RET ;------- LT LD A,(Tt) CP 3:JR Z,CST CP 2:LD HL,RTEZT,B,6:JR Z,Lt LD HL,TEZT,B,5 Lt LD (TSTT+1),HL,A,B LD DE,#0E00:JP MESS CST CALL CSCLS LD HL,STEZT,B,7:JR Lt VALZ LD A,(Tt) LD HL,#0000 LD DE,#FFFF:OR A:JR Z,AAYY LD HL,#5555 LD DE,#AAAA AAYY LD (VAL1),HL,(VAL2),DE RET IMM LD A,(Mmod),B,A:INC B LD HL,MMD-CLNST LD DE,CLNST:ADD HL,DE:DJNZ $-1 LD A,(HL) PUSH AF LD DE,IBC*256-256:CALL MES2 POP AF LD B,8 CP 10:JR NZ,$+4:LD B,1 CP 4:JR NZ,$+4:LD B,2 CP 5:JR NZ,$+4:LD B,4 RET MEM LD DE,#0100,A,10:JP MESS ;------- PAGING CALL MEM CALL NUMT:LD A,(WRO):OR A:RET Z LD A,(ERBUF),HL,Fp:CALL NORK LD DE,#0A04,A,11:CALL MESS LD DE,#1700,A,13:CALL MESS LD DE,#0C00,A,15:CALL MESS LD A,(Mmod):OR A LD DE,#1000,A,12:CALL Z,MESS CALL ANYE CALL CLAVA:CP "S":RET Z LD A,1:OR A RET ;------- SETUP LD DE,#0400,A,3:CALL MESS LD DE,#0500,A,4:CALL MESS LD A,(Mt):AND 1:ADD A,2 LD DE,#0705:CALL MES2 CALL USPO CALL CLAVA:JR Z,$-3 CP "H":RET Z CP "E":RET Z CP "0":JR Z,TR0 CP "M":JR Z,TRM CP "1":JR C,SETUP CP #3B:JR NC,SETUP RET TR0 LD HL,Tt,DE,TT+2:CALL TTT JR SETUP TRM LD HL,Mt,DE,MT+2:CALL TTT JR SETUP ;--------------------------------------- TTT LD A,(HL) PUSH HL:INC HL LD C,(HL):INC HL LD B,(HL):INC HL INC A:CP B:JR C,$+3:XOR A LD B,0 PUSH AF OR A:JR Z,UUU ADD HL,BC:DEC A:JR NZ,$-2 UUU LDIR POP AF POP HL LD (HL),A RET VINIT LD A,0:OR A:RET NZ INC A:LD (VINIT+1),A LD HL,Tt,DE,TT+2:CALL TTT LD HL,Mt,DE,MT+2:JR TTT ;--------------------------------------- MES2 LD HL,(COMN):JR MEZZ MESS LD HL,(LNGN) MEZZ OR A:JR Z,YAHOO PUSH DE LD E,A LD BC,8192 BXX XOR A BAX CPIR LD A,(HL):INC HL OR A:JR NZ,BXX DEC E:JR NZ,BAX POP DE YAHOO JP TXTPR ;--------------------------------------- TXTPR ;i:HL - Text ; E - X ; D - Y ; o: E - old X ; D - new Y LD (LXY),DE PUSH HL LD A,D ADD A,A LD H,ATTRIB[,L,A LD B,(HL):INC HL LD A,(HL):ADD A,E:LD C,A LD A,D ADD A,A LD H,BUFER[,L,A LD A,(HL):ADD A,E:LD E,A:INC HL LD D,(HL) POP HL LD A,(CLRC),(CLRN),A BTOOOM LD A,(HL) OR A:JR Z,LOOOL CP 13:JR Z,NxtLine CP #FE:CALL Z,CybLnk:JR Z,BTOOOM CP 9:CALL C,CCOD:JR C,BTOOOM CALL CHAR JP BTOOOM LOOOL LD DE,(LXY):INC D RET ;------- CHAR PUSH HL,DE LD H,FONT[,L,A .7 LD A,(HL),(DE),A:INC H,D LD A,(HL),(DE),A POP DE,HL LD A,(CLRN),(BC),A:INC BC INC HL,E RET ;--------------------------------------- NxtLine LD DE,(LXY):INC D,HL:JP TXTPR ;------- CybLnk INC HL LD A,(HL):INC HL:EXA LD A,(HL):INC HL PUSH HL LD H,A:EXA LD L,A CALL STRING POP HL XOR A RET STRING LD A,(HL) OR A:RET Z CP 9:CALL C,CCOD:JR C,STRING CALL CHAR JP STRING ;------- CCOD EXA:INC HL:LD A,(HL):CP 9:JR C,X EXA:DEC HL LD (CLRN),A:XOR A:RET X EXX LD C,A:EXA CP C:JR Z,BRO DEC A,C .3 ADD A,A OR C GGB LD (CLRN),A:SCF EXX INC HL RET BRO OR %01000000:JR GGB ;--------------------------------------- DECRUN LD HL,BUFER LD DE,#4000;#C000 LD B,192 LOOP LD (HL),E INC HL LD (HL),D INC HL INC D LD A,D AND 7 JP NZ,METKA LD A,E ADD A,32 LD E,A JR C,METKA LD A,D SUB 8 LD D,A METKA DJNZ LOOP TXTPRT LD HL,BUFER,DE,BUFER LD A,24 PA .2 LDI LD BC,14:ADD HL,BC DEC A:JR NZ,PA LD HL,#5800;#D800 LD DE,ATTRIB LD B,24 ZANOS PUSH BC LD A,H LD (DE),A INC DE LD A,L LD (DE),A INC DE LD BC,#1F ADD HL,BC INC HL POP BC DJNZ ZANOS RET ;--------------------------------------- CLRN NOP ;Color buffer CLRC DB 0;Default color LXY DS 2 LNGN DW ALLTXT COMN DW COMTXT ;--------------------------------------- ;--------------------------------------- COMTXT DB 7,7 DB #FE:DW UMT DB 5,5," (BETA)",0,0; 0 DB 1,8 DB "BUDDER/MGN",0,0; 1 DB 4,4,#31 DB 1,8 DB ".Pentagon1024 ",13 DB 4,4,#32 DB 1,8 DB ".Scorpion1024 ",13 DB 4,4,#33 DB 1,8 DB ".KAY1024 ",13 DB 4,4,#34 DB 1,8 DB ".KAY2048(Phoenix)",13 DB 4,4,#35 DB 1,8 DB ".Profi1024 ",13 DB 4,4,#36 DB 1,8 DB ".ATM4.5(1024) ",13 DB 4,4,#37 DB 1,8 DB ".ATM7.1(1024) ",13 DB 4,4,#38 DB 1,8 DB ".PentEvo(TSConf) ",13 DB 4,4,#39 DB 1,8 DB ".Sprinter(4096K) ",13 DB 4,4,#58 DB 1,8 DB ".GMX(2048) " DB 0,0; 2 DB 4,4,#31 DB 1,8 DB ".Scorpion256(KAY)",13 DB 4,4,#32 DB 1,8 DB ".Pentagon512 ",13 DB 4,4,#33 DB 1,8 DB ".Profi512 ",13 DB 4,4,#34 DB 1,8 DB ".ATM4.5(512) ",13 DB 4,4,#35 DB 1,8 DB ".Spectrum 128K ",13 DS 18,32:DB 13 DS 18,32:DB 13 DS 18,32:DB 13 DS 18,32:DB 13 DS 18,32:DB 0,0; 3 _DB 7,7,#DA,#C4,"256K",#C4,#BF:DS 3,13 _DB 7,7,#C0:DS 6,#C4:DB #D9,0,0; 4 _DB 7,7,#DA,#C4,"512K",#C4,#BF:DS 5,13 _DB 7,7,#C0:DS 6,#C4:DB #D9,0,0; 5 _DB 7,7,#DA,#C4,"1024",#C4,#BF:DS 9,13 _DB 7,7,#C0:DS 6,#C4:DB #D9,0,0; 6 _DB 7,7 _DB #DA,#C4,"1024",#C4,#BF ;_DB " MEMORY " _DB #DA,#C4,"2048",#C4,#BF:DS 9,13 _DB 7,7,#C0:DS 6,#C4:DB #D9;DS 8,32 _DB #C0:DS 6,#C4:DB #D9,0,0; 7 _DB 7,7 _DB #DA,#C4,"1024",#C4,#BF _DB #DA,#C4,"2048",#C4,#BF _DB #DA,#C4,"3072",#C4,#BF _DB #DA,#C4,"4096",#C4,#BF:DS 9,13 _DB 7,7 .4 DB #C0:DS 6,#C4:DB #D9 _DB 0,0; 8 DS 32,42:DB 0,0; 9 _DB 7,7,#DA,#C4,"128K",#C4,#BF:DS 2,13 _DB 7,7,#C0:DS 6,#C4:DB #D9,0,0; 10 ;--------------------------------------- TT DB 7,7," ",0 Tt DB 2-1,14,4 DB "VALUES #00,#FF" DB "VALUES #55,#AA" DB "RANDOM VALUES " DB "CIRCULAR SHIFT" MT DB 7,7," ",0 Mt DB #FF,10,2 DB "1024-4096K" DB "128-512K " MMOD DB 5,5," ",0 Mmod DB 0 ;DB IMM ;DW MANNA,NUMT,TEZT,RTEZT MMD DB 6 DW MANAGT,N1024 DW TPEN1M,R1024,S1024 DB "Pentagon1024 ";0 DB 6 DW MANAGZS,N1024 DW TZS1M,R1024,S1024 DB "Scorpion1024 ";1 DB 6 DW MANAG,N1024 DW TKAY1M,R1024,S1024 DB "KAY1024 ";2 DB 7 DW MANAG,NTKAY2 DW TKAY2M,R2048,S2048 DB "KAY2048(Phoenix)";3 (!) PNX EQU 3 DB 6 DW MANAGP,N1024 DW PROF1M,R1024,S1024 DB "Profi1024 ";4 DB 6 DW MANAGA,N1024 DW ATM1PM,R1024,S1024 DB "ATM4.5(1024) ";5 DB 6 DW MANAGAT,N1024 DW ATM2PM,R1024,S1024 DB "ATM7.1(1024) ";6 DB 8 DW MANAG4M,NATM3 DW ATM4M,RATM4M,S4096 DB "PentEvo (TSConf)";7 (!) PET EQU 7 DB 8 DW MSPRINT,NSPRI DW ATM4M,RATM4M,S4096 DB "Sprinter (4096K)";8 (!) DB 7 DW MANAGX,NTKAY2 DW TKAY2M,R2048,S2048 DB "GMX (2048) ";X (!) SRN EQU 8 DB 4 DW MANAGZS,N256 DW TKAY256,R256,S256 DB "Scorpion256(KAY)";9 DB 5 DW MANAGT,N512 DW TPNT512,R512,S512 DB "Pentagon512 ";10 DB 5 DW MANAGP,N512 DW TPRO512,R512,S512 DB "Profi512 ";11 DB 5 DW MANAGA,N512 DW TATM512,R512,S512 DB "ATM4.5(512) ";12 DB 10 DW MANAGT,N128 DW TSPE128,R128,S128 DB "Spectrum 128K ";13 FP DB 3,3 Fp DB "00",0 UMT DB "UMTv2.3x",0 ;--------------------------------------- TXTEN DB 7,7 _DB " HELP PAGE for " _DB #FE:DW UMT _DS 2,13 _DB 1,8,"code: BUDDER/MGN",13 _DB 1,8,"font: WIZARD/DT" _DS 3,13 _DB 6,6,"CONTROLS:",13 _DB 1,6:DS 32,#2D:DB 13 _DB 1,7," key 0 " _DB 1,8,"- choose TEST",13 _DB 1,7," key M " _DB 1,8,"- select TYPE of RAM" _DS 2,13 _DB 1,7," keys 1-9,X " _DB 1,8,"- START chosen TEST" _DS 2,13 _DB 1,7," key H " _DB 1,8,"- PRINT THIS PAGE" _DS 2,13 _DB 1,7," key E " _DB 1,8,"- return to BASIC",13 _DB 1,6:DS 32,#2D _DS 3,13 _DB 2,2,"FOR FULL RAM TEST:",13 _DB 7,7 _DB "USE ALL TESTS! (KEY 0)" _DS 3,13 _DB " ANY KEY - RETURN TO MAIN MENU! " DB 0,0; 0 DB 4,4,#48,1,4,#2D DB 3,3,"SHOW HELP PAGE..." DB 0,0; 1 DB 2,2,"WARNING:",13 DB 7,7,"THIS TEST WILL CLEAR " DB "ALL RAM!",0,0; 2 DB 4,4,#30,1,8,#2D DB 5,5,"TEST TYPE:" DB #FE:DW TT:DB 0,0; 3 DB 4,4,#4D,1,8,#2D DB 5,5,"MEMORY TYPE:" DB #FE:DW MT:DB 0,0; 4 DB 7,7,"LEGEND:",13 DB 6,6,42 DB 1,7," - skipped PAGE",13 DB 4,4,42 DB 1,7," - no errors",13 DB 2,2,42 DB 1,7," - error (#00/55)",13 DB 3,3,42 DB 1,7," - error (#FF/AA)",13 DB 13 DB 1,8,"ALG: " DB #FE:DW TT DB 0,0; 5 DB 7,7,"LEGEND:",13 DB 6,6,42 DB 1,7," - skipped",13 DB 5,5,42 _DB 1,7," - non-checked (filled)",13 DB 4,4,42 _DB 1,7," - checked (no errors)",13 DB 2,2,42 DB 1,7," - found ERRORS",13 DB 13 DB 1,8,"ALG: " DB #FE:DW TT DB 0,0; 6 _DB 1,1,42,1,7,47,6,6,42,1,7,47,5,5,42 _DB 1,7," - filled/skipped/changed",13 _DB 32,4,4,42,1,7,47,2,2,42 _DB 1,7," - ok/error" DB 0,0; 7 DB 7,7,"RES",0,0; 8 DB 7,7 DB "TESTING IS IN PROGRESS!!!" DB 0,0; 9 DB 6,6,"MEMORY:" DB #FE:DW MMOD DB 0,0; 10 DB 2,2," WRONG PAGING!!!",13 DB 7,7," FAILED AT PAGE #" DB #FE:DW FP:DB 7,7,"!!" DB 0,0; 11 DB 7,7 DB "IF YOU HASNT PENTAGON1024," DB " THEN",13 DB 7,7,"PRESS " DB 2,2,"RESET",7,7,"!!! " DB "(Hi-Mem Blocked)",0,0; 12 DB " ANY KEY - RETURN TO MAIN " DB "MENU! ",0,0; 13 DB 2,2,"UNSTABLE RAM FOUND!!!" DB 0,0; 14 DB 1,8,"(PRESS S TO CONTINUE " DB "ANYWAY...)",0,0; 15 ;======================================= ORG FONT INCB "FONT32" ORG OUTZ ;------- ALLTXT DB 6,1,#31,1,8,#2E DB 7,7,"ENGLISH",0,0 DB 6,1,#32,1,8,#2E DB 7,7,"РУССКИЙ",0,0 DB 7,7,"(C)" DB 4,4,"BUDDER/MNG " DB 2,2,"2015",0,0 DB 7,7,"Universal Memory Tester" DB 6,6," v2.3x",0,0 DB 7,7,"Visit:" DB 1,1,"forum.tslabs.info",0,0 ;--------------------------------------- TXTRU DB 7,7 _DB " О программе " _DB #FE:DW UMT _DS 2,13 _DB 1,8," код: BUDDER/MGN",13 _DB 1,8,"фонт: WIZARD/DT" _DS 3,13 _DB 6,6,"Управление:",13 _DB 1,6:DS 32,#2D:DB 13 _DB 1,7," 0 " _DB 1,8,"- Выбор типа теста",13 _DB 1,7," M " _DB 1,8,"- Выбор объема памяти" _DS 2,13 _DB 1,7,"1-9,X " _DB 1,8,"- Запустить выбранный тест" _DS 2,13 _DB 1,7," H " _DB 1,8,"- Вывод этой страницы" _DS 2,13 _DB 1,7," E " _DB 1,8,"- выход в BASIC",13 _DB 1,6:DS 32,#2D _DS 3,13 _DB 2,2,"Для полной проверки ОЗУ:",13 _DB 7,7 _DB "Используйте все 4 теста! (кл. 0)" _DS 3,13 _DB 7,7 _DB " ЛЮБАЯ КЛАВИША - ВОЗВРАТ В МЕНЮ!" DB 0,0; 0 DB 4,4,#48,1,4,#2D DB 3,3,"ПОКАЗАТЬ ОПИСАНИЕ..." DB 0,0; 1 DB 2,2,"ВНИМАНИЕ:",13 DB 7,7,"ДАННЫЙ ТЕСТ ОЧИСТИТ " DB "ВС",#F0," ОЗУ!",0,0; 2 DB 4,4,#30,1,8,#2D DB 5,5,"ТИП ТЕСТА:" DB #FE:DW TT:DB 0,0; 3 DB 4,4,#4D,1,8,#2D DB 5,5,"ТИП ПАМЯТИ:" DB #FE:DW MT:DB 0,0; 4 DB 7,7,"ЛЕГЕНДА:",13 DB 6,6,42 _DB 1,7," - пропущенная страница",13 DB 4,4,42 DB 1,7," - нет ошибок",13 DB 2,2,42 DB 1,7," - ошибка (#00/55)",13 DB 3,3,42 DB 1,7," - ошибка (#FF/AA)",13 DB 13 DB 1,8,"Алгоритм: " DB #FE:DW TT DB 0,0; 5 DB 7,7,"ЛЕГЕНДА:",13 DB 6,6,42 _DB 1,7," - пропущено",13 DB 5,5,42 DB 1,7 _DB " - не проверено",13 DB 4,4,42 DB 1,7 _DB " - проверено (нет ошибок)",13 DB 2,2,42 _DB 1,7," - есть ошибки",13 DB 13 DB 1,8,"Алгоритм: " DB #FE:DW TT DB 0,0; 6 _DB 1,1,42,1,7,47,6,6,42,1,7,47,5,5,42 _DB 1,7 _DB " - генер./пропущ./изменение",13 _DB 32,4,4,42,1,7,47,2,2,42 _DB 1,7," - нет ошибок/есть ошибки" DB 0,0; 7 DB 7,7,"RES",0,0; 8 DB 7,7 DB "Тестирование в процессе!!!" DB 0,0; 9 DB 6,6,"память:" DB #FE:DW MMOD DB 0,0; 10 DB 2,2," ошибка нумерации!",13 DB 7,7,"начиная со страницы #" DB #FE:DW FP:DB 7,7,"!!" DB 0,0; 11 DB 7,7 DB "Если у вас не PENTAGON1024," DB " то",13 DB 7,7,"нажмите " DB 2,2,"RESET",7,7,"!!!",13 DB 6,6,"(верхняя память " DB "заблокирована!)" DB 0,0; 12 DB " ЛЮБАЯ КЛАВИША - ВОЗВРАТ В " DB "МЕНЮ!",0,0; 13 DB 2,2 DB "обнаружены ошибки в ОЗУ!!!" DB 0,0; 14 DB 1,8," (S - " DB "все равно продолжить...)" DB 0,0; 15 ;---------------------------------------