The following warnings occurred:
Warning [2] Undefined array key 63677 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63678 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63680 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63682 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63683 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63686 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63690 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63716 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63720 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63722 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63724 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63729 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63767 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63768 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63769 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63770 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63773 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63774 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63777 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63778 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63779 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63781 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63783 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63799 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63800 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63801 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63806 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63813 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63814 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63817 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63827 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63829 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63830 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63833 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63938 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63939 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $thread - Line: 295 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 295 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Trying to access array offset on value of type null - Line: 295 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 295 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $fid - Line: 295 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 295 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63683 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63801 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63729 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63806 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63814 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63829 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63830 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63722 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63779 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 63939 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $theme - Line: 3 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 3 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Trying to access array offset on value of type null - Line: 3 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 3 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $theme - Line: 3 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 3 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Trying to access array offset on value of type null - Line: 3 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 3 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $lang - Line: 5 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 5 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Attempt to read property "messages_in_thread" on null - Line: 5 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 5 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks





HP 15C



#2

On this post, ? says :

Quote:
While the HP15c is a great tool for number crunching, I don't think that type of solving is one of its strengths. If you must have RPN, and you are permitted graphical calcs, maybe a 48gii / 49g+ would be the way to go.

I am terribly sorry, but I do not abide to this statement. The 15C is much more than a number cruncher, and the power of a 48 or a 49 is offset by their size and their less user friendliness.

Some time ago, 2 or 3 years if I can remember, I asked the folks of this forum to provide me with a list of their top 5 calculators. Results are to be found here. Many people did answer, but I'd like to do this poll again.

So please email me you 5 preferred HP calculators (no 1: 41 : 2: 41 : 3 : 41, please), and I'll draw a new HP community top preferred calculator list !


#3

That post is my opinion only. I don't wish to start a flame war. However I will try and justify myself (and probably get roasted alive by the HP15c fans :-)

"and the power of a 48 or a 49 is offset by their size and their less user friendliness."

Physical size? Sure. The 15c is easier to carry around in a shirt pocket. However the person asking the question said they wanted it for a financial exam, and were considering buying a newer calculator. For college purposes size really isn't a big issue.

When it comes to being user friendly, I think the 48/49 RPL series are _more_ user friendly then the 15c (My opinion only). Why? First, I like RPL over HP's old RPN implementation. Never having to worry about exceeding the 4 level stack is nice. The big, big advantage for me is that I can see the bottom 5 or so stack levels. With the 49, expressions are shown in 'pretty print', not just the raw numeric result of 'classical' RPN.

The equation writer is another big plus.

As I said, the person wanted the calculator for an exam. Exams are by nature highly competetive. His fellow test-takers have "calculators that do the thinking for them" - this is an advantage, and in an exam power helps. With the 48/49, you can easily download programs from the internet without having to type them in. Memory is effectivly unlimited. Compare this to having to type in HP15c programs in by hand. Sure you can do it, but it takes longer.

My opions only,

.


#4

I guess this forum is absolutely not the place to have flame war, and the huge majority of the folks here do respect everyone's opinions. You're most welcome to tell us what you think.

In addition, a lot of people here grew with classics, woodstocks, spices, voyagers and 41's, and yes, I have to admit that the HP time stopped in 1986 as far as I'm concerned.

I'd be stupid to try to convice anyone that the 15C is as powerful as a 48 or 49. My point was that the 15C is far more than a number cruncher. It can handle matrixes, complex numbers, solve equations, plus a honorable amount of memory. There have been a lot of programs written for it, that were definitely solving complex matters. This was at the time where one could spend 2 hours rewriting a routine to save one register !

48's and 49's are more in between computers and calculators. There's a lot of dicussion about them. The main advantage, under my opinion, on a 15C (or a 41, a 42S, ...) is that they behave like calculatorsr rather than powerful computers than can eventually behave like a calculator. For instance, try a rather long sequence of calculations on a 49G and on a 15C, you'll see that the result we come faster on the 15C. You'll also notice that your 49G will buffer your keyboard, which I personally consider as most disturbing.

Coming back to the initial question on the previous thread, I again wish to draw the attention to the fact that downloading a program on the internet is absolutely no guarantee that you will better succeed in doing your test. A machine cannot do for you what you don't know how to do by yourself. On the other side, if you know what you expect, then your machine will save you some much precious time.


#5

"My point was that the 15C is far more than a number cruncher. It can handle matrixes, complex numbers, solve equations, plus a honorable amount of memory."

What I meant by 'number cruncher' is that is does numerical calculations, and is designed for doing them easily. So it is more like a true calculator. Contrast this to a device with symbolics, where you basically have a handheld version of Mathematica. This is more like a PC.

"For instance, try a rather long sequence of calculations on a 49G and on a 15C, you'll see that the result we come faster on the 15C."

I don't own a 49g, only a 49g plus. Could you give me an example of where a 15c would be faster please? I'd be interested in a timing comparision.

"Coming back to the initial question on the previous thread, I again wish to draw the attention to the fact that downloading a program on the internet is absolutely no guarantee that you will better succeed in doing your test.

Agreed.

"A machine cannot do for you what you don't know how to do by yourself."

That depends on what the question is. If it is, say, an exam "invert this 3 by 3 matrix", then the 49g plus will actually not only do the problem, but give you all the working required ("Multiply this row by 4, add this row to that row, etc"). Thats basically cheating, but the calculator will do it.

If the question involves actual thinking, like a story problem, then the user is stuck if they don't know the theory.

"On the other side, if you know what you expect, then your machine will save you some much precious time."

I think thats the big advantage - time is very precious in a test.

.


#6

Hi dot, all;

I think Thibaut reffers to the fact taht every possible function (not all combinations) are availble through direct keystroke sequences in the HP15C (any Voyager, all Classics, and so). Most of the resources in the HP48 series are accessed through menu and softkeys. In some cases, you'll need to press many buttons to perform an operation that will need one, two or three key pressing in the HP15C.

I myself appreciate the multiline display and RPL more than RPN, but sometimes I wish the HP48/49 had a RPN mode key...

My 2¢.

Luiz (Brazil)

Edited: 30 Sept 2004, 9:58 a.m.

#7

Hi all,

I do not want to start a flame war either. I actually love almost every single calculator HP did, whether 'pure' RPN or RPL. I have used the 41CX, the 15C, the 12C, the 71B, the 28S, the 32SII, the 42S, the 48SX (my first HP...), the 17BII and the 19BII. I love -all- these models, almost equally.

I just think that RPL is treated a bit unfairly in this forum. The commun opinion is that RPN is simple, pure, and requires less keystrokes, while RPL would a bulky, intimidating, overkill and clumsly full-blown object-oriented language, a la C++. Valentin, for instance (Hi Valentin :-) ), advocates the small-size 15C for daily computations, and the Sharp BASIC computers (or the 71B) for more complex programming, while hinting that RPL is not appealing...

Well, I slightly disagree, and I would like to demonstrate that with a few facts:

