"The greatest program ever written"

General games-related topics
User avatar
zsolt
Posts: 214
Joined: Wed Apr 20, 2011 11:43 am
Location: Fót, Hungary

Re: "The greatest program ever written"

Post by zsolt »

siggi wrote:Could those programs be loaded using ZXPAND?
I don't know, because I don't have a ZXPAND. But...

I made a little step by step debugging - see the code section.
The following system variables are changed during a RST08-call: X_PTR, ERR_NR, MEM, STKEND.
(the common part of the "LOAD-end" and the "RST-call" don't care)
These locations are used by 1KCHESSplus after the "RAND USR"-call only.
Can we emulate somehow your loader? (is the source available?)
Regards,
Zsolt

Code: Select all

;; ERROR-1
L0008:
	LD HL,($4016)	; fetch character address from CH_ADD.
	LD ($4018),HL	; and set the error pointer X_PTR.
	JR L0056	; forward to continue at ERROR-2.

;; ERROR-2
L0056:
	POP HL		; pop the return address which points to the
			; DEFB, error code, after the RST 08.
	LD L,(HL)	; load L with the error code. HL is not needed
			; anymore.
;; ERROR-3
L0058:
	LD (IY+$00),L	; place error code in system variable ERR_NR
	LD SP,($4002)	; set the stack pointer from ERR_SP

** ERR_SP points the fist call's return address, wich is $0676 (the ZX81 main loop)

	CALL L0207	; routine SLOW/FAST selects slow mode.

; ---------------------------------------------------------------------
  ;; SLOW/FAST
  L0207:
	  LD HL,$403B	  ; Address the system variable CDFLAG.
	  LD A,(HL)	  ; Load value to the accumulator.
	  RLA		  ; rotate bit 6 to position 7.
	  XOR (HL)	  ; exclusive or with original bit 7.
	  RLA		  ; rotate result out to carry.
	  RET NC	  ; return if both bits were the same.

** CDFLAG contains zero, so it returns without displaying
; ---------------------------------------------------------------------

	JP L14BC	; exit to address on stack via routine SET-MIN.

; ---
;; SET-MIN
L14BC:
	LD HL,$405D	; normal location of calculator's memory area
	LD ($401F),HL	; update system variable MEM
	LD HL,($401A)	; fetch STKBOT
	JR L14A9	; back to SET-STK-E

; ---
;; SET-STK-E
L14A9:
	LD ($401C),HL	; sv STKEND
	RET		;

** SP points the fist call's return address, wich is $0676 (in the ZX81 main loop)
; ---------------------------------------------------------------------
;; NEXT-LINE
L066C:
	LD ($4029),HL	; sv NXTLIN_lo
	EX DE,HL	;
	CALL L004D	; routine TEMP-PTR-2
	CALL L0CC1	; routine LINE-RUN

; ---------------------------------------------------------------------

** here begins the common code of the "LOAD-end" and the "RST08/db $FF"

L0676:
	RES 1,(IY+$01)	; sv FLAGS  - Signal printer not in use
	LD A,$C0 	;
	LD (IY+$19),A	; sv X_PTR_lo
	CALL L14A3	; routine X-TEMP
	RES 5,(IY+$2D)	; sv FLAGX
	BIT 7,(IY+$00)	; sv ERR_NR
	JR Z,L06AE	; to STOP-LINE

	LD HL,($4029)	; sv NXTLIN_lo
	AND (HL)	;
	JR NZ,L06AE	; to STOP-LINE

	LD D,(HL)	;
	INC HL		;
	LD E,(HL)	;
	LD ($4007),DE	; sv PPC_lo
	INC HL		;
	LD E,(HL)	;
	INC HL		;
	LD D,(HL)	;
	INC HL		;
	EX DE,HL	;
	ADD HL,DE	;
	CALL L0F46	; routine BREAK-1
	JR C,L066C	; to NEXT-LINE

	LD HL,$4000	; sv ERR_NR
	BIT 7,(HL)	;
	JR Z,L06AE	; to STOP-LINE

	LD (HL),$0C	;
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]
User avatar
siggi
Posts: 930
Joined: Thu May 08, 2008 9:30 am
Location: Wetterau, Germany
Contact:

Re: "The greatest program ever written"

Post by siggi »

That is the assembler soure for ASDIS (running on the Zeddy) of the current USB driver I use:
the first 4 digits are the address, where it is assembled to. The following 5 chars are labels. Comment lines start with ";"

