Dis-assembly of NASCOM ROM BASIC Ver 4.7 PAGE 27
E733 E5 SETLIN: PUSH HL ; Set up LINES counter
E734 2A4810 LD HL,(LINESN) ; Get LINES number
E737 224610 LD (LINESC),HL ; Save in LINES counter
E73A E1 POP HL
E73B C9 RET
E73C 21DEFE LDNMI1: LD HL,BREAK ; Break routine
E73F 227E0C LD (NMI),HL ; NMI forces break
E742 C3F8E3 JP PRNTOK ; Go to command mode
E745 FE DEFB (CP n) ; <<< NO REFERENCE TO HERE >>>
E746 E5 COUNT: PUSH HL ; Save code string address
E747 D5 PUSH DE
E748 2A4610 LD HL,(LINESC) ; Get LINES counter
E74B 11FFFF LD DE,-1
E74E ED5A ADC HL,DE ; Decrement
E750 224610 LD (LINESC),HL ; Put it back
E753 D1 POP DE
E754 E1 POP HL ; Restore code string address
E755 F0 RET P ; Return if more lines to go
E756 E5 PUSH HL ; Save code string address
E757 2A4810 LD HL,(LINESN) ; Get LINES number
E75A 224610 LD (LINESC),HL ; Reset LINES counter
E75D 3A4C10 LD A,(NMIFLG) ; Break by NMI?
E760 B7 OR A
E761 C2E5FE JP NZ,ARETN ; Yes - "RETN"
E764 CD05FD CALL GETINP ; Get input character
E767 FE03 CP CTRLC ; Is it control "C"?
E769 CA70E7 JP Z,RSLNBK ; Yes - Reset LINES an break
E76C E1 POP HL ; Restore code string address
E76D C346E7 JP COUNT ; Keep on counting
E770 2A4810 RSLNBK: LD HL,(LINESN) ; Get LINES number
E773 224610 LD (LINESC),HL ; Reset LINES counter
E776 C3B1E0 JP BRKRET ; Go and output "Break"
Dis-assembly of NASCOM ROM BASIC Ver 4.7 PAGE 28
E779 3E64 FOR: LD A,64H ; Flag "FOR" assignment
E77B 32CB10 LD (FORFLG),A ; Save "FOR" flag
E77E CD87EA CALL LET ; Set up initial index
E781 C1 POP BC ; Drop RETurn address
E782 E5 PUSH HL ; Save code string address
E783 CD70EA CALL DATA ; Get next statement address
E786 22C710 LD (LOOPST),HL ; Save it for start of lo6p
E789 210200 LD HL,2 ; Offset for "FOR" block
E78C 39 ADD HL,SP ; Point to it
E78D CD5AE3 FORSLP: CALL LOKFOR ; Look for existing "FOR" block
E790 D1 POP DE ; Get code string address
E791 C2A9E7 JP NZ,FORFND ; No nesting found
E794 09 ADD HL,BC ; Move into "FOR" block
E795 D5 PUSH DE ; Save code string address
E796 2B DEC HL
E797 56 LD D,(HL) ; Get MSB of loop statement
E798 2B DEC HL
E799 5E LD E,(HL) ; Get LSB of loop statement
E79A 23 INC HL
E79B 23 INC HL
E79C E5 PUSH HL ; Save block address
E79D 2AC710 LD HL,(LOOPST) ; Get address of loop statement
E7A0 CD8AE6 CALL CPDEHL ; Compare the FOR loops
E7A3 E1 POP HL ; Restore block address
E7A4 C28DE7 JP NZ,FORSLP ; Different FORs - Find another
E7A7 D1 POP DE ; Restore code string address
E7A8 F9 LD SP,HL ; Remove all nested loops