1) RPN and RPL are very much alike, to start with. The way to enter operations is the same, and do not require any extra keystrokes in RPL; in fact, it could be argued that <PGM> 'LBL PROG, ..., RTN' <PGM> on a 41 takes even more keystrokes than <<...>> 'PROG' STO on the 28/48 ;)

2) Loops are simpler, in my mind, to do in RPL than in RPN. If I take an definite loop from 1 to a non-constant number, stored in the register 00 (on the 41), or in the 'A' global variable (on the 28/48). Which of the following is more concise and/or intuitive for newcommers to programming:

- 41: 'RCL 00,1000,/,1.00001 +, STO 01, LBL 00, ..., ISZ 01, GTO 00'

or:

- 28/48: '1 A FOR I ... NEXT' ?

3) Doing a IF-THEN-ELSE alternative with GTOs is quite tricky and inelegant in RPN. Something like:

'X>0?,GTO 01, GTO 02, LBL 03,...,LBL 01,...,GTO 03, LBL 02,..., GTO 03'.

To be compared with:

'IF X 0 > THEN... ELSE...END'.

4) True, when coming to indirect addressing, RPN is more concise: it is simpler to do a 'STO IND 00' than go for PUTI commands while iterating on an array; still quite feasible, though... and it is still quite possible to emulate registers on the 28/48, and corresponding STO/RCL functions, with an array (this is explicitely described in the 28C/S manual)

5) The ability to use local variables is a HUGE plus of RPL - especially with recursive altgorithms.

6) The "infinite" stack have some drawbacks, agreed:I miss the lack of replication of the 'T' register; I also hate it to have to 'DUP' every argument to be re-used, since RPL fanatically removes arguments from the stack systematically. But it has also some -hudge- advantages !! Namely, never have to worry about loosing the older results and store then into registers back and forth... And being able to see 4 objects at a glance, and scroll the view for the rest, is extremely handy.

7) Being able to use algebraic expressions, like in BASIC, is a great plus for complex equations. The only RPN-programmable calculator with this feature is the 32SII; yet, the equation support is far from perfect: each letter require 2 keystrokes (RCL A..Z), despite the crowded keyboard; there are no editing capabilities; variables must be one character long only, which does not even come with the advantage of implicit multiplication ! Next to the 28/48, this only satisfactory calculators in that sense are the 18C/19B/19BII familty (even though inserting characters is clumsy...)

8) The extra features of RPL are there, but you are not forced to use them... All in all, these features makes RPL much more powerful and elegant than BASIC to me, and I think it is not a coincidence if BASIC computers more or less disappeared when RPL came. Manipulation of Matrixes, Lists, even dynamic creation of programs, is extremely concise and elegant in RPL, while it requires calls to external functions in BASIC.

My conclusion is: RPN is great. RPL -does- have drawbacks compared to RPN, but often simple programs can be done simpler in RPL than in RPN - while complex programs can often be made more elegantly in RPL than in BASIC. This makes RPL a very serious candidate for the best programming method on a handled machine. I fully understand that some people do not like the 48SX because of its 'bulky' size (less than a TI-92, though...), but this criticism disappear when you consider emulation on a PocketPC, like I do... :-)

No flames - long live the 41CX and the 15C, and even the 71B - but also, long live the 28S and the 48SX ! :-)

Cheers,

Vincent


#8

Hi, Vincent:

I really think your interesting post deserves a thorough answer. No flames, of course, but some points need to be made, I'll write my remarks interspersed with your original post:

"The commun opinion is that RPN is simple, pure, and requires less keystrokes, while RPL would a bulky, intimidating, overkill and clumsly full-blown object-oriented language, a la C++. Valentin, for instance (Hi Valentin :-) ), advocates the
small-size 15C for daily computations, and the Sharp BASIC computers (or the 71B) for more complex programming, while hinting that RPL is not
appealing..."

(Hi Vincent :-) Yes, you absolutely nailed my current opinion on the subject, and may I say you've probably nailed the "common opinion" as well.

"it could be argued that <PGM> 'LBL PROG, ..., RTN' <PGM> on a 41 takes even more keystrokes than <<...>> 'PROG' STO on the 28/48 ;)"

Well, not counting the name "PROG" (which is arbitrary and could equally well be "PROGRAMA" or "P"), you just can assign LBL and RTN to keys in the 41 and enter said code snippet in just 4 keypresses, namely [PRGM][LBL][RTN][PRGM].
Anyway I don't think this kind of example is very much relevant.


"Which of the following is more concise and/or intuitive for newcommers to programming:
- 41: 'RCL 00,1000,/,1.00001 +, STO 01, LBL 00, ..., ISZ 01, GTO 00'
or:
- 28/48: '1 A FOR I ... NEXT' ?"

Well, actually the 41C loop would begin

  RCL 00, E3, /, 1, +, STO 01, 

i.e, you need only two keypresses (E3) instead of four to enter the constant '1000', plus you need just one keypress (1) to enter the initial value and increment value for the variable, instead of seven (1.00001). Also, depending on the loop's contents, you might well be able to use a stack register for the counter (LASTX, for instance) and avoid the STO 01 altogether. As I once said, and please take no offence as none is meant, this is a typical example of someone writing code in some program language ineptly, then pointing to the defficiencies in the code he just wrote as being inherent in the language.
This is not the exact case here, but close.

Also, your RPL code ('1 A FOR I ... NEXT' ) looks far too weird and twisted compared to the natural HP-71B's

      FOR I=1 TO A ... NEXT I
"for variable i equals one to value of A" seems far more sensible than "one value of A for variable i", don't you think ? Also, why is it "1 A FOR I" ? Wouldn't it be more consistent with RPL to have instead "1 A I FOR" or some similar permutation, with the "FOR" being last ?


"Doing a IF-THEN-ELSE alternative with GTOs is quite tricky and inelegant in RPN. Something like:
'X>0?,GTO 01, GTO 02, LBL 03,...,LBL 01,...,GTO 03, LBL 02,..., GTO 03'.
To be compared with:
'IF X 0 > THEN... ELSE...END'."

First, if you've got several actions to perform depending on a comparison, or else two very different set of actions, much cleaner code would be:

      X>0 ?            LBL "DOTHIS"    LBL "DOTHAT"
GTO "DOTHIS" ... ...
X<0 ? ... ...
GTO "DOTHAT" GTO "GO-ON" GTO "GO-ON"
LBL "GO-ON"
...
I think this is pretty clean and easily understandable. Even cleaner would be to use a flag to record the test result, then use XEQ instead of GTO, thus avoiding the LBL "GO-ON" and in fact all four GTO's altogether.

Again, your RPL "IF X 0 > THEN... ELSE...END'." looks unnnatural and contrived when compared to HP-71B's:

     IF X>0 THEN ... ELSE ...
If in doubt, just read loud and clear both statements as they're written.

"it is still quite possible to emulate registers on the 28/48, and corresponding STO/RCL functions, with an
array [...] The ability to use local variables is a HUGE plus of RPL - especially with recursive altgorithms."

By the same token, the RPN calculator named HP42S can have both numbered registers AND named variables and you're free to use the ones that best suit your problem. Which is more, you can handle all numbered registers en masse as a named variable (REGS), which allows you to keep several distinct copies at any given time, thus easily achieving a powerful kind of 'local variables' mechanism.