Code: Select all

          8000;===========================
          8000;USB-ZX81
          8000;VON THOMAS LIENHARD
          8000;PORTIERT ZU ASDIS
          8000;VON J.MERKL
          8000;;
          8000;---------------------------
          8000;V1.0.0
          8000;GRUNDVERSION T.LIENHARD
          8000;;
          8000;V1.1.0
          8000;FEHLERMELDUNGEN EINGEBAUT
          8000;2.EINSPRUNGADR. FUER BASIC
          8000;MIT FEHLERCODERUECKMELDUNG
          8000;;
          8000;V1.2.0
          8000;VARIABLE VERLAGERT
          8000;;
          8000;V1.2.1
          8000;KORREKTUREN: SIGGI
          8000;V1.2.2
          8000;DATEILAENGE IN SYSVAR
          8000;COORD(16438/39)
          8000;V1.2.3
          8000;D,XXXX KOMMANDO HINZU
          8000;V1.2.4 ZAHLEN NUN DEZIMAL
          8000;V1.2.5 SPEED OPTIMIERT
          8000;       EINSPRUNG M/C
          8000;V1.2.6 BREAK CHECK
          8000;V1.3.0 MEFISDOS SYNTAX, REN
          8000;V1.3.1 CD ZEIGT NEUE DIR AN
          8000;V1.3.1 BREAK AUCH MIT 6
          8000;===========================
          8000     JP UFM         C3B88B
          8003     JP USB2        C30481
          8006     JP USB3        C31581
          8009     JP USB1        C30B81
          800C;---------------------------
          800C;VARIABLE
          800C     009=$09
          8015FILNA215=$D7
          80ECSSTAT001=$01
          80EDRBYTE001=$01
          80EERSTAT001=$01
          80EF     002=$02
          80F1STAL 001=$01
          80F2STAH 001=$01
          80F3SIZEL001=$01
          80F4SIZEH001=$01
          80F5     012=$0C
          8101MBACK001=$01
          8102ERRNR002=$02
          8104;---------------------------
          8104;;
          8104USB2 XOR A          AF
          8105     LD (ERRNO),A   323240
          8108     INC A          3C
          8109     JR NUSB        1801
          810B;;
          810BUSB1 XOR A          AF
          810CNUSB LD (MBACK),A   320181
          810F;SET RETURN ADDRESS TO BASIC
          810F     LD HL,R2BAS    216F81
          8112     PUSH HL        E5
          8113     JR USB         1814
          8115;;
          8115USB3 XOR A          AF
          8116     LD (ERRNO),A   323240
          8119     INC A          3C
          811A     LD (MBACK),A   320181
          811D     CALL $02E7     CDE702
          8120;SET RETURN ADDRESS TO MC
          8120     LD HL,R2MC     217581
          8123     PUSH HL        E5
          8124;READ COMMAND FROM PRINTER
          8124;BUFFER
          8124     LD HL,PRBUF    213C40
          8127     JR USBMC       1803
          8129;;
          8129USB  CALL NAME      CD9982
          812CUSBMCLD A,(HL)      7E
          812D     CP $2D         FE2D
          812F     JP Z,HLP       CA8081
          8132     CP $0F         FE0F
          8134     JP Z,HLP       CA8081
          8137; AB NUN ZUGRIFF AUF STICK
          8137     CALL INIT      CD4689
          813A     LD A,(HL)      7E
          813b     INC HL         23
          813C     CP $2E         FE2E
          813E     JP Z,INFO1     CABC83
          8141     CP $38         FE38
          8143     JP Z,SAVE1     CAE885
          8146     CP $31         FE31
          8148     JP Z,LOAD1     CAF986
          814B     CP $29         FE29
          814D     JP Z,DIR1      CA5984
          8150     CP $30         FE30
          8152     JP Z,DIR1      CA5984
          8155     CP $3B         FE3B
          8157     JP Z,DIR1      CA5984
          815A     CP $2A         FE2A
          815C     JP Z,ERAS1     CA0D88
          815F     CP $37         FE37
          8161     JP Z,REN1      CAD685
          8164;;
          8164     LD DE,TXA      11B082
          8167     LD (ERRNR),DE  ED530281
          816B     JP ERROR       C37983
          816E;;
          816E;JUMP TO M/C OR R2BAS
          816EBASICRET            C9
          816F;;
          816F;JUMP TO BASIC
          816FR2BASCALL SHOW      CD0702
          8172     XOR A          AF
          8173     RST 08         CF
          8174     FF
          8175;;
          8175;JUMP TO M/C
          8175R2MC LD A,(ERRNO)   3A3240
          8178     OR A           B7
          8179     CALL NZ,CLBUF  C49283
          817C     CALL SHOW      CD0702
          817F     RET            C9
          8180;;
          8180HLP  LD HL,HLPTX    218E81
          8183HLP1 LD A,(HL)      7E
          8184     CP $FF         FEFF
          8186     JR Z,BASIC     28E6
          8188     PUSH HL        E5
          8189     RST 10         D7
          818A     POP HL         E1
          818B     INC HL         23
          818C     JR HLP1        18F5
          818E;;
          818eHLPTXINFO   "I"
          8198     HALT           76
          8199     DIR    "D"
          81A3     HALT           76
          81A4     CHDIR  "D VERZ"
          81B3     HALT           76
          81B4     DIR X  "D,<NUM>"
          81C4     HALT           76
          81C5     MKDIR  "V VERZ"
          81D4     HALT           76
          81D5     RMDIR  "K VERZ"
          81E4     HALT           76
          81E5     LOAD   "L DATEI.P"
          81F7     HALT           76
          81F8     BLOAD  "L DATEI.B,<ADR>
          8210     HALT           76
          8211     SAVE   "S DATEI.P"
          8223     HALT           76
          8224     BSAVE  "S DATEI.B,<ADR>
          823C     <LEN>"
          8242     HALT           76
          8243     ERASE  "E DATEI.P"
          8255     HALT           76
          8256     RENAME "R NAME NAME"
          826A     HALT           76
          826B     HELP   "H"
          8275     HALT           76
          8276     HALT           76
          8277     ABBRUCH MIT "A" ODER "6
          828F     HALT           76
          8290     HALT           76
          8291     V1.3.3
          8297     HALT           76
          8298     FF
          8299;;
          8299NAME RST 20         E7
          829A     CALL $0F55     CD550F
          829D     LD A,($4001)   3A0140
          82A0     ADD A,A        87
          82A1     JP M,$0D9A     FA9A0D
          82A4     POP HL         E1
          82A5     RET NC         D0
          82A6     PUSH HL        E5
          82A7     CALL $02E7     CDE702
          82AA     CALL $13F8     CDF813
          82AD     LD H,D         62
          82AE     LD L,E         6B
          82AF     RET            C9
          82b0;;
          82B0TXA  0112
          82B2     ungueltiger befehl
          82C4TXB  0216
          82C6     ungueltiger dir-befehl
          82DCTXC  0317
          82DE     file/dir nicht gefunden
          82F5TXD  040B
          82F7     device voll
          8302TXE  0513
          8304     file/dir noch offen
          8317TXF  060A
          8319     ladefehler
          8323TXG  0716
          8325     device nicht vorhanden
          833BTXH  0805
          833d     break
          8342TXI  090E
          8344     dir nicht leer
          8352TXX  00000000000000000000
          835C     00000000000000000000
          8366     00000000000000000000
          8370     0000
          8372;;
          8372BRKERLD DE,TXH      113B83
          8375     LD (ERRNR),DE  ED530281
          8379;;
          8379ERRORLD A,(MBACK)   3A0181
          837C     CP $01         FE01
          837E     JR NZ,NERR     2009
          8380     LD HL,(ERRNR)  2A0281
          8383     LD A,(HL)      7E
          8384     LD (ERRNO),A   323240
          8387     JR ERROB       1803
          8389NERR CALL TXOUT     CDA183
          838C;;
          838CERROBCALL CLBUF     CD9283
          838F     JP BASIC       C36E81
          8392;;
          8392CLBUFCALL READB     CDA789
          8395     LD A,(RSTAT)   3AEE80
          8398     CP $01         FE01
          839A     RET Z          C8
          839B     CALL BRKCK     CDD38A
          839E     RET Z          C8
          839F     JR CLBUF       18F1
          83A1;;
          83A1TXOUTLD DE,(DFILE)  ED5B0C40
          83a5     INC DE         13
          83A6     PUSH DE        D5
          83A7     LD BC,$0020    012000
          83AA     LD HL,TXX      215283
          83AD     LDIR           EDB0
          83AF     POP DE         D1
          83B0     LD HL,(ERRNR)  2A0281
          83B3     INC HL         23
          83B4     LD A,(HL)      7E
          83B5     LD B,$00       0600
          83B7     LD C,A         4F
          83B8     INC HL         23
          83B9     LDIR           EDB0
          83BB     RET            C9
          83BC;;
          83BCINFO1LD A,$12       3E12
          83be     CALL SENDB     CD408A
          83C1     LD A,CR        3E0D
          83C3     CALL SENDB     CD408A
          83C6INFO2CALL READB     CDA789
          83C9     LD A,(RSTAT)   3AEE80
          83CC     CP $01         FE01
          83CE     JP Z,INFO2     CAC683
          83D1     CALL WAIT      CDDB85
          83D4INFO3CALL READB     CDA789
          83D7     CALL READB     CDA789
          83DA     CALL READB     CDA789
          83DD     CALL READB     CDA789
          83E0     CALL READB     CDA789
          83E3     LD A,$94       3E94
          83E5     CALL SENDB     CD408A
          83E8     LD A,CR        3E0D
          83ea     CALL SENDB     CD408A
          83EDINFORCALL WAIT      CDDB85
          83F0     CALL READB     CDA789
          83F3     CP $55         FE55
          83F5     JR NZ,INFOR    20F6
          83F7INFOSLD E,A         5F
          83F8     CALL TEX1      CD8788
          83FB     CALL READB     CDA789
          83FE     CP $3E         FE3E
          8400     JR Z,INFOE     2802
          8402     JR INFOS       18F3
          8404INFOECALL READB     CDA789
          8407     CALL WAIT      CDDB85
          840A     CALL WAIT      CDDB85
          840D     LD A,$13       3E13
          840F     CALL SENDB     CD408A
          8412     LD A,CR        3E0D
          8414     CALL SENDB     CD408A
          8417INFOVCALL WAIT      CDDB85
          841A     CALL READB     CDA789
          841D     CP CR          FE0D
          841F     JR Z,INFOV     28F6
          8421INFOWLD E,A         5F
          8422     CALL TEX1      CD8788
          8425     CALL READB     CDA789
          8428     CP $3E         FE3E
          842A     JR Z,INFOX     2802
          842C     JR INFOW       18F3
          842EINFOXCALL READB     CDA789
          8431     JP BASIC       C36E81
          8434;;
          8434ADR1 INC HL         23
          8435     CALL GETBC     CD3D84
          8438     LD (STAL),BC   ED43F180
          843C     RET            C9
          843D;;
          843D;;
          843DGETBCLD BC,$0000    010000
          8440GNUM LD A,(HL)      7E
          8441     SUB $1C        D61C
          8443     RET C          D8
          8444     CP $0A         FE0A
          8446     RET NC         D0
          8447     PUSH HL        E5
          8448     LD H,B         60
          8449     LD L,C         69
          844A     ADD HL,HL      29
          844B     ADD HL,HL      29
          844c     ADD HL,HL      29
          844D     ADD HL,BC      09
          844E     ADD HL,BC      09
          844F     LD B,$00       0600
          8451     LD C,A         4F
          8452     ADD HL,BC      09
          8453     LD B,H         44
          8454     LD C,L         4D
          8455     POP HL         E1
          8456     INC HL         23
          8457     JR GNUM        18E7
          8459;;
          8459DIR1 CP $3B         FE3B
          845B     JR Z,DIMAK     282A
          845D     CP $30         FE30
          845F     JR Z,DIERA     282B
          8461     LD A,(HL)      7E
          8462     CP $0B         FE0B
          8464     JR Z,DIRS      282B
          8466     CP $1A         FE1A
          8468     JP Z,DIRM      CA0885
          846B     CP $00         FE00
          846D     JR Z,DICHG     2809
          846F     LD HL,TXB      21C482
          8472     LD (ERRNR),HL  220281
          8475     JP ERROR       C37983
          8478;;
          8478DICHGLD A,(MBACK)   3A0181
          847B     OR A           B7
          847C     JR NZ,DICH1    2004
          847E;PUSH SHOWDIR ADD ON STACK
          847E;TO SHOW NEW DIR AFTERWARDS
          847e     LD DE,DIRS     119184
          8481     PUSH DE        D5
          8482DICH1LD C,$02       0E02
          8484     JP DIGO        C36085
          8487DIMAKLD C,$06       0E06
          8489     JP DIGO        C36085
          848CDIERALD C,$05       0E05
          848E     JP DIGO        C36085
          8491;;
          8491DIRS LD B,$13       0613
          8493     LD A,$01       3E01
          8495     CALL SENDB     CD408A
          8498     LD A,CR        3E0D
          849A     CALL SENDB     CD408A
          849D     CALL WAIT      CDDB85
          84A0DIRR CALL READB     CDA789
          84a3     CALL BRKCK     CDD38A
          84A6     JP Z,BRKER     CA7283
          84A9     LD A,(RSTAT)   3AEE80
          84AC     CP $01         FE01
          84AE     JR Z,DIRR      28F0
          84B0     LD A,(RBYTE)   3AED80
          84B3     CP $3E         FE3E
          84B5     JR Z,DIRE      280B
          84B7     CP CR          FE0D
          84B9     JR Z,DIRC      280D
          84BBDIRP LD E,A         5F
          84BC     CALL TEX1      CD8788
          84BF     JP DIRR        C3A084
          84C2DIRE CALL CLBUF     CD9283
          84C5     JP BASIC       C36E81
          84C8DIRC DEC B          05
          84c9     JR NZ,DIRP     20F0
          84CB     LD E,CR        1E0D
          84CD     CALL TEX1      CD8788
          84D0     LD E,CR        1E0D
          84D2     CALL TEX1      CD8788
          84D5     LD E,$3C       1E3C
          84D7     CALL TEX1      CD8788
          84DA     LD E,$43       1E43
          84DC     CALL TEX1      CD8788
          84DF     LD E,$52       1E52
          84E1     CALL TEX1      CD8788
          84E4     LD E,$3E       1E3E
          84E6     CALL TEX1      CD8788
          84E9     CALL SHOW      CD0702
          84ECDIRW CALL BRKCK     CDD38A
          84EF     JP Z,BRKER     CA7283
          84f2     CALL GTKEY     CDBB02
          84F5     EX DE,HL       EB
          84F6     LD HL,$FDBF    21BFFD
          84F9     AND A          A7
          84FA     SBC HL,DE      ED52
          84FC     JR NZ,DIRW     20EE
          84FE     CALL RCLS      CD2A0A
          8501     LD B,$13       0613
          8503     LD A,(RBYTE)   3AED80
          8506     JR DIRP        18B3
          8508;;
          8508DIRM CALL ADR1      CD3484
          850B     LD A,(TXC)     3ADC82
          850E     LD (ERRNO),A   323240
          8511     LD BC,$0000    010000
          8514     LD A,$01       3E01
          8516     CALL SENDB     CD408A
          8519     LD A,CR        3E0D
          851B     CALL SENDB     CD408A
          851E     CALL WAIT      CDDB85
          8521CIRR CALL READB     CDA789
          8524     CALL BRKCK     CDD38A
          8527     JP Z,BRKER     CA7283
          852A     LD A,(RSTAT)   3AEE80
          852D     CP $01         FE01
          852F     JR Z,CIRR      28F0
          8531     LD A,(RBYTE)   3AED80
          8534     CP $3E         FE3E
          8536     JR Z,CIRE      281F
          8538     CP CR          FE0D
          853A     JR Z,CIRC      2821
          853CCIRP LD E,A         5F
          853d     LD A,(STAL)    3AF180
          8540     CP C           B9
          8541     JR NZ,CIRR     20DE
          8543     LD A,(STAH)    3AF280
          8546     CP B           B8
          8547     JR NZ,CIRR     20D8
          8549     LD A,E         7B
          854A     CP CR          FE0D
          854C     JR Z,CIRR      28D3
          854E     CALL TEX1      CD8788
          8551     XOR A          AF
          8552     LD (ERRNO),A   323240
          8555     JR CIRR        18CA
          8557CIRE CALL CLBUF     CD9283
          855A     JP BASIC       C36E81
          855DCIRC INC BC         03
          855e     JR CIRP        18DC
          8560;;
          8560DIGO PUSH BC        C5
          8561     INC HL         23
          8562     LD DE,FILNA    111580
          8565DIGO2LD A,(HL)      7E
          8566     CP $0B         FE0B
          8568     JR Z,DIGO3     2808
          856A     CALL ZXASC     CD3789
          856D     LD (DE),A      12
          856E     INC HL         23
          856F     INC DE         13
          8570     JR DIGO2       18F3
          8572DIGO3LD A,CR        3E0D
          8574     LD (DE),A      12
          8575     POP BC         C1
          8576     LD A,C         79
          8577     CALL SENDB     CD408A
          857A     LD A,$20       3E20
          857C     CALL SENDB     CD408A
          857F     LD HL,FILNA    211580
          8582DIGO4LD A,(HL)      7E
          8583     PUSH AF        F5
          8584     CALL SENDB     CD408A
          8587     INC HL         23
          8588     POP AF         F1
          8589     CP CR          FE0D
          858B     JR NZ,DIGO4    20F5
          858DDIGO5CALL READB     CDA789
          8590     CALL BRKCK     CDD38A
          8593     JP Z,BRKER     CA7283
          8596     LD A,(RSTAT)   3AEE80
          8599     CP $01         FE01
          859B     JR Z,DIGO5     28F0
          859D     LD A,(RBYTE)   3AED80
          85A0     CP $3E         FE3E
          85A2     JR Z,DIGOK     282C
          85A4     CP $43         FE43
          85A6     JR NZ,NDIG1    2005
          85A8     LD DE,TXC      11DC82
          85AB     JR NDIG        1819
          85ADNDIG1CP $44         FE44
          85AF     JR NZ,NDIG2    2005
          85B1     LD DE,TXD      11F582
          85B4     JR NDIG        1810
          85B6NDIG2CP $46         FE46
          85B8     JR NZ,NDIG3    2005
          85BA     LD DE,TXE      110283
          85bd     JR NDIG        1807
          85BFNDIG3CP $4E         FE4E
          85C1     JR NZ,DIGO5    20CA
          85C3     LD DE,TXI      114283
          85C6NDIG LD (ERRNR),DE  ED530281
          85CA     CALL CLBUF     CD9283
          85CD     JP ERROR       C37983
          85D0DIGOKCALL READB     CDA789
          85D3     JP BASIC       C36E81
          85D6;;
          85D6REN1 LD C,$0C       0E0C
          85D8     JP REERA       C30F88
          85DB;;
          85DBWAIT PUSH BC        C5
          85DC     PUSH AF        F5
          85DD     LD B,$FF       06FF
          85df     XOR A          AF
          85E0WAIT1DEC B          05
          85E1     CP B           B8
          85E2     JP NZ,WAIT1    C2E085
          85E5     POP AF         F1
          85E6     POP BC         C1
          85E7     RET            C9
          85E8;;
          85E8SAVE1PUSH HL        E5
          85E9     LD HL,(ELINE)  2A1440
          85EC     LD BC,$4009    010940
          85EF     LD (STAL),BC   ED43F180
          85F3     AND A          A7
          85F4     SBC HL,BC      ED42
          85F6     LD (SIZEL),HL  22F380
          85F9     POP HL         E1
          85fa     LD DE,FILNA    111580
          85FD     INC HL         23
          85FESAVE3LD A,(HL)      7E
          85FF     CP $0B         FE0B
          8601     JR Z,SAVE2     281B
          8603     CP $1A         FE1A
          8605     JR Z,SAVEM     280C
          8607     CP $00         FE00
          8609     JR Z,SAVEM     2808
          860B     CALL ZXASC     CD3789
          860E     LD (DE),A      12
          860F     INC HL         23
          8610     INC DE         13
          8611     JR SAVE3       18EB
          8613SAVEMCALL ADR1      CD3484
          8616     INC HL         23
          8617     CALL GETBC     CD3D84
          861A     LD (SIZEL),BC  ED43F380
          861ESAVE2LD A,CR        3E0D
          8620     LD (DE),A      12
          8621     CALL WAIT      CDDB85
          8624     LD A,$09       3E09
          8626     CALL SENDB     CD408A
          8629     LD A,$20       3E20
          862B     CALL SENDB     CD408A
          862E     LD HL,FILNA    211580
          8631SAVE4LD A,(HL)      7E
          8632     PUSH AF        F5
          8633     CALL SENDB     CD408A
          8636     INC HL         23
          8637     POP AF         F1
          8638     CP CR          FE0D
          863a     JR NZ,SAVE4    20F5
          863CSAVEWCALL WAIT      CDDB85
          863F     CALL BRKCK     CDD38A
          8642     JP Z,BRKER     CA7283
          8645     CALL READB     CDA789
          8648     CP $3E         FE3E
          864A     JR NZ,SAVEW    20F0
          864C     CALL READB     CDA789
          864F;;
          864F     LD A,$28       3E28
          8651     CALL SENDB     CD408A
          8654     LD A,$20       3E20
          8656     CALL SENDB     CD408A
          8659     XOR A          AF
          865A     CALL SENDB     CD408A
          865D     XOR A          AF
          865e     CALL SENDB     CD408A
          8661     XOR A          AF
          8662     CALL SENDB     CD408A
          8665     XOR A          AF
          8666     CALL SENDB     CD408A
          8669     LD A,CR        3E0D
          866B     CALL SENDB     CD408A
          866E     CALL WAIT      CDDB85
          8671     CALL READB     CDA789
          8674     CALL READB     CDA789
          8677;;
          8677     LD A,$08       3E08
          8679     CALL SENDB     CD408A
          867C     LD A,$20       3E20
          867E     CALL SENDB     CD408A
          8681     XOR A          AF
          8682     CALL SENDB     CD408A
          8685     XOR A          AF
          8686     CALL SENDB     CD408A
          8689     LD A,(SIZEH)   3AF480
          868C     CALL SENDB     CD408A
          868F     LD A,(SIZEL)   3AF380
          8692     CALL SENDB     CD408A
          8695     LD A,CR        3E0D
          8697     CALL SENDB     CD408A
          869A     LD HL,(STAL)   2AF180
          869D     LD BC,(SIZEL)  ED4BF380
          86A1SAVE5CALL BRKCK     CDD38A
          86A4     JP Z,BRKER     CA7283
          86A7     LD A,(HL)      7E
          86A8     CALL SENDB     CD408A
          86AB     CP $08         FE08
          86ad     JR Z,SAVE5     28F2
          86AF     INC HL         23
          86B0     DEC BC         0B
          86B1     XOR A          AF
          86B2     CP B           B8
          86B3     JR NZ,SAVE5    20EC
          86B5     CP C           B9
          86B6     JR NZ,SAVE5    20E9
          86B8SAVE6CALL WAIT      CDDB85
          86BB     CALL BRKCK     CDD38A
          86BE     JP Z,BRKER     CA7283
          86C1     CALL READB     CDA789
          86C4     CP $3E         FE3E
          86C6     JR NZ,SAVE6    20F0
          86C8     CALL READB     CDA789
          86CB     LD A,$0A       3E0A
          86cd     CALL SENDB     CD408A
          86D0     LD A,$20       3E20
          86D2     CALL SENDB     CD408A
          86D5     LD HL,FILNA    211580
          86D8SAVE7LD A,(HL)      7E
          86D9     PUSH AF        F5
          86DA     CALL SENDB     CD408A
          86DD     INC HL         23
          86DE     POP AF         F1
          86DF     CP CR          FE0D
          86E1     JR NZ,SAVE7    20F5
          86E3SAVE8CALL WAIT      CDDB85
          86E6     CALL BRKCK     CDD38A
          86E9     JP Z,BRKER     CA7283
          86EC     CALL READB     CDA789
          86EF     CP $3E         FE3E
          86f1     JR NZ,SAVE8    20F0
          86F3     CALL READB     CDA789
          86F6     JP BASIC       C36E81
          86F9;;
          86F9LOAD1LD A,$40       3E40
          86FB     LD (STAH),A    32F280
          86FE     LD A,$09       3E09
          8700     LD (STAL),A    32F180
          8703     LD DE,FILNA    111580
          8706     INC HL         23
          8707LOAD3LD A,(HL)      7E
          8708     CP $0B         FE0B
          870A     JR Z,LOAD2     2813
          870C     CP $1A         FE1A
          870E     JR Z,LOADM     280C
          8710     CP $00         FE00
          8712     JR Z,LOADM     2808
          8714     CALL ZXASC     CD3789
          8717     LD (DE),A      12
          8718     INC HL         23
          8719     INC DE         13
          871A     JR LOAD3       18EB
          871CLOADMCALL ADR1      CD3484
          871FLOAD2LD A,CR        3E0D
          8721     LD (DE),A      12
          8722     CALL WAIT      CDDB85
          8725     CALL READB     CDA789
          8728     CALL READB     CDA789
          872B     CALL READB     CDA789
          872E     LD A,$01       3E01
          8730     CALL SENDB     CD408A
          8733     LD A,$20       3E20
          8735     CALL SENDB     CD408A
          8738     LD HL,FILNA    211580
          873BLOAD4LD A,(HL)      7E
          873C     PUSH AF        F5
          873D     CALL SENDB     CD408A
          8740     INC HL         23
          8741     POP AF         F1
          8742     CP CR          FE0D
          8744     JR NZ,LOAD4    20F5
          8746LOADNCALL READB     CDA789
          8749     CALL BRKCK     CDD38A
          874C     JP Z,BRKER     CA7283
          874F     LD A,(RSTAT)   3AEE80
          8752     CP $01         FE01
          8754     JR Z,LOADN     28F0
          8756LODN1CALL READB     CDA789
          8759     CALL BRKCK     CDD38A
          875C     JP Z,BRKER     CA7283
          875F     LD A,(RSTAT)   3AEE80
          8762     CP $01         FE01
          8764     JR Z,LODN1     28F0
          8766LOAD5CALL READB     CDA789
          8769     CALL BRKCK     CDD38A
          876C     JP Z,BRKER     CA7283
          876F     LD A,(RSTAT)   3AEE80
          8772     CP $01         FE01
          8774     JR Z,LOAD5     28F0
          8776     LD A,(RBYTE)   3AED80
          8779     CP CR          FE0D
          877B     JR NZ,NLOAD    200A
          877D     LD DE,TXF      111783
          8780     LD (ERRNR),DE  ED530281
          8784     JP ERROR       C37983
          8787NLOADCP $20         FE20
          8789     JR NZ,LOAD5    20DB
          878B     CALL READB     CDA789
          878E     LD (SIZEL),A   32F380
          8791     CALL READB     CDA789
          8794     LD (SIZEH),A   32F480
          8797     CALL READB     CDA789
          879A     CALL READB     CDA789
          879D     CALL READB     CDA789
          87A0     CALL READB     CDA789
          87A3LOADXCALL BRKCK     CDD38A
          87A6     JP Z,BRKER     CA7283
          87A9     CALL READB     CDA789
          87AC     JR NZ,LOADX    20F5
          87AE     LD A,$04       3E04
          87b0     CALL SENDB     CD408A
          87B3     LD A,$20       3E20
          87B5     CALL SENDB     CD408A
          87B8     LD HL,FILNA    211580
          87BBLOAD6LD A,(HL)      7E
          87BC     PUSH AF        F5
          87BD     CALL SENDB     CD408A
          87C0     INC HL         23
          87C1     POP AF         F1
          87C2     CP CR          FE0D
          87C4     JR NZ,LOAD6    20F5
          87C6LOADYCALL WAIT      CDDB85
          87C9     CALL BRKCK     CDD38A
          87CC     JP Z,BRKER     CA7283
          87CF     CALL READB     CDA789
          87D2     LD A,(RSTAT)   3AEE80
          87d5     CP $01         FE01
          87D7     JR Z,LOADY     28ED
          87D9     LD A,(RBYTE)   3AED80
          87DC     LD HL,(STAL)   2AF180
          87DF     LD BC,(SIZEL)  ED4BF380
          87E3     LD (COORD),BC  ED433640
          87E7LOAD7LD (HL),A      77
          87E8     INC HL         23
          87E9     DEC BC         0B
          87EA     XOR A          AF
          87EB     CP B           B8
          87EC     JR NZ,LOAD8    200A
          87EE     CP C           B9
          87EF     JR NZ,LOAD8    2007
          87F1;REWRITE ERROR CODE
          87F1     XOR A          AF
          87f2     LD (ERRNO),A   323240
          87F5     JP BASIC       C36E81
          87F8LOAD8CALL READB     CDA789
          87FB     CALL BRKCK     CDD38A
          87FE     JP Z,BRKER     CA7283
          8801     LD A,(RSTAT)   3AEE80
          8804     CP $01         FE01
          8806     JR Z,LOAD8     28F0
          8808     LD A,(RBYTE)   3AED80
          880B     JR LOAD7       18DA
          880D;;
          880DERAS1LD C,$07       0E07
          880FREERALD DE,FILNA    111580
          8812     INC HL         23
          8813ERAS2LD A,(HL)      7E
          8814     CP $0B         FE0B
          8816     JR Z,ERAS3     2808
          8818     CALL ZXASC     CD3789
          881B     LD (DE),A      12
          881C     INC HL         23
          881D     INC DE         13
          881E     JR ERAS2       18F3
          8820ERAS3LD A,CR        3E0D
          8822     LD (DE),A      12
          8823     PUSH BC        C5
          8824     CALL WAIT      CDDB85
          8827     POP BC         C1
          8828     LD A,C         79
          8829     CALL SENDB     CD408A
          882C     LD A,$20       3E20
          882E     CALL SENDB     CD408A
          8831     LD HL,FILNA    211580
          8834ERAS4LD A,(HL)      7E
          8835     PUSH AF        F5
          8836     CALL SENDB     CD408A
          8839     INC HL         23
          883A     POP AF         F1
          883B     CP CR          FE0D
          883D     JR NZ,ERAS4    20F5
          883FERAS5CALL WAIT      CDDB85
          8842     CALL BRKCK     CDD38A
          8845     JP Z,BRKER     CA7283
          8848     CALL READB     CDA789
          884B     LD A,(RSTAT)   3AEE80
          884E     CP $01         FE01
          8850     JR Z,ERAS5     28ED
          8852     LD A,(RBYTE)   3AED80
          8855     CP $3E         FE3E
          8857     JR Z,EROK      2823
          8859     CP $43         FE43
          885B     JR NZ,NER1     2005
          885D     LD DE,TXC      11DC82
          8860     JR ERERR       1810
          8862NER1 CP $44         FE44
          8864     JR NZ,NER2     2005
          8866     LD DE,TXD      11F582
          8869     JR ERERR       1807
          886BNER2 CP $46         FE46
          886D     JR NZ,ERAS5    20D0
          886F     LD DE,TXE      110283
          8872ERERRLD (ERRNR),DE  ED530281
          8876     CALL CLBUF     CD9283
          8879     JP ERROR       C37983
          887C;;
          887cEROK CALL READB     CDA789
          887F     JP BASIC       C36E81
          8882;;
          8882TEX  BIT 7,(IY+$08) FDCB087E
          8886     RET Z          C8
          8887;;
          8887TEX1 LD A,($403A)   3A3A40
          888A     CP $03         FE03
          888C     RET C          D8
          888D;;
          888D     LD A,E         7B
          888E     PUSH BC        C5
          888F     PUSH HL        E5
          8890     RES 7,A        CBBF
          8892     LD C,A         4F
          8893     AND $60        E660
          8895ASCZXJR Z,CTCHR     2811
          8897     BIT 6,C        CB71
          8899     JR Z,CDCON     2802
          889B     RES 5,C        CBA9
          889DCDCONXOR A          AF
          889E     LD B,A         47

          889F     LD HL,ASCZX    219588
          88A2     ADD HL,BC      09
          88A3     LD A,(HL)      7E
          88A4     RST 10         D7
          88A5     POP HL         E1
          88A6     POP BC         C1
          88A7     RET            C9
          88A8CTCHRLD A,C         79
          88a9     CP CR          FE0D
          88AB     JR NZ,NOCR     2003
          88AD     LD A,$76       3E76
          88AF     RST 10         D7
          88B0NOCR POP HL         E1
          88B1     POP BC         C1
          88B2     RET            C9
          88B3     NOP            00
          88B4     NOP            00
          88B5     001B0B0C0D18150B
          88BD     101117151A161B18
          88C5     1C1D1E1F20212223
          88CD     24250E191314120F
          88D5     A6262728292A2B2C
          88DD     2D2E2F3031323334
          88E5     35363738393A3B3C
          88ed     3D3E3F1018110E16
          88F5     NOP            00
          88F6     NOP            00
          88F7;;
          88F7ASCII2020202020202020202020
          8902     2223247E3F28293E3C3D
          890C     2B2D2A5C3B2C2E
          8913     30313233343536373839
          891D     4142434445464748494A4B
          8928     4C4D4E4F50515253545556
          8933     5758595A
          8937;;
          8937ZXASCPUSH BC        C5
          8938     PUSH HL        E5
          8939     LD HL,ASCII    21F788
          893C     LD B,$00       0600
          893e     AND $3F        E63F
          8940     LD C,A         4F
          8941     ADD HL,BC      09
          8942     LD A,(HL)      7E
          8943     POP HL         E1
          8944     POP BC         C1
          8945     RET            C9
          8946;;
          8946INIT CALL FAST      CDE702
          8949     LD A,$CF       3ECF
          894B     OUT CTRL,A     D357
          894D     LD A,$F8       3EF8
          894F     OUT CTRL,A     D357
          8951     XOR A          AF
          8952     OUT DATA,A     D347
          8954     LD A,CR        3E0D
          8956     CALL SENDB     CD408A
          8959     LD A,$53       3E53
          895B     CALL SENDB     CD408A
          895E     LD A,$43       3E43
          8960     CALL SENDB     CD408A
          8963     LD A,$53       3E53
          8965     CALL SENDB     CD408A
          8968     LD A,CR        3E0D
          896A     CALL SENDB     CD408A
          896D     CALL WAIT      CDDB85
          8970INITWCALL WAIT      CDDB85
          8973     CALL BRKCK     CDD38A
          8976     JR Z,INIBR     282B
          8978     CALL READB     CDA789
          897B     CP $3E         FE3E
          897D     JR NZ,INITW    20F1
          897f     CALL CLBUF     CD9283
          8982     LD A,CR        3E0D
          8984     CALL SENDB     CD408A
          8987     CALL WAIT      CDDB85
          898A     CALL READB     CDA789
          898D     CP $3E         FE3E
          898F     JR NZ,INIER    2007
          8991     CALL CLBUF     CD9283
          8994     CALL CLBUF     CD9283
          8997     RET            C9
          8998;;
          8998INIERLD DE,TXG      112383
          899B     LD (ERRNR),DE  ED530281
          899F;    DROP RETURN ADDRESS
          899F     POP AF         F1
          89A0     JP ERROR       C37983
          89a3;;
          89A3;;BREAK: DROP RETUR ADDRESS
          89A3INIBRPOP AF         F1
          89A4     JP BRKER       C37283
          89A7;;
          89A7;;
          89A7READBEXX            D9
          89A8     LD HL,$08FF    21FF08
          89AB     LD C,$04       0E04
          89AD     LD A,$01       3E01
          89AF     OUT DATA,A     D347
          89B1     XOR A          AF
          89B2     OUT DATA,A     D347
          89B4     INC A          3C
          89B5     OUT DATA,A     D347
          89B7     LD A,$06       3E06
          89b9     OUT DATA,A     D347
          89BB     INC A          3C
          89BC     OUT DATA,A     D347
          89BE     DEC A          3D
          89BF     OUT DATA,A     D347
          89C1     INC A          3C
          89C2     OUT DATA,A     D347
          89C4     LD A,C         79
          89C5     OUT DATA,A     D347
          89C7     INC A          3C
          89C8     OUT DATA,A     D347
          89CA;;
          89CA;    CALL RE1       CD1189
          89CA     IN A,DATA      DB47
          89CC;BIT 3 -> CY
          89CC     AND H          A4
          89cd;A IST NUN 0 ODER 8
          89CD;ADDIEREN VON $FF:
          89CD;CY BEI 8, KEIN CY BEI 0
          89CD     ADD A,L        85
          89CE;CY -> B0
          89CE     RL B           CB10
          89D0     LD A,C         79
          89D1     OUT DATA,A     D347
          89D3     INC A          3C
          89D4     OUT DATA,A     D347
          89D6;;
          89D6;    CALL RE1       CD1189
          89D6     IN A,DATA      DB47
          89D8     AND H          A4
          89D9     ADD A,L        85
          89DA     RL B           CB10
          89dc     LD A,C         79
          89DD     OUT DATA,A     D347
          89DF     INC A          3C
          89E0     OUT DATA,A     D347
          89E2;;
          89E2;    CALL RE1       CD1189
          89E2     IN A,DATA      DB47
          89E4     AND H          A4
          89E5     ADD A,L        85
          89E6     RL B           CB10
          89E8     LD A,C         79
          89E9     OUT DATA,A     D347
          89EB     INC A          3C
          89EC     OUT DATA,A     D347
          89EE;;
          89EE;    CALL RE1       CD1189
          89ee     IN A,DATA      DB47
          89F0     AND H          A4
          89F1     ADD A,L        85
          89F2     RL B           CB10
          89F4     LD A,C         79
          89F5     OUT DATA,A     D347
          89F7     INC A          3C
          89F8     OUT DATA,A     D347
          89FA;;
          89FA;    CALL RE1       CD1189
          89FA     IN A,DATA      DB47
          89FC     AND H          A4
          89FD     ADD A,L        85
          89FE     RL B           CB10
          8A00     LD A,C         79
          8A01     OUT DATA,A     D347
          8a03     INC A          3C
          8A04     OUT DATA,A     D347
          8A06;;
          8A06;    CALL RE1       CD1189
          8A06     IN A,DATA      DB47
          8A08     AND H          A4
          8A09     ADD A,L        85
          8A0A     RL B           CB10
          8A0C     LD A,C         79
          8A0D     OUT DATA,A     D347
          8A0F     INC A          3C
          8A10     OUT DATA,A     D347
          8A12;;
          8A12;    CALL RE1       CD1189
          8A12     IN A,DATA      DB47
          8A14     AND H          A4
          8a15     ADD A,L        85
          8A16     RL B           CB10
          8A18     LD A,C         79
          8A19     OUT DATA,A     D347
          8A1B     INC A          3C
          8A1C     OUT DATA,A     D347
          8A1E;;
          8A1E;    CALL RE1       CD1189
          8A1E     IN A,DATA      DB47
          8A20     AND H          A4
          8A21     ADD A,L        85
          8A22     RL B           CB10
          8A24     LD A,C         79
          8A25     OUT DATA,A     D347
          8A27     INC A          3C
          8A28     OUT DATA,A     D347
          8a2a;;
          8A2A     IN A,DATA      DB47
          8A2C     BIT 3,A        CB5F
          8A2E     LD A,$00       3E00
          8A30     JR Z,REB2      2801
          8A32     INC A          3C
          8A33REB2 LD (RSTAT),A   32EE80
          8A36     LD A,$F0       3EF0
          8A38     OUT DATA,A     D347
          8A3A     LD A,B         78
          8A3B     LD (RBYTE),A   32ED80
          8A3E     EXX            D9
          8A3F     RET            C9
          8A40;;
          8A40;;
          8A40SENDBEXX            D9
          8a41     LD B,A         47
          8A42     LD C,$04       0E04
          8A44     LD D,$02       1602
          8A46     LD A,$01       3E01
          8A48     OUT DATA,A     D347
          8A4A     DEC A          3D
          8A4B     OUT DATA,A     D347
          8A4D     INC A          3C
          8A4E     OUT DATA,A     D347
          8A50     LD A,$06       3E06
          8A52     OUT DATA,A     D347
          8A54     INC A          3C
          8A55     OUT DATA,A     D347
          8A57     LD A,C         79
          8A58     OUT DATA,A     D347
          8A5A     INC A          3C
          8a5b     OUT DATA,A     D347
          8A5D     DEC A          3D
          8A5E     OUT DATA,A     D347
          8A60     INC A          3C
          8A61     OUT DATA,A     D347
          8A63;;
          8A63     LD A,C         79
          8A64     BIT 7,B        CB78
          8A66     JR Z,SEB7      2801
          8A68     ADD A,D        82
          8A69SEB7 OUT DATA,A     D347
          8A6B     INC A          3C
          8A6C     OUT DATA,A     D347
          8A6E;;
          8A6E     LD A,C         79
          8A6F     BIT 6,B        CB70
          8a71     JR Z,SEB6      2801
          8A73     ADD A,D        82
          8A74SEB6 OUT DATA,A     D347
          8A76     INC A          3C
          8A77     OUT DATA,A     D347
          8A79;;
          8A79     LD A,C         79
          8A7A     BIT 5,B        CB68
          8A7C     JR Z,SEB5      2801
          8A7E     ADD A,D        82
          8A7FSEB5 OUT DATA,A     D347
          8A81     INC A          3C
          8A82     OUT DATA,A     D347
          8A84;;
          8A84     LD A,C         79
          8A85     BIT 4,B        CB60
          8a87     JR Z,SEB4      2801
          8A89     ADD A,D        82
          8A8ASEB4 OUT DATA,A     D347
          8A8C     INC A          3C
          8A8D     OUT DATA,A     D347
          8A8F;;
          8A8F     LD A,C         79
          8A90     BIT 3,B        CB58
          8A92     JR Z,SEB3      2801
          8A94     ADD A,D        82
          8A95SEB3 OUT DATA,A     D347
          8A97     INC A          3C
          8A98     OUT DATA,A     D347
          8A9A;;
          8A9A     LD A,C         79
          8A9B     BIT 2,B        CB50
          8a9d     JR Z,SEB2      2801
          8A9F     ADD A,D        82
          8AA0SEB2 OUT DATA,A     D347
          8AA2     INC A          3C
          8AA3     OUT DATA,A     D347
          8AA5;;
          8AA5     LD A,C         79
          8AA6     BIT 1,B        CB48
          8AA8     JR Z,SEB1      2801
          8AAA     ADD A,D        82
          8AABSEB1 OUT DATA,A     D347
          8AAD     INC A          3C
          8AAE     OUT DATA,A     D347
          8AB0;;
          8AB0     LD A,C         79
          8AB1     BIT 0,B        CB40
          8ab3     JR Z,SEB0      2801
          8AB5     ADD A,D        82
          8AB6SEB0 OUT DATA,A     D347
          8AB8     INC A          3C
          8AB9     OUT DATA,A     D347
          8ABB;;
          8ABB     LD A,C         79
          8ABC     OUT DATA,A     D347
          8ABE     IN A,DATA      DB47
          8AC0     AND $08        E608
          8AC2     LD B,A         47
          8AC3     BIT 3,A        CB5F
          8AC5     LD A,$05       3E05
          8AC7     OUT DATA,A     D347
          8AC9     LD A,C         79
          8ACA     OUT DATA,A     D347
          8acc     LD A,$F0       3EF0
          8ACE     OUT DATA,A     D347
          8AD0     LD A,B         78
          8AD1     EXX            D9
          8AD2     RET            C9
          8AD3;;
          8AD3BRKCKLD A,$FD       3EFD
          8AD5     IN A,$FE       DBFE
          8AD5     IN A,$FE       DBFE
          8AD7     BIT 0,A        CB47
          8AD9     RET Z          C8
          8ADA     LD A,$EF       3EEF
          8ADC     IN A,$FE       DBFE
          8ADE     BIT 4,A        CB67
          8AE0     RET            C9
          8AE1;---------------------------