Also, in the HP-71B you've got scalar and array variables, of numeric and string types, and in several precisions, including INTEGER, REAL, SHORT, COMPLEX, and COMPLEX SHORT,
easy to use as pie, not to mention fully recursive subprograms and user-defined functions with explicit parameter passing by both value and reference. Try that with a stack-based machine, where you are frequently at a total loss about the required stack contents before calling a routine and the resulting stack contents at termination, even if it can terminate several ways, some of them abnormal and/or unforeseen.


I miss the lack of replication of the 'T' register; I also hate it to have to 'DUP' every argument to
be re-used, since RPL fanatically removes arguments from the stack systematically."

Not to mention the fact that the stack might get empty and thus give you a nice error message as you simply press the [+] key. Agreed, it is an error trying to add two values that aren't there, but all the same the very fact that the stack can hold less than four entries down to no entry at all gets very easily on the nerves of anyone who's grown fond of the comfy 4-levels-at-all-times-no-matter-what RPN stack.

The fact that an RPN stack had 4 levels was one of the accepted facts of life to HP lovers, just as death, taxes, etc. You don't remove such "facts" without nasty consequences.


"never have
to worry about loosing the older results and store then into registers back and forth..."

Seasoned 4-level RPN stack uses *never* lose older results in the stack, is something automatic. It's just like never falling from your bed when you're asleep, no matter how much your roll left and right. You don't consciously think about it, it just never happens by sheer acquired reflexes. Same with "losing items" from the four level stack. After a while you just don't.

"And being able to see 4 objects at a glance, and scroll the view
for the rest, is extremely handy."

In such a small screen, I find it actually somewhat confusing, distracting. I'd rather have a look at the result I want as the single item on the display, than be forced to also see previous results or unneeded garbage left out in the upper levels by previous, not-relevant-now calculations.
It is a well-known fact that RPL users find themselves clearing the stack at all times, to remove unneeded leftovers, while a veteran RPN user needs to clear the 4-level stack next to never. Anyway, that's just my own, personal feeling on the matter.

"Next to
the 28/48, this only satisfactory calculators in that sense are the 18C/19B/19BII familty (even though inserting characters is clumsy...)"

I think you forgot to mention the HP-71B here, unless you're restricting your comparisons to Goliath vs. David, i.e., mighty RPL vs. humble RPN. If Titans are allowed to enter the fray, HP-71B direct evaluation of algebraic expressions and further, its CALC mode, are a worthy opponent, don't you think ?

"I think it is not a coincidence if BASIC computers more or less disappeared when RPL came."

You must be joking here, no doubt. Do you really think RPL was noticed at all by much of the handheld computing community when it appeared ? Think again ... There's been hundreds of BASIC handhelds sold by the likes of CASIO, SHARP, etc, for each and every RPL machine sold by HP.

"Manipulation of Matrixes,
Lists, even dynamic creation of programs, is extremely concise and elegant in RPL, while it requires calls to external functions in BASIC."

In HP-71B's BASIC:

  MAT A=SYS(B,C)  'solve M systems of N equations, real or complex, at once
MAT A=FOUR(B) 'compute the Fourier/Inverse Fourier transform
MAT A=TRN(B)*C 'matrix-multiply the transpose of B by C
MAT A=PROOT(B) 'find all real/complex roots of polynomial B

Are these examples inelegant to you ? And as for 'external', I've told a number of times why the Matrix ROM (ROM 2) was taken apart from mainframe ROMs (ROM 0 and 1) after being there for a number of reasons. It was an integral part of the machine in the original design, not an external ROM, and as far as I'm concerned, it still is.

"My conclusion is: RPN is great. RPL -does- have drawbacks compared to RPN, but often simple programs can be done simpler in RPL than in
RPN - while complex programs can often be made more elegantly in RPL than in BASIC. This makes RPL a very serious candidate for the best
programming method on a handled machine."

That's your conclusion and that's your opinion, which I beg to difer. Each machine and each language is better suited for some tasks than it is for others, and while RPL has its merits it also has horrible faults that most definitely make it unsuitable for many a purpose and for many a person.

I think this was really a case of HP disregarding the old but essential American proverb: "If it ain't broke, don't fix it !". I don't think RPN was broken, at all. The HP42S is a living, breathing example of what HP could have done with RPN: expand it while preserving its very soul. HP42S' RPN is awesome, what with its powerful types such as matrices and complex numbers perfectly integrated in the whole RPN paradigm, its named variables alongside numbered registers, its menu system.

I'm sure I'm not alone if I say that people would've given an arm and a leg for a 42SX, with furtherly enhanced classic RPN, plus full I/O and a faster CPU, preferring it over most any RPL model. RPN wasn't broken. But HP did try to fix it, regardless. And RPL was the result, deeply unsatisfying for many.

As for me, my stand is well known. I use an HP-15C for everyday normal chores, an HP-71B in emulated form for really complex math-related computations, and a SHARP PC-1360 when a lot of data and results are needed and thus a large, perfectly readable screen, QWERTY keyboard, plus computing muscle are a must. For instance, for the equivalent of filling up IRS forms: having your data in sensibly named array variables and being able to see lots of info on the screen, while comfortably resting in your bubble bath is awesome. :-)

Long live to most any HP calculators and a lot of SHARP's.

Best regards from V.


#9

Hi, Valentin

Thanks a lot for your detailed and constructive answer - much appreciated ! :-) I also want to adress some of your points:

"Well, actually the 41C loop would begin

RCL 00, E3, /, 1, +, STO 01,

i.e, you need only two keypresses (E3) instead of four to enter the constant '1000', plus you need just one keypress (1) to enter the initial value and increment value for the variable, instead of seven (1.00001). Also, depending on the loop's contents, you might well be able to use a stack register for the counter (LASTX, for instance) and avoid the STO 01 altogether. As I once said, and please take no offence as none is meant, this is a typical example of someone writing code in some program language ineptly, then pointing to the defficiencies in the code he just wrote as being inherent in the language. This is not the exact case here, but close"

I agree with you that my code was not optimized. You can always hunt for keystroke-cutting when you know the machine well (in fact, this was a common game during the days of the good old Casio fx-4000P, when saving one program step meant a lot). I don't deny that. But this is more a "geek" activity than anything else :-) It is still less intuitive than a good FOR loop... :-)

"Also, your RPL code ('1 A FOR I ... NEXT' ) looks far too weird and twisted compared to the natural HP-71B's

FOR I=1 TO A ... NEXT I

"for variable i equals one to value of A" seems far more sensible than "one value of A for variable i", don't you think ? Also, why is it "1 A FOR I" ? Wouldn't it be more consistent with RPL to have instead "1 A I FOR" or some similar permutation, with the "FOR" being last ? "

I can agree with you on this - but I don't think it is a big deal once you are used to it. The same reproach could be addressed to RPN: why 'STO 00' instead of '00 STO' ? Just because that's the way the instructions are. Matter of conventions (and not disturbing the stack, in this case).

"First, if you've got several actions to perform depending on a comparison, or else two very different set of actions, much cleaner code would be:

X>0 ? LBL "DOTHIS" LBL "DOTHAT"
GTO "DOTHIS" ... ...
X<0 ? ... ...
GTO "DOTHAT" GTO "GO-ON" GTO "GO-ON"
LBL "GO-ON"
...

I think this is pretty clean and easily understandable. Even cleaner would be to use a flag to record the test result, then use XEQ instead of GTO, thus avoiding the LBL "GO-ON" and in fact all four GTO's altogether"

Sure, but this implies redundant tests - and again are less intuitive than the good old 'IF THEN ELSE'.. :-)

"By the same token, the RPN calculator named HP42S can have both numbered registers AND named variables and you're free to use the ones that best suit your problem. Which is more, you can handle all numbered registers en masse as a named variable (REGS), which allows you to keep several distinct copies at any given time, thus easily achieving a powerful kind of 'local variables' mechanism."

Sure - you can save the registers at each function calls. That's what I used to do on my Amiga when I was enjoying Motorola 68K assembly programming. This works, but this is a low-level mechanism for computer-litterate people - a person with no programming background will understand much easier the -> << >> local variable mechanism, IMHO.


"Also, in the HP-71B you've got scalar and array variables, of numeric and string types, and in several precisions, including INTEGER, REAL, SHORT, COMPLEX, and COMPLEX SHORT, easy to use as pie, not to mention fully recursive subprograms and user-defined functions with explicit parameter passing by both value and reference. Try that with a stack-based machine, where you are frequently at a total loss about the required stack contents before calling a routine and the resulting stack contents at termination, even if it can terminate several ways, some of them abnormal and/or unforeseen."

You have a point here regarding the ease of passing parameters. Well, what can I say - just that once you are used to the stack, you actually come to love it - because everything you need is here...


"Not to mention the fact that the stack might get empty and thus give you a nice error message as you simply press the [+] key. Agreed, it is an error trying to add two values that aren't there, but all the same the very fact that the stack can hold less than four entries down to no entry at all gets very easily on the nerves of anyone who's grown fond of the comfy 4-levels-at-all-times-no-matter-what RPN stack."

Well, I consider that you should know what is on your stack before calling a function - I would rather have an error than believing that everything is fine ! It never bothered me - matter of taste...

"Seasoned 4-level RPN stack uses *never* lose older results in the stack, is something automatic. It's just like never falling from your bed when you're asleep, no matter how much your roll left and right. You don't consciously think about it, it just never happens by sheer acquired reflexes. Same with "losing items" from the four level stack. After a while you just don't."

.. and then, when you try to code, let's say a TVM equation, if you find out that you don't have enough levels to perform the computation, what do you do ? You use registers are temporary variable... which turns the simple coding of an equation into complex programming. As much as I love the 42S (and I really do - this is one of the finest machines ever made), I really think that the lack of equations is one of its biggest drawbacks. I am sure you agree, as you once said that RPN was not all all the way to go to code complex equations. The 32SII does have equations, but is such a weaker calculator than the 42S in almost every single area... What the 42S would have needed is an equation solver a la 17BII/27S. Then, I'll be happy with a 4-level stack...

"I think you forgot to mention the HP-71B here, unless you're restricting your comparisons to Goliath vs. David, i.e., mighty RPL vs. humble RPN. If Titans are allowed to enter the fray, HP-71B direct evaluation of algebraic expressions and further, its CALC mode, are a worthy opponent, don't you think ?"

Fair enough, Valentin. I did not mean to remove the 71B from this, and I actually do like its algebraic mode. Just to make it clear, the 71B was a fantastic machine, the first saturn-based one, with support for IEEE math, and I do not mean to dismiss it !

"You must be joking here, no doubt. Do you really think RPL was noticed at all by much of the handheld computing community when it appeared ? Think again ... There's been hundreds of BASIC handhelds sold by the likes of CASIO, SHARP, etc, for each and every RPL machine sold by HP".

Well, to be honest, when I looked at the various BASIC computers made on www.rskey.org, I noticed that most of them were made before 1990, i.e. before the introduction of the HP-48SX. There are a few exceptions - I own a nice PB-2000C, "C" programmable from Casio, made in 1993. But the *stars* (among all of which you mentionned) have been made in the 80s. Even the Casio fx-880P, which I own, which is one of the most recent Casios, was done in 1988 or so, if I'm not wrong. So I got the feeling that the HP-48SX kind of killed the BASIC computers - if not in the heart of their users, at least in the wallets of the vendors... :-)

"Manipulation of Matrixes, Lists, even dynamic creation of programs, is extremely concise and elegant in RPL, while it requires calls to external functions in BASIC."

"In HP-71B's BASIC:

MAT A=SYS(B,C) 'solve M systems of N equations, real or complex, at once
MAT A=FOUR(B) 'compute the Fourier/Inverse Fourier transform
MAT A=TRN(B)*C 'matrix-multiply the transpose of B by C
MAT A=PROOT(B) 'find all real/complex roots of polynomial B

Are these examples inelegant to you ?"

No, this is quite fine; I just love the multi-type stack of the 28/48, but I have to admit that the above example is quite powerful programming.


"I think this was really a case of HP disregarding the old but essential American proverb: "If it ain't broke, don't fix it !". I don't think RPN was broken, at all. The HP42S is a living, breathing example of what HP could have done with RPN: expand it while preserving its very soul. HP42S' RPN is awesome, what with its powerful types such as matrices and complex numbers perfectly integrated in the whole RPN paradigm, its named variables alongside numbered registers, its menu system."

Agreed fully - if not again for the lack of algebraic equations, which is sorely missed.

"As for me, my stand is well known. I use an HP-15C for everyday normal chores, an HP-71B in emulated form for really complex math-related computations, and a SHARP PC-1360 when a lot of data and results are needed and thus a large, perfectly readable screen, QWERTY keyboard, plus computing muscle are a must. For instance, for the equivalent of filling up IRS forms: having your data in sensibly named array variables and being able to see lots of info on the screen, while comfortably resting in your bubble bath is awesome. :-)"

Actually, I did a lot of finance this year, and sadly, I have to confess that the most useful tool for me was... Excel !! The ability to see all the numbers at once on a page, linked with cells, has revolutionarized computing. If I don't need pocketability, Excel is now my computation platform of choice. Sadly (I hate Micro$oft...).

"Long live to most any HP calculators and a lot of SHARP's"

Not to forget Casio, too often contempted, while it came with its awsome fx-602P (a good, faster rival to the HP-41), its marvelous fx-4000P (the first pocket calculator with both formulas and programming), and the incredible fx-7000G (first graphic calculator ever... in 1985 !!).

Thanks again and cheers,

Vincent


#10

Hi again, Vincent:

A pleasure to read your friendly reply, some very minor remarks:

"The same reproach could be addressed to RPN: why
'STO 00' instead of '00 STO' ? Just because that's the way the instructions are. Matter of conventions (and not disturbing the stack, in this case)."