The LOAD routine starts at label LOAD1. During/after load the following systemvariables are modified:
COORDS (16438/39) are used to return the length of the loaded memory block to a calling BASIC program (or the "graphic" user interface UFM sitting "above" the driver)
SEED (16434) is used to return an error code (ERRNO in C ;-) ) to the calling program.
Modifying those systemvariables does normally not affect a loaded BASIC program ....

R2BAS is the label to jump back to a calling BASIC program.
R2MC is the label to jump back to a calling M/C program (e. g. UFM).
The routine SHOW is the SLOW routine in ROM (at $207)

Have fun ;-)

Siggi
My ZX81 web-server: online since 2007, running since dec. 2020 using ZeddyNet hardware
http://zx81-siggi.zx-team.org/index.html
User avatar
zsolt
Posts: 214
Joined: Wed Apr 20, 2011 11:43 am
Location: Fót, Hungary

Re: "The greatest program ever written"

Post by zsolt »

Sorry for the delay, but i was on a long weekend (wed-sun: bad weather, hot water, cold beers ;) ).
I had a little time to solve your loading-problem:

(Edit: here is a newer version)

Enjoy,
Zsolt
(btw. i don't see why these informations are necessary in that case, when you load a complete program. Which program wants to know the own size?)
Last edited by zsolt on Thu Nov 13, 2014 12:11 pm, edited 1 time in total.
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]
User avatar
siggi
Posts: 930
Joined: Thu May 08, 2008 9:30 am
Location: Wetterau, Germany
Contact:

Re: "The greatest program ever written"

Post by siggi »

zsolt wrote:Sorry for the delay, but i was on a long weekend (wed-sun: bad weather, hot water, cold beers ;) ).
A lot of good reasons ;-)
Enjoy,
Zsolt
Thanks a lot, now it works as expected :mrgreen:
(btw. i don't see why these informations are necessary in that case, when you load a complete program. Which program wants to know the own size?)
I once wrote a BASIC program MOVEALL, which moves all files (BASIC-programs and data block, eg. stc-files) from the current directory on USB-stick to a MEFDOS drive. Thus it loads the file to be moved from USB stick into the high memory region and saves the loaded memory block to MEFISDOS. Thus the MOVEALL need to know the block size of the file to be moved and stored. And it needs the ERROR code to check whether everything worked as expected (e. g. the file on USB stick has been deleted without error
My ZX81 web-server: online since 2007, running since dec. 2020 using ZeddyNet hardware
http://zx81-siggi.zx-team.org/index.html
User avatar
zsolt
Posts: 214
Joined: Wed Apr 20, 2011 11:43 am
Location: Fót, Hungary

1KCHESS plus - on ZX80 (too)

Post by zsolt »

Dear ALL,
1KCHESS_plus.zip
here is a revised edition
(60.92 KiB) Downloaded 155 times
  • 1KCHESSplusQ.p/1KCHESSplusK.p : the revised ZX81 versions;

    1KCHESSplusFQ.p/1KCHESSplusFK.p: same with FAST mode display (for upgraded ZX80)

    1KCHESSplusQ.o/1KCHESSplusK.o: the ZX80 versions

    1KCHESSplus80.asm/1KCHESSplus81.asm: and the source codes
(where the 'Q' means the Queen's pawn game and the 'K' means the King's pawn game)

Have fun,
Zsolt
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]
User avatar
1024MAK
Posts: 3465
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: "The greatest program ever written"

Post by 1024MAK »

Chess is being talked about here as well...

Mark
Moggy
Posts: 2258
Joined: Wed Jun 18, 2008 2:00 pm

Re: "The greatest program ever written"

Post by Moggy »

Well had a mess around with this and the first thing I noticed is that it plays a different opening move from the standard 1k chess insomuch as for example the common opening queens pawn
move of Queens pawn to Queens pawn three as implemented on the original game is transcribed to Queens pawn to queens pawn four on the new version which I wouldn't have thought was the usual queens pawn opening(Miese's Opening).
there is the usual cycling of of the rook between a1-a2 as in the original 1k and it is only after some aggressive attacking that white finally wakes up unlike the original 1k which plays a surprisingly spirited game.