I don't concur. Classic RPN programming is historically based upon keystroke programming, where the user simply enters into program memory the very same keys he would use manually to perform a calculation. Now, since the earliest non-programmable RPN calculators, you would press:

      [5] [STO] [0]
to store the value 5 into storage register 0, so this must lead to the program steps:
        5
STO 00
if the very valuable 'keystroke programming' paradigm has to be preserved. There's really no choice unless you abandon it altogether. Also, there's the fact that in the earlier HP calculators, memory was extremely limited, with just a handful of storage registers available, so the stack had to do double duty both as a calculating stack where arguments were placed and results were returned, and also as a place to store intermediate results.

That being so, and being a 4-level stack, it's obvious you can't waste a valuable stack level by using one to place the address of the storage register, like this:

        [5] [ENTER] [0] [STO]
as it would be awfully awkward for the earlier calculators (and HP already had a hot potato in their hands trying to sell RPN as it was), would need a full stack level losing "T" just to place the 0, and would need an extra keystroke [ENTER] to separate both arguments. This is inefficient in the extreme, and HP-engineers' loving mothers didn't raise any fools.

On the other hand, RPL was designed from scratch, with no regards to legacy machines or compatibility, and they chose the 5, 0, STO way for the sake of consistency. Fine, except that consistency is broken by the FOR construct and others, as FOR would have to be the very last statement, taking three arguments or four arguments, namely the initial value, final value, step value, and the variable to use for looping, placed on the stack prior to the FOR. It does not, and this detracts from consistency big time, methinks.


"Sure, but this implies redundant tests"

Not at all, in my example. My code snippet is three-pronged:
it does "DOTHIS" if X is greater than 0, it does "DOTHAT" if X is less than 0, and it does nothing is X=0 ! Not only there's no redundancy at all, but further the X=0? test is actually removed ! :-)

"once you are used to the stack, you actually
come to love it - because everything you need is here..."

Yes, and regrettably, a much larger lot of things that you don't need but that waste RAM and slow down the processing unless you remember to get rid of them constantly.

On the other hand, Classic RPN has no problem with this, the 4-level stack is fixed for all time and takes no extra memory whatever, plus you never have more than 4 items you don't need in it, which nevertheless will automatically get lost over the top the next time you enter the data you actually need, no cleaning required, no RAM wasted, no slowing down.

"if you find out that you don't have enough levels to perform the computation,
what do you do ? You use registers are temporary variable... which turns the simple coding of an equation into complex programming."

Keystroke programming can never be complex programming, because that would imply that doing that computation in the calculator by hand using RPN is complex on itself, which it normally isn't. The fact that you need to do a STO 00 or RCL 00 from time to time (rarely, actually) does not detract from simplicity at all, and certainly is much preferable to the bunch of DROP, DUP, ROT, or whatever you constantly need to do in RPL to get your arguments when and where you need them. I'd rather do a simple STO/RCL than a complicated sequence of stack commands to duplicate-save-up-there and recall-from-that-level-whatever this piece of data.

Not to mention the very important point that it's much easier to keep a consistent mental image of 4 fixed levels, at all times, than doing the same with a much larger stack where all kind of things are constantly going in and out and changing positions like mad. Seasoned Classic RPN users are never at a loss with regard with what they have on the stack and in which levels it resides, so handling data is fast and automatic, a simple X<>Y or RDOWN is all you usually need.

"So I got the feeling that the HP-48SX kind of killed the BASIC computers"

I don't think RPL had any impact at all on the BASIC handhelds' demise, I really think it's just a mere coincidence if it actually happened at the same time, which I don't know. Certainly, RPL's appeal has always been very limited for the vast majority of handheld users, just as Classic RPN did.

"Not to forget Casio [...] the incredible fx-7000G (first graphic calculator ever... in 1985 !!)."

Agreed. I own a Casio FX-7500G and it's one of the most incredible calculators you can own, namely:

  • Fully programmable, with loops, subroutines, separated program spaces, arrays, hyperbolics, whatever.
  • 4,214 bytes for programs & variables
  • Full graphics screen (96 x 64 pixels) and alphanumeric screen (8 rows x 16 characters) both at the same time, in separate logical planes (!) with a full complement of graphics functions and statements, including plotting
  • incredibly fast, faster than the earlier HP48 models, for example
  • foldable (! "clamshell") and extremely small, smaller than even an HP-15C !

This is, a delight to program and a delight to use. You could carry one on your shirt pocket and it would go unnoticed, so small is this machine.

For any of you interested in this awesome machine and its capabilities, you can have a look at its extraordinary manual, downloadable in English, PDF format, from here. It's well worth the read and will certainly help broaden your views.

Best regards from V.


#11

Hi again Valentin ;-)

Thanks for your very interesting reply. I can see where you are coming from, and I do agree about the 4-level stack simplicity. My goal was just to show that RPL is not that bad and can be efficient. Both systems have their merits - and BASIC certainly have some as well.

I would love to test the HP-71B in details, but the only thing I have is Emu71 under PocketDOS (or HP71X under Emu48)with the BASIC ROM. Do you know where I could find the MATH ROM ?

I'll just say that at least, RPL allows for algebraic expressions in ' ' when you need them, instead of DUP ROT etc. I am sure you will agree that this is sorely missed from the HP-15C/42S, and that even though 'STO 00' and 'RCL 00' are not too complex, they are no match to natural equation writing. The HP-42S multi-var solver is nice, but I prefer *by far* the 27S/17B/17BII/19B/19BII/95LX/100LX/200LX natural way (the 32SII does an attempt, but not that good, IMHO). But these calcs' programmability, although cute with the SUM and IF functions a la Excel, is kind of limited in terms of subroutines, inderect addressing, and indefinite loops.
The ideal RPN calc should merge the 42S and the 27S features (equations, clock) and add some I/OIs.

Think about it, aside from the 71B which is nice but bulky, and the 32SII which is not bulky but is very limited, the 28S is the smallest HP calc with BOTH structural programming AND formula programming AND a decent alpha keyboard, while being simpler than the 48/49. This is worth emulating on my Ipaq :-)

I know the FX-7500G, some friends had it in high-school. A truly cute device - really makes me wonder why HP users contempt Casio so much. I have more respect for Casio that for TI. TI, in my mind, only shined in 1977 with the TI-59 and its expansion ports; The TI-92 is overelly bulky to be a calculator, and the TI-89, although nice, came late: it is easy to develop powerful algrebra software in C on a M68K ! As for TI other graphing models, there ware mere copies of Casio - who invented the graphic calculator long ago (1985).

Thanks again and cheers,

Vincent


#12

Best regards from V.

#13

Valentin,

Thanks for contributing to this thread. As usual, much comes to light.


I thought I would mention a few things in this RPL regard. A positive with RPL is the ability to deal with algebraic objects within a reverse-polish stack-based program. By usding single quotes, you can put an algebraic right in. I have found this to be quite useful at times.

But I agree that the whole RPL interface, and the programming method, is so different for all but simple things, that it can be a real brain stretcher to convert from either RPN or BASIC to RPL programming. It is worth noting that if you spend time over at Comp.sys.hp48, the overwhelming majority of contributors are not familiar with RPN style machines, though there are some notable and esteemed exceptions including Wayne Brown, and Raul.


It is also interesting to note that Jean-Yves A. stated on C.S.hp48 that he hated the 42s and could not understand why anyone eould want one---apparently there are some very strong views out there about what a calculator should be! More to the point, is that there are different philosophies.

I have personally found it difficult to convert wholeheartedly over to the 48. I see and appreciate many of the features, and yet I often find that in actual practice, using it is slower and more cumbersome than doing something more by hand. A perfect example is the equation solving system, which is soooo slow that you can do the whole process faster on a 15c, including writing a program and solving for any variable. I have been very disappointed by that feature, and find that the 17bii is so superior for repetitive use of an equation that it makes absolutely no sense why I cannot do that on the 48. (Note that Ron Ross answered a post regarding this which states that in fact I could do this on the 48, but I have not yet figured that out).


Basically, there is a huge amount of overhead to learn how to use RPL. This is its biggest flaw. Yet I wish I could make better use of it, as it seems to have so much potential. Yet if I am to spend time learning something, I would rather that be how to use ALGOR or Solidworks or ProSurf or Excel or Access better etc---as the these are the tools which I really use.

The hp RPN keystroke programming has been a tool which, honestly, if I didn't already know it from the 1980's, I probably would have zero interest in learning. And RPL, well, I only got "sucked in" by my calculator collecting interest and general curiosity.


Best regards,


Bill

#14

RPN, RPL and BASIC ... they are all the same - I have all of them on HP-48GX :-)

BTW, Valentin, have you received that XY-99Z ROM I sent you few weeks ago? Does it work?

Regards.


#15

How do you have BASIC on a HP48gx?

.


#16

How do you have BASIC on a HP48gx?

http://www.geocities.com/hrastprogrammer/HP71X/


#17

Thanks, thats an interesting site. I looked into some of your emulators for the 49g plus, and found

http://www.geocities.com/hrastprogrammer/hp49gp.htm

"Port1 has been cut down to only 128K on HP-49G+ (very, very bad HP decision)"

Just curious, do people actually use port 1 for anything (besides your emulators)? I thought that the flash in port 2 would be enough. I prefer flash, as it is much more reliable.

At any rate, if you were willing to go into ARM programming, most of that 128kb is still free.

From Jean-Yves - "Then look at it this way... When ARM native application will finally be possible they will have access to 128KB of RAM on their own without eating any memory of the 49G original memory!"

Also, please see http://hpgcc.sourceforge.net - "the HP49g+ has an extra 'hidden' 100kb free RAM built in"

--

"Handling hexadecimal values in decimal mode of the CPU (after SETDEC) has been totally screwed up on Saturn/ARM causing some parts of the HP-71B ROM code to malfunction"...."On the real Saturn it gives #C in C(S) while on the Saturn/ARM it gives #6 in C(S)"

Interesting. Were these features of the Saturn documented? If not, you can't reasonably expect undocumented features to work in new versions. If so, this was very sloppy.

thanks,

.


#18

Just curious, do people actually use port 1 for anything (besides your emulators)? I thought that the flash in port 2 would be enough. I prefer flash, as it is much more reliable.

Please understand that I really don't want to waste my time arguing whether it is better to have 128K or 256K of Port1 on HP-49G+. I even don't want to discuss about HP-49G+ at all here. Opinions expressed on my page are my personal opinions collected during the development of my emulators on HP-49G+ but these are also facts which everyone can check and confirm.

But, I will try to answer your question from the technical side. You must know how memory mapping on Saturn works in order to understand the problem. For my emulators to work properly, I must have the ability to map (using the CONFIG CPU instruction) a single 128K port page to the absolute address #00000 in the Saturn address space for the following reasons:

(1) To map the HP-42S or HP-71B ROM to the address #00000 because ROM (obviously) must be on the right place.

(2) To intercept the interrupts because interrupt handler on the Saturn CPU must be located on the address #0000F.

For various configurations of my emulators there is also a need for mapping these pages to addresses #40000, #80000 and #C0000. The only pages on HP-49G which fully satisfy this requirements are 128K pages from Port1. Port2 pages can be mapped to #00000 address but (simplified) every Flash ROM page has one 256 byte header at the beginning so, if I map it to #00000, the actual contents of the ROM will start from #00200 and I cannot store any of my code bellow #00200. I don't know about Port3 on HP-49G+ but I assume the situation is even worse because it is organized in files. On HP-48GX, you can map any 128K page from ports 1..31 to the #00000, #40000, #80000 and #C0000 addresses.

Again, I don't want to argue about HP-49G+ ... if it is fine for you to have 128K of Port1 then it is fine for me, too.

At any rate, if you were willing to go into ARM programming, most of that 128kb is still free.

I am not willing to go into ARM programming because I am not interested in ARM programming and because I want to preserve the 100% compatibility of my emulators with HP-48GX/49G (based on the real, true Saturn). If you want to go into it, then go into it ...

Interesting. Were these features of the Saturn documented? If not, you can't reasonably expect undocumented features to work in new versions. If so, this was very sloppy.

You're right. I would be very unreasonable to expect something like that. HP programmers used these features in HP-71B so they should have been documented somehow inside HP because Saturn works this way from the very beginning until HP-49G. And Emu48 emulator supports these undocumented features, too. But to expect that they will be preserved on HP-49G+? No ...

Regards.


#19

"Please understand that I really don't want to waste my time arguing whether it is better to have 128K or 256K of Port1 on HP-49G+. I even don't want to discuss about HP-49G+ at all here."

Sure. I was just interested in the technical reasons. Thank you very much for the explanation, it's appreciated.

.


#20

Thank you very much for the explanation, it's appreciated.

You are welcome :-)

#21

Hi, Hrastprogrammer !

Über-Hrastprogrammer wrote:

"RPN, RPL and BASIC ... they are all the same - I have all of them on HP-48GX :-)"


Yes, indeed. I'm still amazed no end at how efficiently and accurately you managed to code those wonderful emulators. Matter of fact, they're one of the mightiest appeals for owning an HP48GX, and it's certainly worthwhile getting one if only to run them all on the fly.

Even for someone who doesn't specially like 48/49 models, the fact that you can have full-featured classic RPN (i.e.: HP42), full featured HP BASIC (HP-71B), plus RPL if you ever feel attracted to it, all in a single, portable machine with a real keyboard, at such speeds as your emulators run even if the underlying hardware is but a 'mere calculator', is nothing sort of miraculous ! A real must.


"BTW, Valentin, have you received that XY-99Z ROM I sent you few weeks ago? Does it work?"

Yes, yes, it works fine, thank you very much !!. Excuse me for not answering sooner, but as soon as I got it I immediately went out to work on entering, finishing, testing and debuging my looooooong program for it (which takes a sizable amount of time), and intended to send you the finished article-program attached to my reply, which is still two days from finishing.
I hope you'll enjoy it and might consider running it yourself in your hardware, time permitting.