I can only assume that the game logic has been altered in some way when adding the extras and plays a slightly weaker game as a result.

The games both play on real ZX80/81 with Zxpand.

These are observations only and not criticisms in any way. :)


EDIT It would seem the new tiny chess is a bit of a cheat...

http://www.dailytech.com/Worlds+Smalles ... e37115.htm
User avatar
zsolt
Posts: 214
Joined: Wed Apr 20, 2011 11:43 am
Location: Fót, Hungary

Re: "The greatest program ever written"

Post by zsolt »

Hi Moggy,
1KCHESSplus_oo.zip
the "plus" with the original opening
(22.49 KiB) Downloaded 133 times
Moggy wrote:there is the usual cycling of of the rook between a1-a2 as in the original 1k and it is only after some aggressive attacking that white finally wakes up unlike the original 1k which plays a surprisingly spirited game
:?: :?: :?:
Here is the original. Pls try the "ChessKing.p" with these (type in):
  • 7e 5e
    8d 4h
    8g 6f
    6f 4e
    4h 2f
;)
Zsolt
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]
Moggy
Posts: 2258
Joined: Wed Jun 18, 2008 2:00 pm

Re: "The greatest program ever written"

Post by Moggy »

Many thanks for this beautiful little work of art . :D

Thanks also for the ZX80 version it is really appreciated, now if only we had a 16k version for the ZX80. :lol:
User avatar
GCHarder
Posts: 270
Joined: Sat Dec 14, 2013 7:46 pm

Re: "The greatest program ever written"

Post by GCHarder »

Here's a review of 1K chess from 1982, I though the last couple paragraphs were prophetic.

Regards;

Greg
1K Chess Review (PCW820715).jpg
1K Chess Review (PCW820715).jpg (72.89 KiB) Viewed 4962 times
Post Reply