By the way, you have a small typo here. Flamagas Magiclick's ROM I is actually model XY-99ZT, not XY-99Z. Seems you lost "T" out of the top. Damned 4-level stack, where's RPL when one needs it ? :-)

Best regards from V.


#22

By the way, you have a small typo here. Flamagas Magiclick's ROM I is actually model XY-99ZT, not XY-99Z. Seems you lost "T" out of the top. Damned 4-level stack, where's RPL when one needs it ? :-)

I am very sorry, Valentin ... it seems that I have sent you an older version of the ROM. AFAIK, there isn't a lot of problems with this particular version, except perhaps a little bug: it will clear everything on your machine on, I think, october 1st, 15:00 CET ... ouch :-)

#23

Valentin --

An excellent and thorough response, as usual. I don't know how you can deliver such quality "short essays" in a reasonable amount of time, particularly in your "secondary" (tertiary?) language.

The following stated my feeling on multi-line displays:

Quote:
In such a small screen, I find it actually somewhat confusing, distracting. I'd rather have a look at the result I want as the single item on the display, than be forced to also see previous results or unneeded garbage left out in the upper levels by previous, not-relevant-now (no-longer-relevant) calculations.

Also about the "42SX" vs the 48S/SX:

I think the 48-series should have been a "super 42" implemented with true RPN (with perhaps a larger user-definable stack), and the equation editor of the 27S and 17B/BII. If a programming paradigm more advanced than RPN-keystroke was needed, the HP-71B BASIC would have been a better choice. Heck, these advanced features were already available concurrently (or nearly so) with the introduction of the original 42S.

The 28S was worth developing and releasing, I think, just to get the 28C right. The 28's RPL system, preserved for those who liked it (disciples of object-oriented programming, for example), could have been evaluated, like Prohibition, as a failed "Noble Experiment".

Sure, the 48-series has a large "fan club", but is its popularity among these users based upon RPL or upon the advanced functions, storage, expandability and comm capabilities of the calculator? One has to admit, not everything offered by the 48S was available in either the 41CX, the 28S, or the 42S.

-- KS


#24

Hi, Karl:

Karl posted:

"An excellent and thorough response, as usual. I don't know how you can deliver such quality "short essays" in a reasonable amount of time,
particularly in your "secondary" (tertiary?) language."

Thank you very much for your kind words and appreciation, I must say I also get considerable enjoyment from your postings, always interesting and well reasoned.

As for the "reasonable amount of time", you just can't imagine the extreme speed at which they get written, because I usually have to post my answers in the very few minutes I stay at my working desk daily, so please excuse any typos or misconstructed idioms such as your pointing out my hasty "not-relevant-now" for the correct "no-longer-relevant". I knew the proper idiom but as I was writing in a real hurry (just like right now!) I, absentmindedly, translated the equivalent Spanish idiom literally, sorry.


"I think the 48-series should have been a "super 42" implemented with true RPN (with perhaps a larger user-definable stack), and the equation
editor of the 27S and 17B/BII."

I couldn't agree more. What I'm going to say right now might be construed as 'heretic' by some HP fans, but I think I must tell you (and everyone else reading this) what I honestly think on this subject, which goes like this:

Mr. William Wickes, of synthetic programming fame among 41C users, did a great disservice to the HP RPN community when, after joining HP, he went on to develop RPL and its first hardware incarnation, the HP28C. Certainly, I can recognize its many good points and the boldness of breaking nearly completely with tradition and compatibility by issuing a totally different paradigm, affecting to all calculator's functionalities, from pure usability for on-the-fly calculations, to programming, and even the hardware itself, all of this when all HP RPN users, most definitely 41C users, were expecting just a much improved, faster, powerful "42C" machine. It was a real shock and, definitely, most unexpected and least of all from a man who had distinguished himself in further expanding the in-built 41C's capabilities to unimagined heights, which got him universal recognition plus a grand-style entry to the ranks of HP's staff.

Was it for good ? Well, I'm sure all 48/49 lovers will certainly agree that this was for the best, and resulted in the most powerful, most capable calculators the world has seen. But while this is certainly debatable right now (I understand that TI has models that equal or even surpass the 48/49), there's no way to know what could have happened at the time if Mr. Wickes had concentrated his considerable skills in launching the much desired HP-42C.

Though this enters the realm of fiction history, it seems plausible that it would have featured a Saturn CPU, a multi-line dot matrix display, lots of RAM, and full I/O,
plus extensions to classic RPN to handle matrices, complex numbers, named variables, and more. In other words, it would have been an non-crippled HP42S years ahead of its time. It would have united HP fans even more, and it would have made the absolute best calculator of its time, bar none. It would have made it exceedingly difficult for other manufacturers to cope with. Surely, it could have changed calculator history dramatically.

Instead of that, HP fans found themselves utterly shocked, with a calculator using a non-compatible language and having even less real RAM than the 41C had, with no I/O, with rather poor documentation, which they were supposed to like, and root for, and buy in vast quantities, even though it was outrageously expensive. Many tried to like it, even forced themselves to like it, and some even succeeded up to a point.

But many did not. While the HP-41C was an unmitigated success, selling in the millions, and every HP fan's wet dream, the RPL machines actually created an schism, sort of. Instead of being a monolithic group of RPN fans versus algebraic, you then had Classic RPN fans on the one side, versus RPL fans on the other, and both groups were highly immiscible, to the point that there was no way most RPN users would use an RPL machine instead, and mostly vice versa. You had two camps were previously there was but one.

I feel that this sad state of affairs did play a very important role in ending HP calculator's supremacy. If non-HP fans were difficult to convert to RPN, converting them to RPL was next to impossible. Not having a real successor to the 41C meant that other makes went on to get the torch instead and reign supreme. The ultra-powerful 42C we all rightly expected was never to be, and even a lame attempt by HP releasing the 42S was utterly emasculated by removing all I/O and other important features, lest it would lower sales of their flagship RPL models. Even the meager graphical features the 42S sports were crossed out as well and wouldn't be there were it not for the fact that the programmer in charge of them worked for free in his own time to finish them at all costs. Even then, HP did not see fit to include their full description and capabilities in the very Owner's Handbook, to the point that their most powerful capabilities were left undocumented in the manual the user got with the machine.
Even so, the HP42S excels as one of the best RPN calculators ever, so who knows what the HP-42C we all rightly deserved and rightly expected would have been if left to happen.

The sad conclusion is that, if nothing else, RPL machines brought out division among HP fans and stagnation in the calculator race for an extended period, so ultimately resulting in HP losing it big time. "And if a house be divided against itself, that house cannot stand" (Mark 3:25).

Was it worth it ?

I don't think so.

Have a nice weekend and best regards from V.


#25

Hey Valentin :-)

Hopefully I am not that a RPL-fanatic, or, given the religious tone of your posting, I would declare that you should burn in the flames of hell for Heresy :-))

On a more serious note, that's a bit harsh for the HP-28C, which was arguably the most innovative device in History, altough the pathetic RAM and the lack of I/O seriously limited its power...

Well, I suggest a Concile to re-unite our Church, where both 41 and 48 lovers will shake hands, acknowledge their respective merit, and sware to God (whichever they pray to) to united until the Evil (TI) is completely defeated ;)

Cheers and have a nice week-end :)

Vincent

#26

I couldn't agree more on the evolution of the RPN calculator. My first was an Hp15c, and then I bought both a 42s and a 48s. I never, ever loved that 48s. It was just to big, bulky and complex.

I switched over to the 42s from the 15c out of need for the extra features, alpha capabilities and a better solver. I always liked the size and layout of the 15c better, but I gave that up for the extras of the 42s.

Today I use a 48G on my desk at work, because of the units conversions I often need for unusual applications. Its like having a reference table at my fingertips. And it is a calculator. But it AINT no pocket calculator. I miss that, and if I take anything to a meeting, it is a pocket calculator. For a field calculator, I take either an Hp48G or a 20s. Why? because both are expendable, but I would rather take a 42s.

When I worked as a controls engineer and needed time constants or valve response times, I would haul the Hp48G along, but if the 42s had had a clock and units conversions, I would have taken that (when it was still replaceable).

Oh well, I try not to get into a rant about what could have or should have happened.

I have grown to appreciate RPL and it is/can be a very powerful way to program with. But it is also very criptic and hard to read any code quickly (Unless you are super proficient). But I wish Hp had released an expandable 42s with real I/O, units conversions 32K or more RAM and an RS-232 port like the 48 in the same form factor as the 42s.

Would it have robbed from the 48 line?? Probably, but the 48 line was/is still a market. Many looking for a portable calculator, may later buy the 48 to have all the toys (geeks often buy more than they need, I seem to have anyhow).

All this demand for the great Hp32s would be for the Hp42s if more had tasted this forbidden fruit. Granted, the display wasn't as clear as a 32s, but it was a two line model and smaller LCD pixal layout squeezed into the same window as the rest in this voyager line. Everywhere else the 42s ruled, it just wasn't as good as it could have been. And that is/has been my gripe with Hp for the last 10-15 years. They may make the best, but they could have even made better. However out of fear by the marketing group as to not compete with THEIR other calculators, they cut and withheld features.

The Hp41c was pushing the limits when it was introduced. Later, the Hp15c forced Hp to expand it capabilities to an Hp41cv and the HP41cx to keep its flagship out front. Noble endevers, each and everyone. The Hp28c broke from that mold and should have included 8K out of the box with a real serial interface (I won't go into other design issues). These are two points that are inexcusable. The voyagers were in the pipeline and the highend ones were getting 8K RAM. It wasn't until the 48 series that Hp corrected all the shortcomings of the Hp28 line (and now these beasts were no where near pocket sized).

Bill Hewlett envisioned a pocket calculator. This new line is a desk unit for most uses. The new evolution of the pocket calculator has deviated away from its primary use. If I need a computer, I have a computer on my desk.

The only reason my 48g lives on my desk is because it is a calculator, but it don't travel with me. A pocket calculator would.

#27

For me, comparing an HP-15C vs. an HP48/49 is very much akin to comparing this:

to this:

and I'll let you figure out which is which.

Best regards from V.


#28

It's a GPS watch from Casio, isn't it ?

Well Valentin, you know I used to work for a watch company.

I totally get your point : pure, great, classic way versus powerful do-everything device.

On my side I'm not a fan of Rolex at all, and I would have put a Patek Philippe, but point taken. I totally agree with you.


#29

Hi, Thibaut

Thibaut wrote:

"It's a GPS watch from Casio, isn't it ?"

Yes, it's a Casio Protrek GPS watch.

"Well Valentin, you know I used to work for a watch company. I totally get your point : pure, great, classic way versus powerful do-everything device."

Indeed, that was exactly my point: I'm not diminishing the Casio GPS watch (i.e. HP48/49) when compared with the Rolex (i.e. HP-15C), simply making it clear that they're far too different beasts to be compared meaningfully.

"On my side I'm not a fan of Rolex at all, and I would have put a Patek Philippe, but point taken. I totally agree with you."

Thank you very much. Wish I had the same familiarity with quality watches as you. :-)

Best regards from V.

#30

Of course, I see your point. You'd use one to look good, and the other to get some serious work done ;-)

.


#31

Quote:
Of course, I see your point. You'd use one to look good, and the other to get some serious work done ;-)

Did'nt I see a wink over there ?

I don't agree with you. While one offers plenty of advanced functions, the latter offers a few functions that will be daily fully used, on the contrary of the former. In addition, the former will offer the [italic]crème de la crème[italic] way of providing solutions.

Once again, time has stopped in 1986 under my opinion as far as calculators are concerned : there is a point where I'll be so partial that my argumentation won't be credible.


#32

If you are talking watches, then they are obviously for different purposes.

The Rolex looks great, and is very classy, and does one thing well. It'd look nice at a dinner party.

The GPS watch would look out of place at a party. It looks ugly. However if I was going somewhere remote, say hiking or mountain climbing, it could be very usedul. I wouldn't want to wear a rolex while hanging off the side of a cliff.

Of course, for most 'normal' people, both of these devices are overkill. If you just want to know the time, and don't care about looks, then a $20 digital watch will probably be just as good.

regards,

.


#33

Once again I have to disagree, with full respect of your opinions.

A Rolex watch (or better Patek Philippe) is not only great to stare at, but it's a reliable timepiece, where engineers have spent a lot of time to provide a accurate tool. A bit like how HP was the leader in calculators till the late eighties.

You might prefer such a watch when you're off-road as it will be more reliable and probably ess sensitive to hazards than your Casio GPS watch, which needs a lot of extra batteries in you pocket to work properly and longly.

#34

I like your comparison but the watch I would use for the 15C is this. . .

To me the Movado is the ultimate in elegant simplicity, while still being very functional. I will concede, though, that your Rolex example does show the durability better. I'm sure the Rolex is much more rugged than the Movado, probably more rugged than the 15C too.

Let's not forget this...

Bring Back the HP 15C

Chris W


#35

Well, I'd prefer

But it's all a matter of taste


#36

What a very very nice conversation!!
But there are nicer Pateks Thibaut !


#37

Agreed !


Possibly Related Threads…
Thread Author Replies Views Last Post
  Photo of my HP 15c | 15c LE DigiGal 2 1,524 10-12-2011, 12:34 PM
Last Post: DigiGal
  HP 15c LE vs HP-15C dimensions - BOTH ARE HUGE! Joerg Woerner 4 1,897 10-03-2011, 06:53 AM
Last Post: Jim Johnson
  HP 15C and 15C LE not the same dimensions? Derek 16 4,235 09-30-2011, 05:33 PM
Last Post: Derek
  Original 15C Keyboard Test Works With 15C LE!!! DigiGal 5 2,146 09-26-2011, 07:33 PM
Last Post: M. Joury
  How would a new HP 15c+ affect 15c market value? megarat 5 1,916 07-07-2010, 06:48 PM
Last Post: John Stark
  HP 15C: Any cure for an HP 15C with "snappy" keys? Jeff 2 1,155 09-05-2001, 08:33 PM
Last Post: Jim

Forum Jump: